官术网_书友最值得收藏!

2.2 課后習題詳解

1什么是前趨圖?為什么要引入前趨圖?

答:(1)前趨圖的定義

前趨圖是一個有向無循環(huán)圖,記為DAG,用于描述進程之間執(zhí)行的前后關(guān)系。圖中的每個結(jié)點可用于描述一個程序段或進程,乃至一條語句;結(jié)點間的有向邊則用于表示兩個結(jié)點之間存在的偏序或前趨關(guān)系。

(2)引入前趨圖的原因

引入前趨圖可以形象的表示進程之間的前后關(guān)系和順序,可以更好地描述程序的順序和并發(fā)執(zhí)行情況。

2試畫出下面四條語句的前趨圖:

S1:a=x+y;

S2:b=z+1;

S3:c=a-b;

S4:w=c+1;

答:S3語句中的操作涉及S1中的a和S2中的b,因此,S3的前趨是S1和S2;S4中的語句涉及S3中的c,因此,S4的前趨是S3,所以畫出前趨圖如圖2-6所示。

圖2-6 前趨圖

3為什么程序并發(fā)執(zhí)行會產(chǎn)生間斷性特征?

答:程序在并發(fā)執(zhí)行時,由于它們共享系統(tǒng)資源,以及為完成同一項任務(wù)而相互合作,致使在這些并發(fā)執(zhí)行的程序之間,形成了相互制約的關(guān)系,從而產(chǎn)生間斷性特征。簡而言之,相互制約將導(dǎo)致并發(fā)程序具有“執(zhí)行-暫停-執(zhí)行”這種間斷性的活動規(guī)律。

4程序并發(fā)執(zhí)行時為什么會失去封閉性和可再現(xiàn)性?

答:程序在并發(fā)執(zhí)行時,是多個程序共享系統(tǒng)中的各種資源,因而這些資源的狀態(tài)將由多個程序來改變,致使程序的運行失去了封閉性。這樣,某程序在執(zhí)行時,必然會受到其他程序的影響,而這也將導(dǎo)致其再失去可再現(xiàn)性,亦即程序經(jīng)過多次執(zhí)行后,雖然它們執(zhí)行時的環(huán)境和初始條件相同,但得到的結(jié)果卻各不相同。

5在操作系統(tǒng)中為什么要引入進程的概念?它會產(chǎn)生什么樣的影響?

答:(1)引入進程的原因

在多道程序環(huán)境下,程序的執(zhí)行屬于并發(fā)執(zhí)行,此時它們將失去其封閉性,并具有間斷性及不可再現(xiàn)性的特征。這決定了通常的程序是不能參與并發(fā)執(zhí)行的,因為程序執(zhí)行的結(jié)果是不可再現(xiàn)的。這樣,程序的運行也就失去了意義。為使程序能并發(fā)執(zhí)行,且為了對并發(fā)執(zhí)行的程序加以描述和控制,人們引入了“進程”的概念。

(2)引入進程的影響

進程的引入使程序的并發(fā)執(zhí)行得以實現(xiàn)。

6試從動態(tài)性、并發(fā)性和獨立性上比較進程和程序。

答:(1)動態(tài)性

進程的實質(zhì)是進程實體的一次執(zhí)行過程,因此,動態(tài)性是進程的最基本的特征。動態(tài)性還表現(xiàn)在:“它由創(chuàng)建而產(chǎn)生,由調(diào)度而執(zhí)行,由撤銷而消亡”。可見,進程實體有一定的生命期,而程序則只是一組有序指令的集合,并存放于某種介質(zhì)上,其本身并不具有運動的含義,因而是靜態(tài)的。

(2)并發(fā)性

這是指多個進程實體共同存于內(nèi)存中,且能在一段時間內(nèi)同時運行。并發(fā)性是進程的重要特征,同時也成為OS的重要特征。引入進程的目的也正是為了使其進程實體能和其他進程實體并發(fā)執(zhí)行;而程序(沒有建立PCB)是不能并發(fā)執(zhí)行的。

(3)獨立性

在傳統(tǒng)的OS中,進程是一個能獨立運行、獨立分配資源和獨立接受調(diào)度的基本單位,具有高度的獨立性。但凡未建立PCB的程序都不能作為一個獨立的單位參與運行。

7試說明PCB的作用具體表現(xiàn)在哪幾個方面,為什么說PCB是進程存在的唯一標識?

答:(1)PCB作用的具體表現(xiàn)

進程控制塊PCB是進程實體的一部分,是操作系統(tǒng)中最重要的記錄型數(shù)據(jù)結(jié)構(gòu)。

PCB中記錄了操作系統(tǒng)所需的、用于描述進程的當前情況以及控制進程運行的全部信息。

進程控制塊使一個在多道程序環(huán)境下不能獨立運行的程序(含數(shù)據(jù)),成為一個能獨立運行的基本單位,一個能與其他進程并發(fā)執(zhí)行的進程。

(2)PCB是進程存在的唯一標識的原因

在進程的整個生命期中,系統(tǒng)總是通過PCB對進程進行控制,即系統(tǒng)是根據(jù)進程的PCB而非其他感知到該進程的存在的。所以說,PCB是進程存在的唯一標識。

8PCB提供了進程管理和進程調(diào)度所需要的哪些信息?

答:在進程控制塊中,主要包括下述四個方面的信息:

(1)進程標識符:進程標識符用于唯一標識一個進程。

(2)處理機狀態(tài):處理機狀態(tài)信息也稱為處理機的上下文,主要由處理機的各種寄存器中的內(nèi)容組成。

(3)進程調(diào)度信息:進程調(diào)度信息包括進程狀態(tài)、進程優(yōu)先級、進程調(diào)度所需的其他信息、事件四個方面。

(4)進程控制信息:進程控制信息包括程序和數(shù)據(jù)的地址、進程同步和通信機制、資源清單和鏈接指針。

9進程控制塊的組織方式有哪幾種?

答:(1)線性方式:將系統(tǒng)中所有的PCB都組織在一張線性表中,將該表的首址存放在內(nèi)存的一個專用區(qū)域中。

(2)鏈接方式:把具有相同狀態(tài)進程的PCB分別通過PCB中的鏈接字鏈接成一個隊列。

(3)索引方式:系統(tǒng)根據(jù)所有進程狀態(tài)的不同,建立幾張索引表,在每個索引表的表目中,記錄具有相應(yīng)狀態(tài)的某個PCB在PCB表中的地址。

10何謂操作系統(tǒng)內(nèi)核?內(nèi)核的主要功能是什么?

答:(1)操作系統(tǒng)內(nèi)核的定義

操作系統(tǒng)內(nèi)核是指大多數(shù)操作系統(tǒng)的核心部分。它由操作系統(tǒng)中用于管理存儲器、文件、外設(shè)和系統(tǒng)資源的那些部分組成。操作系統(tǒng)內(nèi)核通常運行進程,并提供進程間的通信。

(2)操作系統(tǒng)內(nèi)核的主要功能

支撐功能

該功能是提供給OS其他眾多模塊所需要的一些基本功能,以便支撐這些模塊工作。其中三種最基本的支撐功能是:中斷處理、時鐘管理和原語操作。

a.中斷處理

中斷處理是內(nèi)核最基本的功能,是整個操作系統(tǒng)賴以活動的基礎(chǔ),OS中許多重要的活動。

b.時鐘管理

時鐘管理是內(nèi)核的一項基本功能,在OS中的許多活動都需要得到它的支撐。

c.原語操作

原語(Primitive),就是由若干條指令組成的,用于完成一定功能的一個過程,是一個不可分割的基本單位,在內(nèi)核中可能有許多原語。

資源管理功能

a.進程管理

在進程管理中,或者由于各個功能模塊的運行頻率較高,通常都將它們放在內(nèi)核中,以提高OS的性能。

b.存儲器管理

存儲器管理軟件的運行頻率也比較高,通常也將它們放在內(nèi)核中,以保證存儲器管理具有較高的運行速度。

c.設(shè)備管理

由于設(shè)備管理與硬件(設(shè)備)緊密相關(guān),因此其中很大部分也都設(shè)置在內(nèi)核中。

11試說明進程在三個基本狀態(tài)之間轉(zhuǎn)換的典型原因。

答:進程的三種基本狀態(tài)是就緒狀態(tài)、執(zhí)行狀態(tài)和阻塞狀態(tài),這三種基本狀態(tài)之間轉(zhuǎn)換的典型原因如圖2-7所示,具體如下:

(1)就緒狀態(tài)→執(zhí)行狀態(tài):進程通過調(diào)度分配到CPU資源;

(2)執(zhí)行狀態(tài)→就緒狀態(tài):時間片用完;

(3)執(zhí)行狀態(tài)→阻塞狀態(tài):I/O設(shè)備請求;

(4)阻塞狀態(tài)→就緒狀態(tài):I/O設(shè)備請求完成。

圖2-7 進程狀態(tài)轉(zhuǎn)換圖

12為什么要引入掛起狀態(tài)?該狀態(tài)有哪些性質(zhì)?

答:(1)引入掛起狀態(tài)的原因

終端用戶的請求:當終端用戶在自己的程序運行期間發(fā)現(xiàn)有可疑問題時,希望暫時使自己的程序靜止下來。

父進程請求:父進程希望掛起自己的某個子進程,以便考查和修改該子進程,或者協(xié)調(diào)各子進程間的活動。

負荷調(diào)節(jié)的需要:當實時系統(tǒng)中的工作負荷較重,已可能影響到對實時任務(wù)的控制時,可由系統(tǒng)把一些不重要的進程掛起,以保證系統(tǒng)能正常運行。

操作系統(tǒng)的需要:操作系統(tǒng)有時希望掛起某些進程,以便檢查運行中的資源使用情況或進行記賬。

(2)掛起狀態(tài)的性質(zhì)

當進程處于未被掛起的就緒狀態(tài)時,稱此為活動就緒狀態(tài),表示為Readya。當用掛起原語Suspend將該進程掛起后,該進程便轉(zhuǎn)變?yōu)殪o止就緒狀態(tài),表示為Readys,處于Readys狀態(tài)的進程不再被調(diào)度執(zhí)行。

當進程處于未被掛起的阻塞狀態(tài)時,稱它是處于活動阻塞狀態(tài),表示為Blockeda。當用Suspend原語將它掛起后,進程便轉(zhuǎn)變?yōu)殪o止阻塞狀態(tài),表示為Blockeds。處于該狀態(tài)的進程在其所期待的事件出現(xiàn)后,將從靜止阻塞變?yōu)殪o止就緒。

13在進行進程切換時,所要保存的處理機狀態(tài)信息有哪些?

答:處理機狀態(tài)信息主要是由處理機的各種寄存器中的內(nèi)容組成的。處理機在運行時,許多信息都放在寄存器中。當處理機被中斷時,所有這些信息都必須保存在PCB中,以便在該進程重新執(zhí)行時,能從斷點繼續(xù)執(zhí)行。這些寄存器包括:

(1)通用寄存器,用戶程序可以訪問,用于暫存信息;

(2)指令寄存器,存放要訪問的下一條指令的地址;

(3)進程狀態(tài)字PSW,含有狀態(tài)信息,如條件碼,執(zhí)行方式,中斷屏蔽標志等;

(4)用戶棧指針,每個用戶進程都有一個或若干個與之相關(guān)的系統(tǒng)棧,用于存放過程和系統(tǒng)調(diào)用地址。

14試說明引起進程創(chuàng)建的主要事件。

答:引起進程創(chuàng)建的主要事件有:

(1)用戶登錄

在分時系統(tǒng)中,用戶在終端鍵入登錄命令后,如果是合法用戶,系統(tǒng)將為該終端建立一個進程,并把它插入到就緒隊列中。

(2)作業(yè)調(diào)度

在批處理系統(tǒng)中,當作業(yè)調(diào)度程序按一定的算法調(diào)度某作業(yè)時,便將該作業(yè)裝入內(nèi)存,為它創(chuàng)建進程,分配必要的資源,并插入到就緒隊列中。

(3)提供服務(wù)

當運行中的用戶程序提出某種請求后,系統(tǒng)將專門創(chuàng)建一個進程來提供用戶所需要的服務(wù)。

(4)應(yīng)用請求

基于應(yīng)用進程的需求,由它自己創(chuàng)建一個新進程,以便使新進程以并發(fā)運行的方式完成特定任務(wù)。

15試說明引起進程被撤消的主要事件。

答:引起進程被撤銷的主要事件有:

(1)正常結(jié)束:在任何計算機系統(tǒng)中,都應(yīng)有一個用于表示進程已經(jīng)運行完成的指示;

(2)異常結(jié)束:在進程運行期間,由于出現(xiàn)某些錯誤和故障而迫使進程終止(包括越界錯誤、保護錯、非法指令、特權(quán)指令錯、運行超時、等待超時、算術(shù)運算錯、I/O故障);

(3)外界干預(yù):外界干預(yù)并非指在本進程運行中出現(xiàn)了異常事件,而是指進程應(yīng)外界的請求而終止運行(包括操作員或操作系統(tǒng)干預(yù)、父進程請求、父進程終止)。

16在創(chuàng)建一個進程時所要完成的主要工作是什么?

答:一旦操作系統(tǒng)發(fā)現(xiàn)了要求創(chuàng)建新進程的事件后,便調(diào)用進程創(chuàng)建原語Create按下述步驟創(chuàng)建一個新進程:

(1)申請空白PCB:為新進程申請獲得唯一的數(shù)字標識符,并從PCB集合中索取一個空白PCB。

(2)為新進程分配資源:為新進程的程序和數(shù)據(jù)以及用戶棧分配必要的內(nèi)存空間。

(3)初始化進程控制塊:包括初始化標識信息,初始化處理機狀態(tài)信息,初始化處理機控制信息。

(4)將新進程插入就緒隊列:如果進程就緒隊列能夠接納新進程,便將新進程插入就緒隊列。

17在撤消一個進程時所要完成的主要工作是什么?

答:如果系統(tǒng)中發(fā)生了要求終止進程的某事件,OS便調(diào)用進程終止原語,按下述過程去終止指定的進程:

(1)根據(jù)被終止進程標識符,從PCB集中檢索出進程PCB,從中讀出該進程的狀態(tài);

(2)若被終止進程正處于執(zhí)行狀態(tài),立即終止該進程的執(zhí)行,并置調(diào)度標志為真,指示該進程被終止后可以被重新調(diào)度;

(3)若該進程還有子進程,應(yīng)將所有子孫進程終止,以防它們成為不可控進程;

(4)將被終止進程擁有的全部資源,或者歸還給父進程,或者歸還給系統(tǒng);

(5)將被終止進程PCB從所在隊列或鏈表中移出,等待其他程序搜集信息。

18試說明引起進程阻塞或被喚醒的主要事件是什么?

答:有下述幾類事件會引起進程阻塞或被喚醒:

(1)請求系統(tǒng)服務(wù)

當正在執(zhí)行的進程請求操作系統(tǒng)提供服務(wù)時,由于某種原因,操作系統(tǒng)并不能立即滿足該進程的要求時,該進程只能轉(zhuǎn)變?yōu)樽枞麪顟B(tài)來等待;

(2)啟動某種操作

當進程啟動某種操作后,如果該進程必須在該操作完成之后才能繼續(xù)執(zhí)行,則必須先使該進程阻塞,以等待該操作完成;

(3)新數(shù)據(jù)尚未到達

對于相互合作的進程,如果其中一個進程需要先獲得另一(合作)進程提供的數(shù)據(jù)后才能對數(shù)據(jù)進行處理,則只要其所需數(shù)據(jù)未到達,該進程只有(等待)阻塞;

(4)無新工作可做

系統(tǒng)往往設(shè)置一些具有某特定功能的系統(tǒng)進程,每當這種進程完成任務(wù)后,便把自己阻塞起來以等待新任務(wù)到來。

19為什么要在OS中引入線程?

答:為了減少程序在并發(fā)執(zhí)行時所付出的時空開銷,使OS具有更好的并發(fā)性。

20試說明線程具有哪些屬性?

答:(1)輕型實體;(2)獨立調(diào)度和分派的基本單位;(3)可并發(fā)執(zhí)行;(4)共享進程資源。

21試從調(diào)度性、并發(fā)性、擁有資源及系統(tǒng)開銷方面對進程和線程進行比較。

答:(1)調(diào)度性

線程在OS中作為調(diào)度和分配的基本單位,進程作為資源擁有的基本單位。

(2)并發(fā)性

在引入線程的操作系統(tǒng)中,不僅進程之間可以并發(fā)執(zhí)行,而且在一個進程中的多個線程之間亦可并發(fā)執(zhí)行。

(3)擁有資源

進程是系統(tǒng)中擁有資源的基本單位,一般而言,線程自己不擁有系統(tǒng)資源,只有一點必不可少的資源,但它可以訪問其隸屬進程的資源,即一個進程的代碼段、數(shù)據(jù)段及所擁有的系統(tǒng)資源。

(4)系統(tǒng)開銷

操作系統(tǒng)在創(chuàng)建、撤銷和切換進程時付出的開銷明顯大于線程。

22線程控制塊TCB中包含了哪些內(nèi)容?

答:線程控制塊通常有這樣幾項信息:線程標識符,一組寄存器,線程運行狀態(tài),優(yōu)先級,線程專有存儲區(qū),信號屏蔽,堆棧指針。

23何謂用戶級線程和內(nèi)核支持線程?

答:(1)用戶級線程

用戶級線程ULT僅存在于用戶空間中。對于這種線程的創(chuàng)建、撤銷、線程之間的同步與通信等功能,都無須利用系統(tǒng)調(diào)用來實現(xiàn)。對于用戶級線程的切換,通常發(fā)生在一個應(yīng)用進程的諸多線程之間,這時,也同樣無須內(nèi)核的支持。由于切換的規(guī)則遠比進程調(diào)度和切換的規(guī)則簡單,因而使線程的切換速度特別快。可見,這種線程是與內(nèi)核無關(guān)的。

(2)內(nèi)核支持線程

內(nèi)核支持線程KST,也都同樣是在內(nèi)核的支持下運行的,即無論是用戶進程中的線程,還是系統(tǒng)進程中的線程,他們的創(chuàng)建、撤銷和切換等也是依靠內(nèi)核,在內(nèi)核空間實現(xiàn)的。此外,在內(nèi)核空間還為每一個內(nèi)核支持線程設(shè)置了一個線程控制塊,內(nèi)核是根據(jù)該控制塊來感知某線程的存在,并對其加以控制。

24試說明用戶級線程的實現(xiàn)方法。

答:用戶級線程是在用戶空間實現(xiàn)的。所有的用戶級線程都具有相同的結(jié)構(gòu),它們都運行在一個中間系統(tǒng)的上面。當前有兩種方式實現(xiàn)的中間系統(tǒng),即運行時系統(tǒng)和內(nèi)核控制線程。

(1)運行時系統(tǒng)

運行時系統(tǒng)實質(zhì)上是用于管理和控制線程的函數(shù)(過程)的集合。其中包括用于創(chuàng)建和撤銷線程的函數(shù)、線程同步和通信的函數(shù)以及實現(xiàn)線程調(diào)度的函數(shù)等。正因為有這些函數(shù),才能使用戶級線程與內(nèi)核無關(guān)。運行時系統(tǒng)中所有函數(shù)都駐留在用戶空間,并作為用戶級線程與內(nèi)核之間的接口。

(2)內(nèi)核控制線程

內(nèi)核控制線程又稱為輕型進程LWP,每一個進程都可擁有多個LWP,同用戶級線程一樣,每個LWP都有自己的數(shù)據(jù)結(jié)構(gòu),其中包括線程標識符、優(yōu)先級、狀態(tài),另外還有棧和局部存儲區(qū)等。它們也可以共享進程所擁有的資源。可通過系統(tǒng)調(diào)用來獲得內(nèi)核提供的服務(wù)。這樣當一個用戶級線程運行時,只要將它連接到一個LWP上,此時它便具有了內(nèi)核支持線程的所有屬性。

25試說明內(nèi)核支持線程的實現(xiàn)方法。

答:系統(tǒng)在創(chuàng)建新進程時,便為它分配一個任務(wù)數(shù)據(jù)區(qū)PTDA,其中包括若干個線程控制塊TCB空間。在每一個TCB中可保存線程標識符、優(yōu)先級、線程運行的CPU狀態(tài)等信息,這些信息被保存在內(nèi)核空間中。每當進程要創(chuàng)建一個線程時,便為新線程分配一個TCB,將有關(guān)信息填入該TCB中,并為之分配必要的資源。當PTDA中的所有TCB空間已用完,而進程又要創(chuàng)建新的線程時,只要其所創(chuàng)建的線程數(shù)目未超過系統(tǒng)的允許值(通常為數(shù)十至數(shù)百個),系統(tǒng)可再為之分配新的TCB空間;在撤銷一個線程時,也應(yīng)回收該線程的所有資源和TCB。

26多線程模型有哪幾種類型?多對一模型有何優(yōu)缺點?

答:(1)多線程模型有三種類型:多對一模型、一對一模型、多對多模型。

(2)多對一模型的優(yōu)缺點

多對一模型的主要優(yōu)點是線程管理的開銷小,效率高。

多對一模型的主要缺點在于,如果一個線程在訪問內(nèi)核時發(fā)生阻塞,則整個進程都會被阻塞;此外,在任一時刻,只有一個線程能夠訪問內(nèi)核,多個線程不能同時在多個處理機上運行。

主站蜘蛛池模板: 伊宁县| 东平县| 祁东县| 黔南| 衡水市| 拉孜县| 镇赉县| 鲁山县| 娄底市| 东乌| 科技| 江源县| 扬中市| 云梦县| 济阳县| 汤阴县| 开原市| 漠河县| 四子王旗| 青河县| 江口县| 鄂州市| 壶关县| 轮台县| 上思县| 资溪县| 太白县| 莒南县| 安新县| 阳江市| 科尔| 巨野县| 独山县| 淄博市| 岢岚县| 梁平县| 东城区| 德江县| 安塞县| 康平县| 买车|