- 湯子瀛《計算機操作系統(tǒng)》(第4版)筆記和課后習題(含考研真題)詳解
- 圣才電子書
- 5999字
- 2021-06-24 18:11:07
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)核,多個線程不能同時在多個處理機上運行。
- 2020年全國碩士研究生招生考試臨床醫(yī)學綜合能力臨床醫(yī)學人文精神考點歸納與典型題詳解
- 2020年藝術(shù)碩士考研題庫【名校考研真題+章節(jié)題庫+模擬試題】
- 中國青年政治學院社會工作學院812社會學專業(yè)綜合歷年考研真題及詳解
- 河南大學333教育綜合[專業(yè)碩士]歷年考研真題及詳解
- 2020年英語專業(yè)考研基礎(chǔ)英語高分范文100篇
- 劉建明《當代西方新聞理論》筆記和課后習題(含考研真題)詳解
- 武漢大學外國語言文學學院211翻譯碩士英語歷年考研真題及詳解
- 丁煌《西方行政學說史》筆記和考研真題詳解(第2版)
- 周三多《管理學》(第3版)筆記和課后習題(含考研真題)詳解【視頻講解】
- 錢銘怡《心理咨詢與心理治療》筆記和習題(含考研真題)詳解
- 吳漢東《知識產(chǎn)權(quán)法》(法律出版社第5版)筆記和課后習題(含考研真題)詳解
- 田運銀《國際貿(mào)易實務(wù)精講》(第5版)課后習題詳解
- 2014年在職攻讀碩士學位全國聯(lián)考英語考試閱讀200篇
- 任保平《微觀經(jīng)濟學》配套題庫【名校考研真題+課后習題+章節(jié)題庫+模擬試題】
- 北京科技大學文法學院630社會學研究方法歷年考研真題及詳解