現(xiàn)代操作系統(tǒng)課后習(xí)題答案_第1頁
現(xiàn)代操作系統(tǒng)課后習(xí)題答案_第2頁
現(xiàn)代操作系統(tǒng)課后習(xí)題答案_第3頁
現(xiàn)代操作系統(tǒng)課后習(xí)題答案_第4頁
現(xiàn)代操作系統(tǒng)課后習(xí)題答案_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上第二章 進(jìn)程管理第一部分 教材習(xí)題(P81)3、為什么程序并發(fā)執(zhí)行會(huì)產(chǎn)生間斷性特征?(P36)4、程序并發(fā)執(zhí)行,為何會(huì)失去封閉性和可再現(xiàn)性?(P37)【解】程序在并發(fā)執(zhí)行時(shí),是多個(gè)程序共享系統(tǒng)中的各種資源,因而這些資源的狀態(tài)將由多個(gè)程序來改變,致使程序的運(yùn)行已失去了封閉性。同時(shí)由于失去了封閉性,也將導(dǎo)致其再失去可再現(xiàn)性。程序在并發(fā)執(zhí)行時(shí),由于失去了封閉性,程序經(jīng)過多次執(zhí)行后,其計(jì)算機(jī)結(jié)果已與并發(fā)程序的執(zhí)行速度有關(guān),從而使程序的執(zhí)行失去了可再現(xiàn)性。5、在操作系統(tǒng)中為什么要引入進(jìn)程概念?(P37)它會(huì)產(chǎn)生什么樣的影響?【解】在操作系統(tǒng)中引入進(jìn)程的概念,是為了實(shí)現(xiàn)多個(gè)程序的

2、并發(fā)執(zhí)行。傳統(tǒng)的程序不能與其他程序并發(fā)執(zhí)行,只有在為之創(chuàng)建進(jìn)程后,才能與其他程序(進(jìn)程)并發(fā)執(zhí)行。這是因?yàn)椴l(fā)執(zhí)行的程序(即進(jìn)程)是“停停走走”地執(zhí)行,只有在為它創(chuàng)建進(jìn)程后,在它停下時(shí),方能將其現(xiàn)場(chǎng)信息保存在它的PCB中,待下次被調(diào)度執(zhí)行是,再?gòu)腜CB中恢復(fù)CPU現(xiàn)場(chǎng)并繼續(xù)執(zhí)行,而傳統(tǒng)的程序卻無法滿足上述要求。建立進(jìn)程所帶來的好處是使多個(gè)程序能并發(fā)執(zhí)行,這極大地提高了資源利用率和系統(tǒng)吞吐量。但管理進(jìn)程也需付出一定的代價(jià),包括進(jìn)程控制塊及協(xié)調(diào)各運(yùn)行機(jī)構(gòu)所占用的內(nèi)存空間開銷,以及為進(jìn)行進(jìn)程間的切換、同步及通信等所付出的時(shí)間開銷。6、試從動(dòng)態(tài)性、并發(fā)性和獨(dú)立性上比較進(jìn)程和程序?(P37)【解】(1)

3、動(dòng)態(tài)性:進(jìn)程既然是進(jìn)程實(shí)體的執(zhí)行過程,因此,動(dòng)態(tài)性是進(jìn)程最基本的特性。動(dòng)態(tài)性還表現(xiàn)為:“它由創(chuàng)建而產(chǎn)生,由調(diào)度而執(zhí)行,因得不到資源而暫停執(zhí)行,以及由撤消而消亡”??梢?,進(jìn)程有一定的生命期。而程序只是一組有序指令的集合,并存放在某種介質(zhì)上,本身并無運(yùn)動(dòng)的含義,因此,程序是個(gè)靜態(tài)實(shí)體。(2)并發(fā)性:所謂進(jìn)程的并發(fā),指的是多個(gè)進(jìn)程實(shí)體,同存于內(nèi)存中,能在一段時(shí)間內(nèi)同時(shí)運(yùn)行。并發(fā)性是進(jìn)程的重要特征,同時(shí)也成為OS的重要特征。引入進(jìn)程的目的也正是為了使其程序能和其它進(jìn)程的程序并發(fā)執(zhí)行,而程序是無法并發(fā)執(zhí)行的。(3)獨(dú)立性:進(jìn)程實(shí)體是一個(gè)能獨(dú)立運(yùn)行的基本單位,也是系統(tǒng)中獨(dú)立獲得資源和獨(dú)立調(diào)度的基本單位。凡

4、未建立進(jìn)程的程序,都不能作為一個(gè)獨(dú)立的單位參加運(yùn)行。試比較進(jìn)程與程序的異同?!窘狻窟M(jìn)程和程序是緊密相關(guān)而又完全不同的兩個(gè)概念。(1)每個(gè)進(jìn)程實(shí)體中包含了程序段和數(shù)據(jù)段這兩個(gè)部分,因此說進(jìn)程與程序是緊密相關(guān)的。但從結(jié)構(gòu)上看,進(jìn)程實(shí)體中除了程序段和數(shù)據(jù)段外,還必須包含一個(gè)數(shù)據(jù)結(jié)構(gòu),即PCB。(2)進(jìn)程是程序的一次執(zhí)行過程,因此是動(dòng)態(tài)的;動(dòng)態(tài)性還表現(xiàn)在進(jìn)程由創(chuàng)建而產(chǎn)生、由調(diào)度而執(zhí)行、由撤消而消亡,即它具有一定的生命期。而程序則只是一組指令的有序集合,并可永久地存放在某種介質(zhì)上,其本身不具有運(yùn)動(dòng)的含義,因此是靜態(tài)的。(3)多個(gè)進(jìn)程實(shí)體可同時(shí)存放在內(nèi)存中并發(fā)地執(zhí)行,其實(shí)這正是引入進(jìn)程的目的。程序(在沒有

5、為它創(chuàng)建進(jìn)程時(shí))的并發(fā)執(zhí)行具有不可再現(xiàn)性,因此程序不能正確地并發(fā)執(zhí)行。(4)進(jìn)程是一個(gè)能夠獨(dú)立運(yùn)行、獨(dú)立分配資源和獨(dú)立接受調(diào)度的基本單位。程序(在沒有為它創(chuàng)建進(jìn)程時(shí))因其不具有PCB,所以它是不可能在多道程序環(huán)境下獨(dú)立運(yùn)行的。(5)進(jìn)程與程序不一一對(duì)應(yīng)。同一個(gè)程序的多次運(yùn)行,將形成多個(gè)不同的進(jìn)程;同一個(gè)程序的一次執(zhí)行也可以產(chǎn)生多個(gè)進(jìn)程;一個(gè)進(jìn)程在其生命期的不同時(shí)候也可以執(zhí)行不同的程序。7、試說明PCB的作用?為什么說PCB是進(jìn)程存在的惟一標(biāo)志?(P41)【解】PCB是進(jìn)程實(shí)體的一部分,是OS中最重要的記錄型數(shù)據(jù)結(jié)構(gòu)。它記錄了OS所需的、用于描述進(jìn)程情況及控制進(jìn)程運(yùn)行所需的全部信息。PCB的作用

6、,是使一個(gè)在多道程序環(huán)境下不能獨(dú)立運(yùn)行的程序(含數(shù)據(jù))成為一個(gè)能獨(dú)立運(yùn)行的基本單位,一個(gè)能與其他進(jìn)程并發(fā)執(zhí)行的進(jìn)程?;蛘哒f,OS是根據(jù)PCB來對(duì)并發(fā)執(zhí)行的進(jìn)程進(jìn)行控制和管理的。在進(jìn)程的整個(gè)生命期中,系統(tǒng)總是通過PCB對(duì)進(jìn)程進(jìn)行控制,也就是說,系統(tǒng)是根據(jù)進(jìn)程的PCB感知到該進(jìn)程的存在的,所以說,PCB是進(jìn)程存在的標(biāo)志。8、試說明進(jìn)程在三個(gè)基本狀態(tài)之間轉(zhuǎn)換的典型原因?(P38)【解】(1)處于就緒狀態(tài)的進(jìn)程,當(dāng)進(jìn)程調(diào)度程序?yàn)橹峙淞颂幚頇C(jī)后,該進(jìn)程就由就緒狀態(tài)變?yōu)閳?zhí)行狀態(tài)(2)正在執(zhí)行的進(jìn)程因發(fā)生某事件而無法執(zhí)行,如暫時(shí)無法取得所需資源,則由執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)樽枞麪顟B(tài)。(3)正在執(zhí)行的進(jìn)程,如因時(shí)間片

7、用完或被高優(yōu)先級(jí)的進(jìn)程搶占處理機(jī)而被暫停執(zhí)行,該進(jìn)程便由執(zhí)行轉(zhuǎn)變?yōu)榫途w狀態(tài)。某系統(tǒng)的進(jìn)程狀態(tài)轉(zhuǎn)換圖如圖所示。(1)說明引起各種狀態(tài)轉(zhuǎn)換的典型事件。(2)分析下述狀態(tài)轉(zhuǎn)換是否可立即引起其他的狀態(tài)轉(zhuǎn)換:1,2,3,4。執(zhí)行就緒阻塞4312【解】(1)引起各種狀態(tài)轉(zhuǎn)換的典型事件如表所示。狀態(tài)轉(zhuǎn)換引起轉(zhuǎn)換的典型事件轉(zhuǎn)換1CPU調(diào)度轉(zhuǎn)換2執(zhí)行進(jìn)程的時(shí)間片用完,或被其他優(yōu)先權(quán)更高的進(jìn)程搶占CPU轉(zhuǎn)換3等待某種事件(如I/O的完成,或被他人占用的臨界資源變?yōu)榭捎脿顟B(tài)轉(zhuǎn)換4進(jìn)程所等待的事件發(fā)生(如I/O完成,或所等待的臨界資源變?yōu)榭捎脿顟B(tài))(2)狀態(tài)轉(zhuǎn)換1不會(huì)立即引起其他狀態(tài)轉(zhuǎn)換。狀態(tài)轉(zhuǎn)換2必然立即引發(fā)狀態(tài)轉(zhuǎn)

8、換1:狀態(tài)轉(zhuǎn)換2發(fā)生后,進(jìn)程調(diào)度程序必然要選出一個(gè)新的就緒進(jìn)程投入運(yùn)行,該新進(jìn)程可能是其他進(jìn)程,也可能是剛從執(zhí)行狀態(tài)轉(zhuǎn)換成就緒狀態(tài)的那個(gè)進(jìn)程。狀態(tài)轉(zhuǎn)換3可能立即引發(fā)狀態(tài)轉(zhuǎn)換1:狀態(tài)轉(zhuǎn)換3發(fā)生后,若就緒隊(duì)列非空,則進(jìn)程調(diào)度程序?qū)⑦x出一個(gè)就緒進(jìn)程投入執(zhí)行。狀態(tài)轉(zhuǎn)換4可能引發(fā)狀態(tài)轉(zhuǎn)換1:狀態(tài)轉(zhuǎn)換4發(fā)生后,若CPU空閑,并且沒有其他進(jìn)程競(jìng)爭(zhēng)CPU,則該進(jìn)程將被立即調(diào)度。另外,狀態(tài)轉(zhuǎn)換4還可能同時(shí)引發(fā)狀態(tài)轉(zhuǎn)換1和2:若系統(tǒng)采用搶占調(diào)度方式,而新就緒的進(jìn)程具備搶占CPU的條件(如其優(yōu)先權(quán)很高),則它可立即得到CPU轉(zhuǎn)換成執(zhí)行狀態(tài),而原來正在執(zhí)行的進(jìn)程則轉(zhuǎn)換成就緒狀態(tài)。某系統(tǒng)的進(jìn)程狀態(tài)變遷圖,請(qǐng)說明:執(zhí)行就

9、緒阻塞2314(1) 引起各種狀態(tài)轉(zhuǎn)換的典型事件有哪些?(2) 當(dāng)我們觀察系統(tǒng)中某些進(jìn)程時(shí),能夠看到某一進(jìn)程產(chǎn)生的一次狀態(tài)轉(zhuǎn)換能引起另一進(jìn)程作一次狀態(tài)轉(zhuǎn)換。在什么情況下,當(dāng)一個(gè)進(jìn)程發(fā)生轉(zhuǎn)換3時(shí)能立即引起另一個(gè)進(jìn)程發(fā)生轉(zhuǎn)換1?(3) 試說明是否會(huì)發(fā)生下述因果轉(zhuǎn)換:a) 2à1b) 3à2c) 4à1解:(1) 當(dāng)進(jìn)程調(diào)度程序從就緒隊(duì)列中選取一個(gè)進(jìn)程投入運(yùn)行時(shí)引起轉(zhuǎn)換1;正在執(zhí)行的進(jìn)程如因時(shí)間片用完而被暫停執(zhí)行就會(huì)引起轉(zhuǎn)換2;正在執(zhí)行的進(jìn)程因等待的事件尚未發(fā)生而無法執(zhí)行(如進(jìn)程請(qǐng)求完成I/O)則會(huì)引起轉(zhuǎn)換3;當(dāng)進(jìn)程等待的事件發(fā)生時(shí)(如I/O完成)則會(huì)引起轉(zhuǎn)換4。(2)

10、 如果就緒隊(duì)列非空,則一個(gè)進(jìn)程的轉(zhuǎn)換3會(huì)立即引起另一個(gè)進(jìn)程的轉(zhuǎn)換1。這是因?yàn)橐粋€(gè)進(jìn)程發(fā)生轉(zhuǎn)換3意味著正在執(zhí)行的進(jìn)程由執(zhí)行狀態(tài)變?yōu)樽枞麪顟B(tài),這時(shí)處理機(jī)空閑,進(jìn)程調(diào)度程序必然會(huì)從就緒隊(duì)列中選取一個(gè)進(jìn)程并將它投入運(yùn)行,因此只要就緒隊(duì)列非空,一個(gè)進(jìn)程的轉(zhuǎn)換3能立即引起另一個(gè)進(jìn)程的轉(zhuǎn)換1。(3) 所謂因果轉(zhuǎn)換指的是有兩個(gè)轉(zhuǎn)換,一個(gè)轉(zhuǎn)換的發(fā)生會(huì)引起另一個(gè)轉(zhuǎn)換的發(fā)生,前一個(gè)轉(zhuǎn)換稱為因,后一個(gè)轉(zhuǎn)換稱為果,這兩個(gè)轉(zhuǎn)換稱為因果轉(zhuǎn)換。當(dāng)然這種因果關(guān)系并不是什么時(shí)候都能發(fā)生,而是在一定條件下才會(huì)發(fā)生。a) 2à1:當(dāng)某進(jìn)程發(fā)生轉(zhuǎn)換2時(shí),就必然引起另一進(jìn)程的轉(zhuǎn)換1。因?yàn)楫?dāng)發(fā)生轉(zhuǎn)換2時(shí),正在執(zhí)行的進(jìn)程從執(zhí)行狀態(tài)

11、變?yōu)榫途w狀態(tài),進(jìn)程調(diào)度程序必然會(huì)從就緒隊(duì)列中選取一個(gè)進(jìn)程投入運(yùn)行,即發(fā)生轉(zhuǎn)換1。b) 3à2:某個(gè)進(jìn)程的轉(zhuǎn)換3決不可能引起另一進(jìn)程發(fā)生轉(zhuǎn)換2。這是因?yàn)楫?dāng)前執(zhí)行進(jìn)程從執(zhí)行狀態(tài)變?yōu)樽枞麪顟B(tài),不可能又從執(zhí)行狀態(tài)變?yōu)榫途w狀態(tài)。c) 4à1:當(dāng)處理機(jī)空閑且就緒隊(duì)列為空時(shí),某一進(jìn)程發(fā)生轉(zhuǎn)換4,就意味著有一個(gè)進(jìn)程從阻塞狀態(tài)變?yōu)榫途w狀態(tài),因而調(diào)度程序就會(huì)將就緒隊(duì)列中的此進(jìn)程投入運(yùn)行。9、為什么要引入掛起狀態(tài)?(P39)該狀態(tài)具有哪些性質(zhì)?10、在進(jìn)行進(jìn)程切換時(shí),所要保存的處理機(jī)狀態(tài)信息主要有那些?(P42)【解】保存的處理機(jī)狀態(tài)信息主要由處理機(jī)中的各種寄存器內(nèi)容組成。這些寄存器包括:通用寄

12、存器,指令寄存器,程序狀態(tài)字PSW,用戶棧指針。11、試說明引起進(jìn)程創(chuàng)建的主要事件。(P44)【解】(1)用戶登錄 在分時(shí)系統(tǒng)中,用戶在終端鍵入登錄命令后,若是合法用戶,系統(tǒng)將為該終端用戶建立一個(gè)進(jìn)程,并插入到就緒隊(duì)列中。(2)作業(yè)調(diào)度 批處理程序中,作業(yè)調(diào)度程序按一定的算法調(diào)度到某個(gè)作業(yè)時(shí),就將該作業(yè)裝入內(nèi)存,為它分配必要的資源,并立即為其創(chuàng)建進(jìn)程,插入就緒隊(duì)列中。(3)提供服務(wù) 運(yùn)行中用戶程序提出某種請(qǐng)求,系統(tǒng)專門創(chuàng)建一個(gè)進(jìn)程來提供用戶所需服務(wù)。(4)應(yīng)用請(qǐng)求 應(yīng)用進(jìn)程自己創(chuàng)建一個(gè)進(jìn)程,使自己和新進(jìn)程以并發(fā)運(yùn)行方式完成特定任務(wù)。12、試說明引起進(jìn)程被撤消的主要事件。13、在創(chuàng)建一個(gè)進(jìn)程時(shí)所

13、要完成的主要工作是什么?(P44)【解】需完成的主要工作有:(1)申請(qǐng)空白PCB ;(2)為新進(jìn)程分配資源;(3)初始化PCB ,其中包括:l 初始化標(biāo)識(shí)符信息。將系統(tǒng)分配的標(biāo)識(shí)符、父進(jìn)程標(biāo)識(shí)符填入新PCB中;l 初始化處理機(jī)狀態(tài)信息。使程序計(jì)數(shù)器指向程序入口地址,使棧指針指向棧頂;l 初始化處理機(jī)控制信息。將進(jìn)程狀態(tài)設(shè)置為就緒或靜止就緒,對(duì)于優(yōu)先級(jí)通常設(shè)置為最低,除非用戶提出高優(yōu)先級(jí)要求。(4)將新進(jìn)程插入就緒隊(duì)列。14、在撤消一個(gè)進(jìn)程時(shí)所要完成的主要工作是什么? 15、試說明引起進(jìn)程阻塞或被喚醒的主要事件是什么?(P46)16、進(jìn)程在運(yùn)行時(shí),存在哪兩種形式的制約?并舉例說明之。17、為什么

14、進(jìn)程在進(jìn)入臨界區(qū)之前,應(yīng)先執(zhí)行“進(jìn)入?yún)^(qū)”代碼,在退出臨界區(qū)后又執(zhí)行“退出區(qū)”代碼?(P50)【解】為了保證諸進(jìn)程互斥進(jìn)入自己的臨界區(qū),便可實(shí)現(xiàn)它們對(duì)臨界資源的互斥訪問。為此,每個(gè)進(jìn)程在進(jìn)入臨界區(qū)之前應(yīng)先對(duì)欲訪問的臨界資源進(jìn)行檢查,看它是否正被訪問。如果此刻臨界資源沒被訪問,則該進(jìn)程便可進(jìn)入臨界區(qū),對(duì)該資源進(jìn)行訪問,并設(shè)置它正被訪問的標(biāo)志;如果此刻該臨界資源正被某進(jìn)程訪問,則本進(jìn)程不能進(jìn)入臨界區(qū)。因此,必須在臨界區(qū)前增加一段用于上述檢查的代碼,把這段代碼稱為進(jìn)入?yún)^(qū)。相應(yīng)地,在臨界區(qū)后面也要加上一段稱為退出區(qū)的代碼,用于將臨界區(qū)正被訪問的標(biāo)志恢復(fù)為未被訪問標(biāo)志。18、同步機(jī)構(gòu)應(yīng)遵循哪些基本準(zhǔn)則?為

15、什么?(P50)【解】同步機(jī)構(gòu)應(yīng)遵循的基本準(zhǔn)則有:(1)空閑讓進(jìn) 無進(jìn)程處于臨界區(qū)時(shí),相應(yīng)的臨界資源處于空閑狀態(tài),因而可允許一個(gè)請(qǐng)求進(jìn)入臨界區(qū)的進(jìn)程立即進(jìn)入自己的臨界區(qū),以有效利用臨界資源。(2)忙則等待當(dāng)已有進(jìn)程進(jìn)入自己的臨界區(qū)時(shí),意味著相應(yīng)的臨界資源正被訪問,因而所有其他試圖進(jìn)入臨界區(qū)的進(jìn)程必須等待,以保證諸進(jìn)程互斥地訪問臨界資源。(3)有限等待對(duì)要求訪問臨界資源的進(jìn)程,應(yīng)保證該進(jìn)程能在有限時(shí)間內(nèi)進(jìn)入自己的臨界區(qū),以免陷入“死等”狀態(tài)。(4)讓權(quán)等待當(dāng)進(jìn)程不能進(jìn)入自己的臨界區(qū)時(shí),應(yīng)立即釋放處理機(jī),以免進(jìn)程陷入“忙等”。19、試從物理概念上來說明記錄型信號(hào)量wait和signal操作?(P5

16、1)【解】在記錄型信號(hào)量機(jī)制中,S.value的初值表示系統(tǒng)中某類資源的數(shù)目,因而又稱資源信號(hào)量,每次的wait操作,意味著進(jìn)程請(qǐng)求一個(gè)單位的資源,因此描述為S.value:=S.value-1;當(dāng)S.value<0時(shí),表示資源已分配完畢,因而進(jìn)程調(diào)用block原語,進(jìn)行自我阻塞,放棄處理機(jī),并插入到信號(hào)量鏈表S.L中??梢?,該機(jī)制遵循了讓權(quán)等待準(zhǔn)則。此時(shí)S.value的絕對(duì)值表示在該信號(hào)量鏈表中已阻塞進(jìn)程的數(shù)目。每次signal操作,表示執(zhí)行進(jìn)程釋放一個(gè)單位資源,故S.value:=S.value+1操作表示資源數(shù)目加1。若加1后仍是S.value<=0則表示該信號(hào)量鏈表中,仍有

17、等待該資源的進(jìn)程被阻塞,故還要調(diào)用wakeup原語,將S.L鏈表中的第一個(gè)等待進(jìn)程喚醒。如果S.value的初值為1,表示只允許一個(gè)進(jìn)程訪問臨界資源,此時(shí)的信號(hào)量轉(zhuǎn)化為互斥信號(hào)量。20、你認(rèn)為整型信號(hào)量機(jī)制是否完全遵循了同步機(jī)構(gòu)的四條準(zhǔn)則?(P52)【解】在整型信號(hào)量機(jī)制中的wait操作,只要是信號(hào)量S<=0,就會(huì)不斷地測(cè)試,因此,該機(jī)制并未遵循“讓權(quán)等待”的準(zhǔn)則,而是使該進(jìn)程處于“忙等”的狀態(tài)。21、如何利用信號(hào)量機(jī)制來實(shí)現(xiàn)多個(gè)進(jìn)程對(duì)臨界資源的互斥訪問?并舉例說明之。22、試寫出相應(yīng)的程序來描述圖2-17所示的前趨圖。S11S3S2S51S41S71S61S81S11S21S31S41

18、S51S61S71【解】(1)Var a,b,c,d,e,f,g,h; semaphore:=0,0,0,0,0,0,0,0; begin parbegin begin S1;signal(a);signal(b);end; begin wait(a);S2;signal(c);signal(d);end; begin wait(b);S3;signal(e); end; begin wait(c);S4;signal(f);end; begin wait(d);S5;signal(g);end; begin wait(e);S6;singal(h);end; begin wait(f);wa

19、it(g); wait(h); S7;end; parend end (2)Var a,b,c,d,e,f,g,h,i,j; semaphore:=0,0,0,0,0,0,0,0,0,0,0; begin parbegin begin S1;signal(a);signal(b);end; begin wait(a);S2;signal(c);signal(d);end; begin wait(b);S3;signal(e);signal(f);end; begin wait(c);S4;signal(g);end; begin wait(d);S5;signal(h);end; begin

20、wait(e);S6;singal(i);end; begin wait(f);S7;signal(j);end; begin wait(g); wait(h);wait(i);wait(j); S8;end; parend end 23、在生產(chǎn)者消費(fèi)者問題中,如果缺少了signal(full)或 signal(empty),對(duì)執(zhí)行結(jié)果會(huì)有什么影響?【解】在生產(chǎn)者消費(fèi)者問題中,如果缺少了signal(full) ,那么消費(fèi)者會(huì)認(rèn)為生產(chǎn)者沒有生產(chǎn)而阻塞,而生產(chǎn)者會(huì)不斷生產(chǎn),直到empty為0后阻塞,然后兩個(gè)進(jìn)程陷入“死等”狀態(tài)。如果缺少了signal(empty)開始兩進(jìn)程可同步運(yùn)行。但當(dāng)emp

21、ty為0 時(shí)生產(chǎn)者會(huì)因此而阻塞,然后消費(fèi)者進(jìn)程繼續(xù)運(yùn)行直到full也為0阻塞,然后兩個(gè)進(jìn)程陷入“死等”狀態(tài)。24、在生產(chǎn)者消費(fèi)者問題中,如果將兩個(gè)wait操作即wait(full)和wait(mutex)互換位置,或者將signal(mutex)與signal(full)互換位置,結(jié)果會(huì)如何?【解】如果將wait(full)和wait(mutex)互換位置,則如果consumer先進(jìn)入臨界區(qū),就會(huì)一直等待full,但由于沒有signal(mutex) ,producer將無法進(jìn)入臨界區(qū)而等待,則兩個(gè)進(jìn)程相互等待,陷入死鎖。如果signal(full)與signal (mutex)互換位置,則會(huì)

22、使full的值不再是等待的consumer進(jìn)程數(shù)目。var mutex,empty,full:semaphore:=1,n,0;buffer:array0,n-1of item; in,out:integer:=0,0;Begin parbegin producer: begin repeat producer an item in nextp; wait(mutex);/前2句顛倒則死鎖 wait(empty); buffer(in):=nextp; in:=(in+1)mod n; signal(full); /后2句顛倒不死鎖 signal(mutex); until false; en

23、dconsumer: begin repeat wait(full); wait(mutex); nextc:=buffer(out); out:=(out+1)mod n; signal(mutex); signal(empty); consume the item in nextc; until false; endParendend由于V操作是釋放資源,因此對(duì)調(diào)V操作的次序無關(guān)緊要。而對(duì)調(diào)P操作的次序則可能導(dǎo)致死鎖。這時(shí)因?yàn)閷?duì)調(diào)P操作后,有可能出現(xiàn)這樣一種特殊情況:在某一時(shí)刻緩沖池中已裝滿了產(chǎn)品且緩沖池中無進(jìn)程工作(這時(shí)信號(hào)量full的值為n,信號(hào)量empty的值為0,信號(hào)量mutex的

24、值為1),若系統(tǒng)此時(shí)調(diào)度生產(chǎn)者進(jìn)程運(yùn)行,生產(chǎn)者進(jìn)程又生產(chǎn)了一個(gè)產(chǎn)品,它執(zhí)行P(mutex)并順利進(jìn)入臨界區(qū)(這時(shí)mutex值為0),隨后它執(zhí)行p(empty)時(shí)因沒有空閑緩沖區(qū)而受阻等待,等待消費(fèi)者進(jìn)程進(jìn)入緩沖池取走產(chǎn)品以釋放出緩沖區(qū);消費(fèi)者進(jìn)程執(zhí)行p(full)后再執(zhí)行p(mutex)時(shí),因緩沖池被生產(chǎn)者進(jìn)程占據(jù)而無法進(jìn)入。這樣就形成了生產(chǎn)者進(jìn)程在占有臨界資源的情況下,等待消費(fèi)者進(jìn)程取走產(chǎn)品,而消費(fèi)者進(jìn)程又無法進(jìn)入臨界區(qū)取走產(chǎn)品的僵局,此時(shí)兩進(jìn)程陷入死鎖。25、我們?yōu)槟撑R界資源設(shè)置一把鎖W,當(dāng)W=1時(shí)表示關(guān)鎖;當(dāng)W=0時(shí)表示鎖已打開。試寫出開鎖和關(guān)鎖原語,并利用它們?nèi)?shí)現(xiàn)互斥?!窘狻课覀儾捎?/p>

25、一個(gè)變量W作為“鎖”,代表某個(gè)臨界資源的狀態(tài),W=0(false,鎖已打開)表示該資源未用,W=1(true,關(guān)鎖)表示該資源正被使用。同時(shí),用一段程序作為開鎖原語,用另一段程序作為關(guān)鎖原語,要進(jìn)入臨界區(qū)的進(jìn)程首先要執(zhí)行關(guān)鎖原語,當(dāng)它退出臨界區(qū)時(shí),要執(zhí)行開鎖原語。從而實(shí)現(xiàn)對(duì)臨界區(qū)的互斥控制。兩個(gè)原語的作用是:加鎖原語lock測(cè)試W是否為0若W=0,讓W(xué)=1若W=1,繼續(xù)測(cè)試開鎖原語unlock使W=0可見,加鎖原語首先要判斷臨界區(qū)中有無進(jìn)程,若W=0,表示無進(jìn)程進(jìn)入臨界區(qū),它可以馬上進(jìn)入,并立即將W置為1,同時(shí)禁止其他進(jìn)程進(jìn)入。若W=1,表示已經(jīng)有進(jìn)程進(jìn)入,它只得等待。這種機(jī)構(gòu)簡(jiǎn)單方便,但存在

26、CPU的時(shí)間浪費(fèi),因?yàn)榈却M(jìn)入臨界區(qū)的進(jìn)程將不斷循環(huán)測(cè)試W,等待W變?yōu)?。26、試修改下面生產(chǎn)者-消費(fèi)者問題解法中的錯(cuò)誤:producer:beginrepeatproduce an item in nextp;wait(mutex);wait(full);buffer(in):=nextp;signal(mutex);until false;endconsumer:beginrepeatwait(mutex);wait(empty);nextc:=buffer(out);out:=out+1;signal(mutex);consume item in nextc;until false;en

27、d修改為: producer:beginrepeatproduce an item in nextp;wait (empty); wait (mutex);buffer (in): =nextp;in:=(in+1) mod n;signal (mutex);signal (full)until false;endconsumer: beginrepeatwait (full); wait(mutex); nextc:=buffer(out); out:=(out+1) mod n; out:=out+1; signal(mutex);signal(empty);consume item in

28、 nextc;until falseend27、試?yán)糜涗浶托盘?hào)量機(jī)制寫出一個(gè)不會(huì)出現(xiàn)死鎖的哲學(xué)家進(jìn)餐問題的算法。28、在測(cè)量控制系統(tǒng)中的數(shù)據(jù)采集任務(wù)時(shí),把所采集的數(shù)據(jù)送往一單緩沖區(qū);計(jì)算任務(wù)從該單緩沖區(qū)中取出數(shù)據(jù)進(jìn)行計(jì)算。試寫出利用信號(hào)量機(jī)制實(shí)現(xiàn)兩任務(wù)共享單緩沖區(qū)的同步算法?!窘狻克惴ㄈ缦拢篤ar mutex, empty, full: semaphore: =1,1,0;buffer: item;beginparbeginReceive: beginrepeatWait(empty);Wait(mutex);buffer: =nextp;Signal(mutex);Signal(full)

29、;until falseendGet:beginrepeatWait (full);Wait (mutex);nextp: =buffer; Signal (mutex);Signal (empty);until falseendparendend29、畫圖說明管程由哪幾部分組成?(P56)為什么要引入條件變量?(P57)【解】如圖:初始化代碼條件(不忙)隊(duì)列進(jìn)入隊(duì)列共享數(shù)據(jù)一組操作進(jìn)程通常,由于等待的原因可能有多個(gè),為了區(qū)別它們,因此引入條件變量。30、如何利用管程來解決生產(chǎn)者消費(fèi)者問題?(P60)【解】首先為它們建立一個(gè)管程,描述如下: Type producer-consumer=mon

30、itor var in, out, count: integer; buffer: array0,-,n-1 of item; notfull,notempty:condition; procedure entry put(item) begin if count>=n then notfull.wait; buffer(in):=nextp; in:=(in+1) mod n; count:=count+1; if notempty.queue then notempty.signal; end procedure entry get(item) begin if count<=

31、0 then notempyt.wait; nextc:=buffer(out); out:=(out+1) mod n; count:=count-1; if notfull.queue then notfull.signal; end begin in:=out:=0; count:=0; end生產(chǎn)者和消費(fèi)者可描述為: producer: begin repeatproduce an item in nextp;PC.put(item);until false;endconsumer: begin repeat PC.get(item); consume the item in next

32、c until false; end31、什么是AND信號(hào)量?試?yán)肁ND信號(hào)量寫出生產(chǎn)者消費(fèi)者問題的解法?!窘狻緼ND信號(hào)量是指:將進(jìn)程在整個(gè)運(yùn)行過程中所需的所有臨界資源一次性地全部分配給進(jìn)程,待該進(jìn)程使用完后再一起釋放。只要尚有一個(gè)資源未能分配給該進(jìn)程,其他所有可能為之分配的資源,也不分配給他,即:對(duì)若干臨界資源分配,采取原子操作方式,要么全部分配到進(jìn)程,要么一個(gè)也不分配。叫AND信號(hào)量。 解法如下: var mutex,empty,full:semaphore:=1,n,0; buffer: array0,-,n-1of item; in,out:integer:=0,0; begin

33、parbegin producer: begin repeat produce an item in nextp Swait(empty,mutex); buffer(in):=nextp; in:=(in+1)mod n; Ssignal(mutex,full); until false; end consumer: begin repeat Swait(full,mutex); nextc:=buffer(out); out:=(out+1)mod n; Ssignal(mutex,empty); consume the item in nextc; until falseend;32、什

34、么是信號(hào)量集?試?yán)眯盘?hào)量集寫出讀者-寫者問題的解法。33、試比較進(jìn)程間的低級(jí)與高級(jí)通信工具。(P65)34、當(dāng)前有哪幾種高級(jí)通信機(jī)制?(P65)【解】共享存儲(chǔ)器系統(tǒng),消息傳遞系統(tǒng),管道通信系統(tǒng)。35、消息隊(duì)列通信機(jī)制有哪幾方面功能?(P66)【解】發(fā)送進(jìn)程利用send原語,將消息直接發(fā)送給接收進(jìn)程;接收進(jìn)程利用receive原語接收消息。36、為什么要在OS中引入線程?(P72)37、試說明線程具有哪些屬性?(P73)38、試從調(diào)度性、并發(fā)性、擁有資源及系統(tǒng)開銷幾個(gè)方面,對(duì)進(jìn)程和線程進(jìn)行比較?!窘狻浚?)調(diào)度性 在傳統(tǒng)的OS中,擁有資源的基本單位和獨(dú)立調(diào)度、分派的基本單位都是進(jìn)程。而在引入線

35、程的OS中,則把線程作為調(diào)度和分派的基本單位,而把進(jìn)程作為資源擁有的基本單位,使傳統(tǒng)進(jìn)程的兩個(gè)屬性分開,線程便能輕裝運(yùn)行,從而顯著提高系統(tǒng)并發(fā)程度。在同一進(jìn)程中,線程的切換不會(huì)引起進(jìn)程切換,在由一個(gè)進(jìn)程中的線程切換到另一個(gè)進(jìn)程中的線程時(shí),將會(huì)引起進(jìn)程切換。(2)并發(fā)性 多線程的操作系統(tǒng)中,不僅進(jìn)程可以并發(fā)執(zhí)行,而且一個(gè)進(jìn)程的多個(gè)線程也可并發(fā)執(zhí)行。從而能更有效的使用系統(tǒng)資源和提高系統(tǒng)吞吐量。(3)擁有資源 進(jìn)程是擁有資源的獨(dú)立單位。線程自己使不擁有系統(tǒng)資源,但可訪問隸屬進(jìn)程的資源。(4)系統(tǒng)開銷 在創(chuàng)建和撤消進(jìn)程時(shí),系統(tǒng)要為之分配或回收資源,所以系統(tǒng)開銷要顯著大于在創(chuàng)建和撤消線程的開銷。在進(jìn)行進(jìn)

36、程切換時(shí),涉及到整個(gè)當(dāng)前進(jìn)程CPU環(huán)境的保存以及新被調(diào)度運(yùn)行的進(jìn)程的CPU環(huán)境的設(shè)置。而線程切換只須保存和設(shè)置少量寄存器的內(nèi)容,并不涉及存儲(chǔ)器管理方面的操作??梢?,進(jìn)程切換的開銷也遠(yuǎn)大于線程切換的開銷。此外,由于同一進(jìn)程中的多個(gè)線程具有相同的地址空間,致使它們之間的同步和通信的實(shí)現(xiàn)也變得比較容易。39、為了在多線程OS中實(shí)現(xiàn)進(jìn)程之間的同步與通信,通常提供了哪幾種同步機(jī)制?【解】互斥鎖,條件變量,計(jì)數(shù)信號(hào)量,多讀、單寫鎖。40、用于實(shí)現(xiàn)線程同步的私用信號(hào)量和公用信號(hào)量之間有何差異?(P76)41、何謂用戶級(jí)線程和內(nèi)核支持線程?(P77)【解】用戶級(jí)線程僅存在于用戶級(jí)中,它的創(chuàng)建、撤消和切換都不利

37、用系統(tǒng)調(diào)用實(shí)現(xiàn),與內(nèi)核無關(guān),相應(yīng)的,內(nèi)核也不知道有用戶級(jí)線程存在。內(nèi)核級(jí)線程依賴于內(nèi)核,無論用戶進(jìn)程中的線程還是系統(tǒng)進(jìn)程中的線程,其創(chuàng)建、撤消、切換都由內(nèi)核實(shí)現(xiàn)。在內(nèi)核中保留了一張線程控制塊,內(nèi)核根據(jù)控制塊感知線程的存在并對(duì)其進(jìn)行控制。比較:(1)線程的調(diào)度與切換速度 內(nèi)核支持線程的調(diào)度和切換與進(jìn)程的調(diào)度和切換十分相似。例如,在線程調(diào)度時(shí)的調(diào)度方式,同樣也是搶占方式和非搶占方式兩種。在線程的調(diào)度算法上,也同樣可采用時(shí)間片輪轉(zhuǎn)、優(yōu)先權(quán)算法等。當(dāng)由線程調(diào)度選中一個(gè)線程后,再將處理機(jī)分配給它。當(dāng)然,線程在調(diào)度和切換上所花費(fèi)的開銷要比進(jìn)程的小得多。對(duì)于用戶級(jí)線程的切換,通常是發(fā)生在一個(gè)應(yīng)用程序的多線程

38、之間,這時(shí),不僅無須通過中斷進(jìn)入OS的內(nèi)核,而且切換的規(guī)則也遠(yuǎn)比進(jìn)程調(diào)度和切換的規(guī)則簡(jiǎn)單。例如,當(dāng)一個(gè)線程阻塞后會(huì)自動(dòng)切換到下一個(gè)具有相同功能的線程,因此,用戶級(jí)線程的切換速度特別快。(2)系統(tǒng)調(diào)用 當(dāng)傳統(tǒng)的用戶進(jìn)程調(diào)用一個(gè)系統(tǒng)調(diào)用時(shí),要由用戶態(tài)轉(zhuǎn)入核心態(tài),用戶進(jìn)程將被阻塞。當(dāng)內(nèi)核完成系統(tǒng)調(diào)用而返回時(shí),才將該進(jìn)程喚醒,繼續(xù)執(zhí)行。而在用戶級(jí)線程調(diào)用一個(gè)系統(tǒng)調(diào)用時(shí),由于內(nèi)核并不知道有該用戶級(jí)線程的存在,因而把系統(tǒng)調(diào)用看作是整個(gè)進(jìn)程的行為,于是使該進(jìn)程等待,而調(diào)度另一個(gè)進(jìn)程執(zhí)行,同樣是在內(nèi)核完成系統(tǒng)調(diào)用而返回時(shí),進(jìn)程才能繼續(xù)執(zhí)行。如果系統(tǒng)中設(shè)置的是內(nèi)核支持線程,則調(diào)度是以線程為單位。當(dāng)一個(gè)線程調(diào)用一

39、個(gè)系統(tǒng)調(diào)用時(shí),內(nèi)核把系統(tǒng)調(diào)用只看作是該線程的行為,因而阻塞該線程,于是可以再調(diào)度該進(jìn)程中的其他線程執(zhí)行。(3)線程執(zhí)行時(shí)間 對(duì)于只設(shè)置了用戶級(jí)線程的系統(tǒng),調(diào)度是以進(jìn)程為單位進(jìn)行的。在采用輪轉(zhuǎn)調(diào)度算法時(shí),各個(gè)進(jìn)程輪流執(zhí)行一個(gè)時(shí)間片,這對(duì)諸進(jìn)程而言,似是公平。但假如在進(jìn)程A中包含了一個(gè)用戶級(jí)線程,而進(jìn)程B中含有100個(gè)線程,這樣,進(jìn)程A中線程的運(yùn)行時(shí)間,將是進(jìn)程B中各線程運(yùn)行時(shí)間的100倍;相應(yīng)地,速度就快100倍。假如系統(tǒng)中設(shè)置的是內(nèi)核支持線程,其調(diào)度是以線程為單位進(jìn)行的,這樣,進(jìn)程B可以獲得的CPU時(shí)間是進(jìn)程A的100倍,進(jìn)程B可使100個(gè)系統(tǒng)調(diào)用并發(fā)工作。42、試說明用戶級(jí)線程的實(shí)現(xiàn)方法。(

40、P77)43、試說明內(nèi)核支持線程的實(shí)現(xiàn)方法。(P77)如何保證諸進(jìn)程互斥地訪問臨界資源?答:為了互斥地訪問臨界資源,系統(tǒng)必須保證進(jìn)程互斥地進(jìn)入臨界區(qū)。為此,必須在臨界區(qū)前增加一段稱為進(jìn)入?yún)^(qū)的代碼,以檢查是否有其他進(jìn)程已進(jìn)入臨界區(qū)使用臨界資源。若有,則進(jìn)程必須等待;否則,允許進(jìn)程進(jìn)入臨界區(qū),同時(shí)設(shè)置標(biāo)志表示有進(jìn)程正在臨界區(qū)內(nèi)。同樣地,在臨界區(qū)后必須增加一段稱作退出區(qū)的代碼,用于將已有進(jìn)程進(jìn)入臨界區(qū)訪問臨界資源的標(biāo)志改為無進(jìn)程進(jìn)入臨界區(qū)使用臨界資源。進(jìn)入?yún)^(qū)、退出區(qū)具體可用多種同步機(jī)制實(shí)現(xiàn),如鎖、信號(hào)量機(jī)制等。何謂“忙等”?它有什么缺點(diǎn)?答:所謂“忙等”是指“不讓權(quán)”的等待,即進(jìn)程因某事件的發(fā)生而無

41、法繼續(xù)執(zhí)行時(shí),它仍占有CPU,并通過不斷地執(zhí)行循環(huán)測(cè)試指令來等待該事件的完成?!懊Φ取钡闹饕秉c(diǎn)是浪費(fèi)CPU的時(shí)間,另外,它還可能引起預(yù)料不到的后果。例如,考慮某個(gè)采取高優(yōu)先權(quán)優(yōu)先調(diào)度原則的系統(tǒng),目前有2個(gè)進(jìn)程A和B共享某個(gè)臨界資源,A的優(yōu)先權(quán)較高,B的優(yōu)先權(quán)較低,且B已處于臨界區(qū)內(nèi),而A欲進(jìn)入自己的臨界區(qū),則A、B都不可能繼續(xù)向前推進(jìn),陷入“死等”狀態(tài)。進(jìn)程之間存在著哪幾種制約關(guān)系?各是什么原因引起的?下列活動(dòng)分別屬于哪種制約關(guān)系?(1) 若干同學(xué)去圖書館借書;(2) 兩隊(duì)舉行籃球比賽;(3) 流水線生產(chǎn)的各道工序;(4) 商品生產(chǎn)和社會(huì)消費(fèi)。答:進(jìn)程之間存在著直接制約和間接制約兩種制約關(guān)系

42、,其中直接制約(同步)是由于進(jìn)程間的相互合作而引起的,而間接制約(互斥)則是由于進(jìn)程間共享臨界資源而引起的。(1) 若干同學(xué)去圖書館借書是間接制約,其中書是臨界資源。(2) 兩隊(duì)舉行籃球比賽是間接制約,其中籃球是臨界資源。(3) 流水線生產(chǎn)的各道工序是直接制約,各道工序間需要相互合作,每道工序的開始都依賴于前一道工序的完成。(4) 商品生產(chǎn)和社會(huì)消費(fèi)是直接制約,兩者也需要相互合作:商品生產(chǎn)出來后才可以被消費(fèi);商品被消費(fèi)后才需要再生產(chǎn)。第二部分 選擇題1在進(jìn)程管理中,當(dāng) C 時(shí),進(jìn)程從阻塞狀態(tài)變?yōu)榫途w狀態(tài)。A.進(jìn)程被進(jìn)程調(diào)度程序選中B.等待某一事件C.等待的事件發(fā)生D.時(shí)間片用完2分配到必要的資

43、源并獲得處理機(jī)時(shí)的進(jìn)程狀態(tài)是 B 。A.就緒狀態(tài)B.執(zhí)行狀態(tài)C.阻塞狀態(tài)D.撤消狀態(tài)3P、V操作是 A 。A.兩條低級(jí)進(jìn)程通信原語B.兩組不同的機(jī)器指令C.兩條系統(tǒng)調(diào)用命令D.兩條高級(jí)進(jìn)程通信原語4設(shè)系統(tǒng)中有n(n>2)個(gè)進(jìn)程,且當(dāng)前不在執(zhí)行進(jìn)程調(diào)度程序,試考慮下述4種情況,不可能發(fā)生的情況是 A 。A沒有運(yùn)行進(jìn)程,有2個(gè)就緒進(jìn)程,n個(gè)進(jìn)程處于等待狀態(tài)。B有1個(gè)運(yùn)行進(jìn)程,沒有就緒進(jìn)程,n-1個(gè)進(jìn)程處于等待狀態(tài)。C有1個(gè)運(yùn)行進(jìn)程,有1個(gè)就緒進(jìn)程,n-2個(gè)進(jìn)程處理等待狀態(tài)。D有1個(gè)運(yùn)行進(jìn)程,n-1個(gè)就緒進(jìn)程,沒有進(jìn)程處于等待狀態(tài)。5若P、V操作的信號(hào)量S初值為2,當(dāng)前值為-1,則表示有 B

44、等待進(jìn)程。A. 0個(gè)B. 1個(gè)C. 2個(gè)D. 3個(gè)6進(jìn)程的三個(gè)基本狀態(tài)在一定條件下可以相互轉(zhuǎn)化,進(jìn)程由就緒狀態(tài)變?yōu)檫\(yùn)行狀態(tài)的條件是 D 。A.時(shí)間片用完B.等待某事件發(fā)生C.等待的某事件已發(fā)生D.被進(jìn)程調(diào)度程序選中7進(jìn)程的三個(gè)基本狀態(tài)在一定條件下可以相互轉(zhuǎn)化,進(jìn)程由運(yùn)行狀態(tài)變?yōu)樽枞麪顟B(tài)的條件是 B 。A.時(shí)間片用完B.等待某事件發(fā)生C.等待的某事件已發(fā)生D.被進(jìn)程調(diào)度程序選中8下列的進(jìn)程狀態(tài)變化中, C 變化是不可能發(fā)生的。A運(yùn)行à就緒B運(yùn)行à就緒C等待à運(yùn)行D等待à就緒9一個(gè)運(yùn)行的進(jìn)程用完了分配給它的時(shí)間片后,它的狀態(tài)變?yōu)?A 。A.就緒B.等待C.運(yùn)

45、行D.由用戶自己確定10用V操作喚醒一個(gè)等待進(jìn)程時(shí),被喚醒進(jìn)程的狀態(tài)變?yōu)?B 。A.等待B.就緒C.運(yùn)行D.完成11操作系統(tǒng)通過 B 對(duì)進(jìn)程進(jìn)行管理。A. JCBB. PCBC. DCTD. CHCT12用P、V操作可以解決 A 互斥問題。A. 一切B. 某些C. 正確 D. 錯(cuò)誤13一個(gè)進(jìn)程被喚醒意味著 D 。A. 該進(jìn)程重新占有了CPUB. 它的優(yōu)先權(quán)變?yōu)樽畲驝. 其PCB移至等待隊(duì)列隊(duì)首D. 進(jìn)程變?yōu)榫途w狀態(tài)14多道程序環(huán)境下,操作系統(tǒng)分配資源以 C 為基本單位。A. 程序B. 指令C. 進(jìn)程D. 作業(yè)15. 從靜態(tài)的角度看,進(jìn)程是由(A)、(B)、(C)三部分組成的,其中(C)是進(jìn)程存

46、在的唯一標(biāo)志。當(dāng)幾個(gè)進(jìn)程共享(A)時(shí),(A)應(yīng)當(dāng)是可重入代碼。A:程序段;B:數(shù)據(jù)段;C:PCB;16. 進(jìn)程的三個(gè)基本狀態(tài)是(A)、(B)、(C)。由(A)到(B)是由進(jìn)程調(diào)度所引起的;由(B)到(C)是正在執(zhí)行的進(jìn)程發(fā)生了某事件,使之無法繼續(xù)執(zhí)行而引起的。A:就緒;B:執(zhí)行;C:阻塞;17. 正在等待他人釋放臨界資源的進(jìn)程處于(A)狀態(tài),已分配到除CPU外的所有資源的進(jìn)程處于(B)狀態(tài),已獲得CPU的進(jìn)程處于(C)狀態(tài)。A:阻塞;B:就緒;C:執(zhí)行;18. 下列進(jìn)程狀態(tài)轉(zhuǎn)換中,絕對(duì)不可能發(fā)生的狀態(tài)轉(zhuǎn)換是(A);一般不會(huì)發(fā)生的狀態(tài)轉(zhuǎn)換是(B)。A:就緒à阻塞;B:阻塞à執(zhí)

47、行;19. 在一個(gè)單處理機(jī)系統(tǒng)中,存在5個(gè)進(jìn)程,最多可有(A)個(gè)進(jìn)程處于就緒隊(duì)列;如果這5個(gè)進(jìn)程中有一個(gè)系統(tǒng)進(jìn)程IDLE(也叫空轉(zhuǎn)進(jìn)程,因?yàn)樗皇遣粩嘌h(huán)地執(zhí)行空語句),則最多可有(B)個(gè)進(jìn)程處于阻塞狀態(tài)。A,B:(1)5;(2)4;(3)3;(4)2;(5)1;(6)0。20. 正在執(zhí)行的進(jìn)程由于其時(shí)間片用完被暫停執(zhí)行,此時(shí)進(jìn)程應(yīng)從執(zhí)行狀態(tài)變?yōu)椋ˋ)狀態(tài);處于靜止阻塞狀態(tài)的進(jìn)程,在進(jìn)程等待的事件出現(xiàn)后,應(yīng)變?yōu)椋˙)狀態(tài);若進(jìn)程正處于執(zhí)行狀態(tài)時(shí),因終端的請(qǐng)求而暫停下來以便研究其運(yùn)行情況,這時(shí)進(jìn)程應(yīng)轉(zhuǎn)變?yōu)椋–)狀態(tài),若進(jìn)程已處于阻塞狀態(tài);則此時(shí)應(yīng)轉(zhuǎn)變?yōu)椋―)狀態(tài)。A:(1)靜止阻塞;(2)活動(dòng)阻

48、塞;(3)靜止就緒;(4)活動(dòng)就緒;(5)執(zhí)行。B:(1)靜止阻塞;(2)活動(dòng)阻塞;(3)靜止就緒;(4)活動(dòng)就緒;(5)執(zhí)行。C:(1)靜止阻塞;(2)活動(dòng)阻塞;(3)靜止就緒;(4)活動(dòng)就緒;(5)執(zhí)行。D:(1)靜止阻塞;(2)活動(dòng)阻塞;(3)靜止就緒;(4)活動(dòng)就緒;(5)執(zhí)行。21. 為使進(jìn)程由活動(dòng)就緒轉(zhuǎn)變?yōu)殪o止就緒,應(yīng)利用(A)原語;為使進(jìn)程由執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)樽枞麪顟B(tài),應(yīng)利用(B)原語;為使進(jìn)程由靜止就緒變?yōu)榛顒?dòng)就緒,應(yīng)利用(C)原語;從阻塞狀態(tài)變?yōu)榫途w狀態(tài)應(yīng)利用(D)原語。A:(1)create;(2)suspend;(3)active;(4)block;(5)wakeup。B:(

49、1)create;(2)suspend;(3)active;(4)block;(5)wakeup。C:(1)create;(2)suspend;(3)active;(4)block;(5)wakeup。D:(1)create;(2)suspend;(3)active;(4)block;(5)wakeup。22. 在分時(shí)系統(tǒng)中,導(dǎo)致進(jìn)程創(chuàng)建的典型事件是(A);在批處理系統(tǒng)中,導(dǎo)致進(jìn)程創(chuàng)建的典型事件是(B);由系統(tǒng)專門為運(yùn)行中的應(yīng)用進(jìn)程創(chuàng)建新進(jìn)程的事件是(C)。在創(chuàng)建進(jìn)程時(shí),(D)不是創(chuàng)建所必需的步驟。A:(1)用戶注冊(cè);(2)用戶登錄;(3)用戶記賬;(4)用戶通信。B:(1)作業(yè)錄入;(2)作

50、業(yè)調(diào)度;(3)進(jìn)程調(diào)度;(4)中級(jí)調(diào)度。C:(1)分配資源;(2)進(jìn)行通信;(3)共享資源;(4)提供服務(wù)。D:(1)為進(jìn)程建立PCB;(2)為進(jìn)程分配內(nèi)存等資源;(3)為進(jìn)程分配CPU;(4)將進(jìn)程插入就緒隊(duì)列。23. 從下面對(duì)臨界區(qū)的論述中,選出一條正確的論述。(1)臨界區(qū)是指進(jìn)程中用于實(shí)現(xiàn)進(jìn)程互斥的那段代碼。(2)臨界區(qū)是指進(jìn)程中用于實(shí)現(xiàn)進(jìn)程同步的那段代碼。(3)臨界區(qū)是指進(jìn)程中用于實(shí)現(xiàn)進(jìn)程通信的那段代碼。(4)臨界區(qū)是指進(jìn)程中用于訪問共享資源的那段代碼。(5)臨界區(qū)是指進(jìn)程中訪問臨界資源的那段代碼。24. 進(jìn)程A和B共享同一臨界資源,并且進(jìn)程A正處于對(duì)應(yīng)的臨界區(qū)內(nèi)執(zhí)行。請(qǐng)從下列描述中選

51、擇一條正確的描述。CA. 進(jìn)程A的執(zhí)行不能被中斷,即臨界區(qū)的代碼具有原子性。B. 進(jìn)程A的執(zhí)行能被中斷,但中斷A后,不能將CPU調(diào)度給進(jìn)程B。C. 進(jìn)程A的執(zhí)行能被中斷,而且只要B進(jìn)程就緒,就可以將CPU調(diào)度給進(jìn)程B。D. 進(jìn)程A的執(zhí)行能被中斷,而且只要B進(jìn)程就緒,就必定將CPU調(diào)度給進(jìn)程B。25. (A)是一種只能由wait和signal操作所改變的整型變量,(A)可用于實(shí)現(xiàn)進(jìn)程的(B)和(C),(B)是排他性訪問臨界資源。A:(1)控制變量;(2)鎖;(3)整型信號(hào)量;(4)記錄型信號(hào)量。B:(1)同步;(2)通信;(3)調(diào)度;(4)互斥。C:(1)同步;(2)通信;(3)調(diào)度;(4)互斥。26. 對(duì)于記錄型信號(hào)量,在執(zhí)行一次wait操作時(shí),信號(hào)量的值應(yīng)當(dāng)(A),當(dāng)其值為(B)時(shí),進(jìn)程阻塞。在執(zhí)行signal操作時(shí),信號(hào)量的值應(yīng)當(dāng)為(C),當(dāng)其值為(D)時(shí),應(yīng)喚醒阻塞隊(duì)列中的進(jìn)程。A:(1)不變;(2)加1;(3)減1;(4)加指定數(shù)值;(5)減指定數(shù)值。B:(1)大于0;(2)小于0;(3)大于等于0;(4)小于等于0.C:(1)不變

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論