




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
.、為什么程序并發(fā)執(zhí)行會(huì)產(chǎn)生連續(xù)性特征?〔P36〕4、程序并發(fā)執(zhí)行,為何會(huì)失去封閉性和可再現(xiàn)性?〔P37〕【解】程序在并發(fā)執(zhí)行時(shí),是多個(gè)程序共享系統(tǒng)中的各種資源,因而這些資源的狀態(tài)將由多個(gè)程序來(lái)改變,致使程序的運(yùn)行已失去了封閉性。同時(shí)由于失去了封閉性,也將導(dǎo)致其再失去可再現(xiàn)性。程序在并發(fā)執(zhí)行時(shí),由于失去了封閉性,程序經(jīng)過(guò)屢次執(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è)程序的并發(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)的程序卻無(wú)法滿(mǎn)足上述要求。建立進(jìn)程所帶來(lái)的好處是使多個(gè)程序能并發(fā)執(zhí)行,這極大地提高了資源利用率和系統(tǒng)吞吐量。但管理進(jìn)程也需付出一定的代價(jià),包括進(jìn)程控制塊及協(xié)調(diào)各運(yùn)行機(jī)構(gòu)所占用的內(nèi)存空間開(kāi)銷(xiāo),以及為進(jìn)展進(jìn)程間的切換、同步及通信等所付出的時(shí)間開(kāi)銷(xiāo)。6、試從動(dòng)態(tài)性、并發(fā)性和獨(dú)立性上比較進(jìn)程和程序?〔P37〕【解】〔1〕動(dòng)態(tài)性:進(jìn)程既然是進(jìn)程實(shí)體的執(zhí)行過(guò)程,因此,動(dòng)態(tài)性是進(jìn)程最根本的特性。動(dòng)態(tài)性還表現(xiàn)為:"它由創(chuàng)立而產(chǎn)生,由調(diào)度而執(zhí)行,因得不到資源而暫停執(zhí)行,以及由撤消而消亡〞??梢?jiàn),進(jìn)程有一定的生命期。而程序只是一組有序指令的集合,并存放在*種介質(zhì)上,本身并無(wú)運(yùn)動(dòng)的含義,因此,程序是個(gè)靜態(tài)實(shí)體?!?〕并發(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í)行,而程序是無(wú)法并發(fā)執(zhí)行的?!?〕獨(dú)立性:進(jìn)程實(shí)體是一個(gè)能獨(dú)立運(yùn)行的根本單位,也是系統(tǒng)中獨(dú)立獲得資源和獨(dú)立調(diào)度的根本單位。凡未建立進(jìn)程的程序,都不能作為一個(gè)獨(dú)立的單位參加運(yùn)行。試比較進(jìn)程與程序的異同。【解】進(jìn)程和程序是嚴(yán)密相關(guān)而又完全不同的兩個(gè)概念?!?〕每個(gè)進(jìn)程實(shí)體中包含了程序段和數(shù)據(jù)段這兩個(gè)局部,因此說(shuō)進(jìn)程與程序是嚴(yán)密相關(guān)的。但從構(gòu)造上看,進(jìn)程實(shí)體中除了程序段和數(shù)據(jù)段外,還必須包含一個(gè)數(shù)據(jù)構(gòu)造,即PCB。〔2〕進(jìn)程是程序的一次執(zhí)行過(guò)程,因此是動(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)的?!?〕多個(gè)進(jìn)程實(shí)體可同時(shí)存放在內(nèi)存中并發(fā)地執(zhí)行,其實(shí)這正是引入進(jìn)程的目的。程序〔在沒(méi)有為它創(chuàng)立進(jìn)程時(shí)〕的并發(fā)執(zhí)行具有不可再現(xiàn)性,因此程序不能正確地并發(fā)執(zhí)行?!?〕進(jìn)程是一個(gè)能夠獨(dú)立運(yùn)行、獨(dú)立分配資源和獨(dú)立承受調(diào)度的根本單位。程序〔在沒(méi)有為它創(chuàng)立進(jìn)程時(shí)〕因其不具有PCB,所以它是不可能在多道程序環(huán)境下獨(dú)立運(yùn)行的?!?〕進(jìn)程與程序不一一對(duì)應(yīng)。同一個(gè)程序的屢次運(yùn)行,將形成多個(gè)不同的進(jìn)程;同一個(gè)程序的一次執(zhí)行也可以產(chǎn)生多個(gè)進(jìn)程;一個(gè)進(jìn)程在其生命期的不同時(shí)候也可以執(zhí)行不同的程序。7、試說(shuō)明PCB的作用?為什么說(shuō)PCB是進(jìn)程存在的惟一標(biāo)志?〔P41〕【解】PCB是進(jìn)程實(shí)體的一局部,是OS中最重要的記錄型數(shù)據(jù)構(gòu)造。它記錄了OS所需的、用于描述進(jìn)程情況及控制進(jìn)程運(yùn)行所需的全部信息。PCB的作用,是使一個(gè)在多道程序環(huán)境下不能獨(dú)立運(yùn)行的程序〔含數(shù)據(jù)〕成為一個(gè)能獨(dú)立運(yùn)行的根本單位,一個(gè)能與其他進(jìn)程并發(fā)執(zhí)行的進(jìn)程。或者說(shuō),OS是根據(jù)PCB來(lái)對(duì)并發(fā)執(zhí)行的進(jìn)程進(jìn)展控制和管理的。在進(jìn)程的整個(gè)生命期中,系統(tǒng)總是通過(guò)PCB對(duì)進(jìn)程進(jìn)展控制,也就是說(shuō),系統(tǒng)是根據(jù)進(jìn)程的PCB感知到該進(jìn)程的存在的,所以說(shuō),PCB是進(jìn)程存在的標(biāo)志。8、試說(shuō)明進(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ā)生*事件而無(wú)法執(zhí)行,如暫時(shí)無(wú)法取得所需資源,則由執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)樽枞麪顟B(tài)?!?〕正在執(zhí)行的進(jìn)程,如因時(shí)間片用完或被高優(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〕說(shuō)明引起各種狀態(tài)轉(zhuǎn)換的典型事件。〔2〕分析下述狀態(tài)轉(zhuǎn)換是否可立即引起其他的狀態(tài)轉(zhuǎn)換:1,2,3,4。執(zhí)行執(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)換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ā)生后,假設(shè)就緒隊(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ā)生后,假設(shè)CPU空閑,并且沒(méi)有其他進(jìn)程競(jìng)爭(zhēng)CPU,則該進(jìn)程將被立即調(diào)度。另外,狀態(tài)轉(zhuǎn)換4還可能同時(shí)引發(fā)狀態(tài)轉(zhuǎn)換1和2:假設(shè)系統(tǒng)采用搶占調(diào)度方式,而新就緒的進(jìn)程具備搶占CPU的條件〔如其優(yōu)先權(quán)很高〕,則它可立即得到CPU轉(zhuǎn)換成執(zhí)行狀態(tài),而原來(lái)正在執(zhí)行的進(jìn)程則轉(zhuǎn)換成就緒狀態(tài)。*系統(tǒng)的進(jìn)程狀態(tài)變遷圖,請(qǐng)說(shuō)明:執(zhí)行執(zhí)行就緒阻塞2314引起各種狀態(tài)轉(zhuǎn)換的典型事件有哪些?當(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?試說(shuō)明是否會(huì)發(fā)生下述因果轉(zhuǎn)換:213241解:當(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ā)生而無(wú)法執(zhí)行〔如進(jìn)程請(qǐng)求完成I/O〕則會(huì)引起轉(zhuǎn)換3;當(dāng)進(jìn)程等待的事件發(fā)生時(shí)〔如I/O完成〕則會(huì)引起轉(zhuǎn)換4。如果就緒隊(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。所謂因果轉(zhuǎn)換指的是有兩個(gè)轉(zhuǎn)換,一個(gè)轉(zhuǎn)換的發(fā)生會(huì)引起另一個(gè)轉(zhuǎn)換的發(fā)生,前一個(gè)轉(zhuǎn)換稱(chēng)為因,后一個(gè)轉(zhuǎn)換稱(chēng)為果,這兩個(gè)轉(zhuǎn)換稱(chēng)為因果轉(zhuǎn)換。當(dāng)然這種因果關(guān)系并不是什么時(shí)候都能發(fā)生,而是在一定條件下才會(huì)發(fā)生。21:當(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)變?yōu)榫途w狀態(tài),進(jìn)程調(diào)度程序必然會(huì)從就緒隊(duì)列中選取一個(gè)進(jìn)程投入運(yùn)行,即發(fā)生轉(zhuǎn)換1。32:*個(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)。41:當(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)容組成。這些存放器包括:通用存放器,指令存放器,程序狀態(tài)字PSW,用戶(hù)棧指針。11、試說(shuō)明引起進(jìn)程創(chuàng)立的主要事件?!睵44〕【解】〔1〕用戶(hù)登錄在分時(shí)系統(tǒng)中,用戶(hù)在終端鍵入登錄命令后,假設(shè)是合法用戶(hù),系統(tǒng)將為該終端用戶(hù)建立一個(gè)進(jìn)程,并插入到就緒隊(duì)列中?!?〕作業(yè)調(diào)度批處理程序中,作業(yè)調(diào)度程序按一定的算法調(diào)度到*個(gè)作業(yè)時(shí),就將該作業(yè)裝入內(nèi)存,為它分配必要的資源,并立即為其創(chuàng)立進(jìn)程,插入就緒隊(duì)列中?!?〕提供效勞運(yùn)行中用戶(hù)程序提出*種請(qǐng)求,系統(tǒng)專(zhuān)門(mén)創(chuàng)立一個(gè)進(jìn)程來(lái)提供用戶(hù)所需效勞?!?〕應(yīng)用請(qǐng)求應(yīng)用進(jìn)程自己創(chuàng)立一個(gè)進(jìn)程,使自己和新進(jìn)程以并發(fā)運(yùn)行方式完成特定任務(wù)。12、試說(shuō)明引起進(jìn)程被撤消的主要事件。13、在創(chuàng)立一個(gè)進(jìn)程時(shí)所要完成的主要工作是什么?〔P44〕【解】需完成的主要工作有:〔1〕申請(qǐng)空白PCB;〔2〕為新進(jìn)程分配資源;〔3〕初始化PCB,其中包括:初始化標(biāo)識(shí)符信息。將系統(tǒng)分配的標(biāo)識(shí)符、父進(jìn)程標(biāo)識(shí)符填入新PCB中;初始化處理機(jī)狀態(tài)信息。使程序計(jì)數(shù)器指向程序入口地址,使棧指針指向棧頂;初始化處理機(jī)控制信息。將進(jìn)程狀態(tài)設(shè)置為就緒或靜止就緒,對(duì)于優(yōu)先級(jí)通常設(shè)置為最低,除非用戶(hù)提出高優(yōu)先級(jí)要求。〔4〕將新進(jìn)程插入就緒隊(duì)列。14、在撤消一個(gè)進(jìn)程時(shí)所要完成的主要工作是什么?15、試說(shuō)明引起進(jìn)程阻塞或被喚醒的主要事件是什么?〔P46〕16、進(jìn)程在運(yùn)行時(shí),存在哪兩種形式的制約?并舉例說(shuō)明之。17、為什么進(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ì)臨界資源的互斥訪問(wèn)。為此,每個(gè)進(jìn)程在進(jìn)入臨界區(qū)之前應(yīng)先對(duì)欲訪問(wèn)的臨界資源進(jìn)展檢查,看它是否正被訪問(wèn)。如果此刻臨界資源沒(méi)被訪問(wèn),則該進(jìn)程便可進(jìn)入臨界區(qū),對(duì)該資源進(jìn)展訪問(wèn),并設(shè)置它正被訪問(wèn)的標(biāo)志;如果此刻該臨界資源正被*進(jìn)程訪問(wèn),則本進(jìn)程不能進(jìn)入臨界區(qū)。因此,必須在臨界區(qū)前增加一段用于上述檢查的代碼,把這段代碼稱(chēng)為進(jìn)入?yún)^(qū)。相應(yīng)地,在臨界區(qū)后面也要加上一段稱(chēng)為退出區(qū)的代碼,用于將臨界區(qū)正被訪問(wèn)的標(biāo)志恢復(fù)為未被訪問(wèn)標(biāo)志。18、同步機(jī)構(gòu)應(yīng)遵循哪些根本準(zhǔn)則?為什么?〔P50〕【解】同步機(jī)構(gòu)應(yīng)遵循的根本準(zhǔn)則有:〔1〕空閑讓進(jìn)無(wú)進(jìn)程處于臨界區(qū)時(shí),相應(yīng)的臨界資源處于空閑狀態(tài),因而可允許一個(gè)請(qǐng)求進(jìn)入臨界區(qū)的進(jìn)程立即進(jìn)入自己的臨界區(qū),以有效利用臨界資源?!?〕忙則等待當(dāng)已有進(jìn)程進(jìn)入自己的臨界區(qū)時(shí),意味著相應(yīng)的臨界資源正被訪問(wèn),因而所有其他試圖進(jìn)入臨界區(qū)的進(jìn)程必須等待,以保證諸進(jìn)程互斥地訪問(wèn)臨界資源?!?〕有限等待對(duì)要求訪問(wèn)臨界資源的進(jìn)程,應(yīng)保證該進(jìn)程能在有限時(shí)間內(nèi)進(jìn)入自己的臨界區(qū),以免陷入"死等〞狀態(tài)?!?〕讓權(quán)等待當(dāng)進(jìn)程不能進(jìn)入自己的臨界區(qū)時(shí),應(yīng)立即釋放處理機(jī),以免進(jìn)程陷入"忙等〞。19、試從物理概念上來(lái)說(shuō)明記錄型信號(hào)量wait和signal操作?〔P51〕【解】在記錄型信號(hào)量機(jī)制中,S.value的初值表示系統(tǒng)中*類(lèi)資源的數(shù)目,因而又稱(chēng)資源信號(hào)量,每次的wait操作,意味著進(jìn)程請(qǐng)求一個(gè)單位的資源,因此描述為S.value:=S.value-1;當(dāng)S.value<0時(shí),表示資源已分配完畢,因而進(jìn)程調(diào)用block原語(yǔ),進(jìn)展自我阻塞,放棄處理機(jī),并插入到信號(hào)量鏈表中??梢?jiàn),該機(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。假設(shè)加1后仍是S.value<=0則表示該信號(hào)量鏈表中,仍有等待該資源的進(jìn)程被阻塞,故還要調(diào)用wakeup原語(yǔ),將鏈表中的第一個(gè)等待進(jìn)程喚醒。如果S.value的初值為1,表示只允許一個(gè)進(jìn)程訪問(wè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ī)制來(lái)實(shí)現(xiàn)多個(gè)進(jìn)程對(duì)臨界資源的互斥訪問(wèn)?并舉例說(shuō)明之。22、試寫(xiě)出相應(yīng)的程序來(lái)描述圖2-17所示的前趨圖。SS11S3S2S51S41S71S61S81S11S21S31S41S51S61S71【解】(1)Vara,b,c,d,e,f,g,h;semaphore:=0,0,0,0,0,0,0,0;beginparbeginbeginS1;signal(a);signal(b);end;beginwait(a);S2;signal(c);signal(d);end;beginwait(b);S3;signal(e);end;beginwait(c);S4;signal(f);end;beginwait(d);S5;signal(g);end;beginwait(e);S6;singal(h);end;beginwait(f);wait(g);wait(h);S7;end;parendend(2)Vara,b,c,d,e,f,g,h,i,j;semaphore:=0,0,0,0,0,0,0,0,0,0,0;beginparbeginbeginS1;signal(a);signal(b);end;beginwait(a);S2;signal(c);signal(d);end;beginwait(b);S3;signal(e);signal(f);end;beginwait(c);S4;signal(g);end;beginwait(d);S5;signal(h);end;beginwait(e);S6;singal(i);end;beginwait(f);S7;signal(j);end;beginwait(g);wait(h);wait(i);wait(j);S8;end;parendend23、在生產(chǎn)者—消費(fèi)者問(wèn)題中,如果缺少了signal(full)或signal(empty),對(duì)執(zhí)行結(jié)果會(huì)有什么影響?【解】在生產(chǎn)者—消費(fèi)者問(wèn)題中,如果缺少了signal(full),則消費(fèi)者會(huì)認(rèn)為生產(chǎn)者沒(méi)有生產(chǎn)而阻塞,而生產(chǎn)者會(huì)不斷生產(chǎn),直到empty為0后阻塞,然后兩個(gè)進(jìn)程陷入"死等〞狀態(tài)。如果缺少了signal(empty)開(kāi)場(chǎng)兩進(jìn)程可同步運(yùn)行。但當(dāng)empty為0時(shí)生產(chǎn)者會(huì)因此而阻塞,然后消費(fèi)者進(jìn)程繼續(xù)運(yùn)行直到full也為0阻塞,然后兩個(gè)進(jìn)程陷入"死等〞狀態(tài)。24、在生產(chǎn)者—消費(fèi)者問(wèn)題中,如果將兩個(gè)wait操作即wait(full)和wait(mute*)互換位置,或者將signal(mute*)與signal(full)互換位置,結(jié)果會(huì)如何?【解】如果將wait(full)和wait(mute*)互換位置,則如果consumer先進(jìn)入臨界區(qū),就會(huì)一直等待full,但由于沒(méi)有signal(mute*),producer將無(wú)法進(jìn)入臨界區(qū)而等待,則兩個(gè)進(jìn)程相互等待,陷入死鎖。如果signal(full)與signal(mute*)互換位置,則會(huì)使full的值不再是等待的consumer進(jìn)程數(shù)目。varmute*,empty,full:semaphore:=1,n,0; buffer:array[0,…,n-1]ofitem;in,out:integer:=0,0;Beginparbeginproducer:begin repeat…… produceraniteminne*tp;…… wait(mute*);//前2句顛倒則死鎖wait(empty);buffer(in):=ne*tp; in:=(in+1)modn; signal(full);//后2句顛倒不死鎖signal(mute*);untilfalse;endconsumer:beginrepeatwait(full);wait(mute*);ne*tc:=buffer(out);out:=(out+1)modn;signal(mute*);signal(empty);consumetheiteminne*tc;untilfalse;endParendend由于V操作是釋放資源,因此對(duì)調(diào)V操作的次序無(wú)關(guān)緊要。而對(duì)調(diào)P操作的次序則可能導(dǎo)致死鎖。這時(shí)因?yàn)閷?duì)調(diào)P操作后,有可能出現(xiàn)這樣一種特殊情況:在*一時(shí)刻緩沖池中已裝滿(mǎn)了產(chǎn)品且緩沖池中無(wú)進(jìn)程工作〔這時(shí)信號(hào)量full的值為n,信號(hào)量empty的值為0,信號(hào)量mute*的值為1〕,假設(shè)系統(tǒng)此時(shí)調(diào)度生產(chǎn)者進(jìn)程運(yùn)行,生產(chǎn)者進(jìn)程又生產(chǎn)了一個(gè)產(chǎn)品,它執(zhí)行P(mute*)并順利進(jìn)入臨界區(qū)〔這時(shí)mute*值為0〕,隨后它執(zhí)行p(empty)時(shí)因沒(méi)有空閑緩沖區(qū)而受阻等待,等待消費(fèi)者進(jìn)程進(jìn)入緩沖池取走產(chǎn)品以釋放出緩沖區(qū);消費(fèi)者進(jìn)程執(zhí)行p(full)后再執(zhí)行p(mute*)時(shí),因緩沖池被生產(chǎn)者進(jìn)程占據(jù)而無(wú)法進(jìn)入。這樣就形成了生產(chǎn)者進(jìn)程在占有臨界資源的情況下,等待消費(fèi)者進(jìn)程取走產(chǎn)品,而消費(fèi)者進(jìn)程又無(wú)法進(jìn)入臨界區(qū)取走產(chǎn)品的僵局,此時(shí)兩進(jìn)程陷入死鎖。25、我們?yōu)?臨界資源設(shè)置一把鎖W,當(dāng)W=1時(shí)表示關(guān)鎖;當(dāng)W=0時(shí)表示鎖已翻開(kāi)。試寫(xiě)出開(kāi)鎖和關(guān)鎖原語(yǔ),并利用它們?nèi)?shí)現(xiàn)互斥?!窘狻课覀儾捎靡粋€(gè)變量W作為"鎖〞,代表*個(gè)臨界資源的狀態(tài),W=0〔false,鎖已翻開(kāi)〕表示該資源未用,W=1〔true,關(guān)鎖〕表示該資源正被使用。同時(shí),用一段程序作為開(kāi)鎖原語(yǔ),用另一段程序作為關(guān)鎖原語(yǔ),要進(jìn)入臨界區(qū)的進(jìn)程首先要執(zhí)行關(guān)鎖原語(yǔ),當(dāng)它退出臨界區(qū)時(shí),要執(zhí)行開(kāi)鎖原語(yǔ)。從而實(shí)現(xiàn)對(duì)臨界區(qū)的互斥控制。兩個(gè)原語(yǔ)的作用是:加鎖原語(yǔ)lock測(cè)試W是否為0假設(shè)W=0,讓W(xué)=1假設(shè)W=1,繼續(xù)測(cè)試開(kāi)鎖原語(yǔ)unlock使W=0可見(jiàn),加鎖原語(yǔ)首先要判斷臨界區(qū)中有無(wú)進(jìn)程,假設(shè)W=0,表示無(wú)進(jìn)程進(jìn)入臨界區(qū),它可以馬上進(jìn)入,并立即將W置為1,同時(shí)制止其他進(jìn)程進(jìn)入。假設(shè)W=1,表示已經(jīng)有進(jìn)程進(jìn)入,它只得等待。這種機(jī)構(gòu)簡(jiǎn)單方便,但存在CPU的時(shí)間浪費(fèi),因?yàn)榈却M(jìn)入臨界區(qū)的進(jìn)程將不斷循環(huán)測(cè)試W,等待W變?yōu)?。26、試修改下面生產(chǎn)者-消費(fèi)者問(wèn)題解法中的錯(cuò)誤:producer:beginrepeat…produceaniteminne*tp;wait(mute*);wait(full);buffer(in):=ne*tp;signal(mute*);untilfalse;endconsumer:beginrepeatwait(mute*);wait(empty);ne*tc:=buffer(out);out:=out+1;signal(mute*);consumeiteminne*tc;untilfalse;end修改為:producer:beginrepeatproduceaniteminne*tp;wait(empty);wait(mute*);buffer(in):=ne*tp;in:=(in+1)modn;signal(mute*);signal(full)untilfalse;endconsumer:beginrepeatwait(full);wait(mute*);ne*tc:=buffer(out);out:=(out+1)modn;out:=out+1;signal(mute*);signal(empty);consumeiteminne*tc;untilfalseend27、試?yán)糜涗浶托盘?hào)量機(jī)制寫(xiě)出一個(gè)不會(huì)出現(xiàn)死鎖的哲學(xué)家進(jìn)餐問(wèn)題的算法。28、在測(cè)量控制系統(tǒng)中的數(shù)據(jù)采集任務(wù)時(shí),把所采集的數(shù)據(jù)送往一單緩沖區(qū);計(jì)算任務(wù)從該單緩沖區(qū)中取出數(shù)據(jù)進(jìn)展計(jì)算。試寫(xiě)出利用信號(hào)量機(jī)制實(shí)現(xiàn)兩任務(wù)共享單緩沖區(qū)的同步算法?!窘狻克惴ㄈ缦拢篤armute*,empty,full:semaphore:=1,1,0;buffer:item;beginparbeginReceive:beginrepeatWait(empty);Wait(mute*);buffer:=ne*tp;Signal(mute*);Signal(full);untilfalseendGet:beginrepeatWait(full);Wait(mute*);ne*tp:=buffer;Signal(mute*);Signal(empty);untilfalseendparendend29、畫(huà)圖說(shuō)明管程由哪幾局部組成?〔P56〕為什么要引入條件變量?〔P57〕【解】如圖:初始化代碼初始化代碼條件〔不忙〕隊(duì)列進(jìn)入隊(duì)列共享數(shù)據(jù)……一組操作進(jìn)程通常,由于等待的原因可能有多個(gè),為了區(qū)別它們,因此引入條件變量。30、如何利用管程來(lái)解決生產(chǎn)者—消費(fèi)者問(wèn)題?〔P60〕【解】首先為它們建立一個(gè)管程,描述如下:Typeproducer-consumer=monitorvarin,out,count:integer;buffer:array[0,,n-1]ofitem;notfull,notempty:condition;procedureentryput(item)beginifcount>=nthennotfull.wait;buffer(in):=ne*tp;in:=(in+1)modn;count:=count+1;ifnotempty.queuethennotempty.signal;endprocedureentryget(item)begin ifcount<=0thennotempyt.wait;ne*tc:=buffer(out);out:=(out+1)modn;count:=count-1;ifnotfull.queuethennotfull.signal;endbeginin:=out:=0;count:=0;end生產(chǎn)者和消費(fèi)者可描述為:producer:beginrepeatproduceaniteminne*tp;PC.put(item);untilfalse;endconsumer:beginrepeatPC.get(item);consumetheiteminne*tcuntilfalse;end31、什么是AND信號(hào)量?試?yán)肁ND信號(hào)量寫(xiě)出生產(chǎn)者—消費(fèi)者問(wèn)題的解法。【解】AND信號(hào)量是指:將進(jìn)程在整個(gè)運(yùn)行過(guò)程中所需的所有臨界資源一次性地全局部配給進(jìn)程,待該進(jìn)程使用完后再一起釋放。只要尚有一個(gè)資源未能分配給該進(jìn)程,其他所有可能為之分配的資源,也不分配給他,即:對(duì)假設(shè)干臨界資源分配,采取原子操作方式,要么全局部配到進(jìn)程,要么一個(gè)也不分配。叫AND信號(hào)量。解法如下:varmute*,empty,full:semaphore:=1,n,0;buffer:array[0,,n-1]ofitem;in,out:integer:=0,0;beginparbeginproducer:beginrepeatproduceaniteminne*tpSwait(empty,mute*);buffer(in):=ne*tp;in:=(in+1)modn;Ssignal(mute*,full);untilfalse;endconsumer:beginrepeatSwait(full,mute*);ne*tc:=buffer(out);out:=(out+1)modn;Ssignal(mute*,empty);consumetheiteminne*tc;untilfalseend;32、什么是信號(hào)量集?試?yán)眯盘?hào)量集寫(xiě)出讀者-寫(xiě)者問(wèn)題的解法。33、試比較進(jìn)程間的低級(jí)與高級(jí)通信工具?!睵65〕34、當(dāng)前有哪幾種高級(jí)通信機(jī)制?〔P65〕【解】共享存儲(chǔ)器系統(tǒng),消息傳遞系統(tǒng),管道通信系統(tǒng)。35、消息隊(duì)列通信機(jī)制有哪幾方面功能?〔P66〕【解】發(fā)送進(jìn)程利用send原語(yǔ),將消息直接發(fā)送給接收進(jìn)程;接收進(jìn)程利用receive原語(yǔ)接收消息。36、為什么要在OS中引入線程?〔P72〕37、試說(shuō)明線程具有哪些屬性?〔P73〕38、試從調(diào)度性、并發(fā)性、擁有資源及系統(tǒng)開(kāi)銷(xiāo)幾個(gè)方面,對(duì)進(jìn)程和線程進(jìn)展比較。【解】〔1〕調(diào)度性在傳統(tǒng)的OS中,擁有資源的根本單位和獨(dú)立調(diào)度、分派的根本單位都是進(jìn)程。而在引入線程的OS中,則把線程作為調(diào)度和分派的根本單位,而把進(jìn)程作為資源擁有的根本單位,使傳統(tǒng)進(jìn)程的兩個(gè)屬性分開(kāi),線程便能輕裝運(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)吞吐量?!?〕擁有資源進(jìn)程是擁有資源的獨(dú)立單位。線程自己使不擁有系統(tǒng)資源,但可訪問(wèn)隸屬進(jìn)程的資源?!?〕系統(tǒng)開(kāi)銷(xiāo)在創(chuàng)立和撤消進(jìn)程時(shí),系統(tǒng)要為之分配或回收資源,所以系統(tǒng)開(kāi)銷(xiāo)要顯著大于在創(chuàng)立和撤消線程的開(kāi)銷(xiāo)。在進(jìn)展進(jìn)程切換時(shí),涉及到整個(gè)當(dāng)前進(jìn)程CPU環(huán)境的保存以及新被調(diào)度運(yùn)行的進(jìn)程的CPU環(huán)境的設(shè)置。而線程切換只須保存和設(shè)置少量存放器的內(nèi)容,并不涉及存儲(chǔ)器管理方面的操作??梢?jiàn),進(jìn)程切換的開(kāi)銷(xiāo)也遠(yuǎn)大于線程切換的開(kāi)銷(xiāo)。此外,由于同一進(jìn)程中的多個(gè)線程具有一樣的地址空間,致使它們之間的同步和通信的實(shí)現(xiàn)也變得比較容易。39、為了在多線程O(píng)S中實(shí)現(xiàn)進(jìn)程之間的同步與通信,通常提供了哪幾種同步機(jī)制?【解】互斥鎖,條件變量,計(jì)數(shù)信號(hào)量,多讀、單寫(xiě)鎖。40、用于實(shí)現(xiàn)線程同步的私用信號(hào)量和公用信號(hào)量之間有何差異?〔P76〕41、何謂用戶(hù)級(jí)線程和內(nèi)核支持線程?〔P77〕【解】用戶(hù)級(jí)線程僅存在于用戶(hù)級(jí)中,它的創(chuàng)立、撤消和切換都不利用系統(tǒng)調(diào)用實(shí)現(xiàn),與內(nèi)核無(wú)關(guān),相應(yīng)的,內(nèi)核也不知道有用戶(hù)級(jí)線程存在。內(nèi)核級(jí)線程依賴(lài)于內(nèi)核,無(wú)論用戶(hù)進(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)的開(kāi)銷(xiāo)要比進(jìn)程的小得多。對(duì)于用戶(hù)級(jí)線程的切換,通常是發(fā)生在一個(gè)應(yīng)用程序的多線程之間,這時(shí),不僅無(wú)須通過(guò)中斷進(jìn)入OS的內(nèi)核,而且切換的規(guī)則也遠(yuǎn)比進(jìn)程調(diào)度和切換的規(guī)則簡(jiǎn)單。例如,當(dāng)一個(gè)線程阻塞后會(huì)自動(dòng)切換到下一個(gè)具有一樣功能的線程,因此,用戶(hù)級(jí)線程的切換速度特別快?!?〕系統(tǒng)調(diào)用當(dāng)傳統(tǒng)的用戶(hù)進(jìn)程調(diào)用一個(gè)系統(tǒng)調(diào)用時(shí),要由用戶(hù)態(tài)轉(zhuǎn)入核心態(tài),用戶(hù)進(jìn)程將被阻塞。當(dāng)內(nèi)核完成系統(tǒng)調(diào)用而返回時(shí),才將該進(jìn)程喚醒,繼續(xù)執(zhí)行。而在用戶(hù)級(jí)線程調(diào)用一個(gè)系統(tǒng)調(diào)用時(shí),由于內(nèi)核并不知道有該用戶(hù)級(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)用一個(gè)系統(tǒng)調(diào)用時(shí),內(nèi)核把系統(tǒng)調(diào)用只看作是該線程的行為,因而阻塞該線程,于是可以再調(diào)度該進(jìn)程中的其他線程執(zhí)行?!?〕線程執(zhí)行時(shí)間對(duì)于只設(shè)置了用戶(hù)級(jí)線程的系統(tǒng),調(diào)度是以進(jìn)程為單位進(jìn)展的。在采用輪轉(zhuǎn)調(diào)度算法時(shí),各個(gè)進(jìn)程輪流執(zhí)行一個(gè)時(shí)間片,這對(duì)諸進(jìn)程而言,似是公平。但假設(shè)在進(jìn)程A中包含了一個(gè)用戶(hù)級(jí)線程,而進(jìn)程B中含有100個(gè)線程,這樣,進(jìn)程A中線程的運(yùn)行時(shí)間,將是進(jìn)程B中各線程運(yùn)行時(shí)間的100倍;相應(yīng)地,速度就快100倍。假設(shè)系統(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、試說(shuō)明用戶(hù)級(jí)線程的實(shí)現(xiàn)方法?!睵77〕43、試說(shuō)明內(nèi)核支持線程的實(shí)現(xiàn)方法?!睵77〕如何保證諸進(jìn)程互斥地訪問(wèn)臨界資源?答:為了互斥地訪問(wèn)臨界資源,系統(tǒng)必須保證進(jìn)程互斥地進(jìn)入臨界區(qū)。為此,必須在臨界區(qū)前增加一段稱(chēng)為進(jìn)入?yún)^(qū)的代碼,以檢查是否有其他進(jìn)程已進(jìn)入臨界區(qū)使用臨界資源。假設(shè)有,則進(jìn)程必須等待;否則,允許進(jìn)程進(jìn)入臨界區(qū),同時(shí)設(shè)置標(biāo)志表示有進(jìn)程正在臨界區(qū)內(nèi)。同樣地,在臨界區(qū)后必須增加一段稱(chēng)作退出區(qū)的代碼,用于將已有進(jìn)程進(jìn)入臨界區(qū)訪問(wèn)臨界資源的標(biāo)志改為無(wú)進(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ā)生而無(wú)法繼續(xù)執(zhí)行時(shí),它仍占有CPU,并通過(guò)不斷地執(zhí)行循環(huán)測(cè)試指令來(lái)等待該事件的完成。"忙等〞的主要缺點(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)系?假設(shè)干同學(xué)去圖書(shū)館借書(shū);兩隊(duì)舉行籃球比賽;流水線生產(chǎn)的各道工序;商品生產(chǎn)和社會(huì)消費(fèi)。答:進(jìn)程之間存在著直接制約和間接制約兩種制約關(guān)系,其中直接制約〔同步〕是由于進(jìn)程間的相互合作而引起的,而間接制約〔互斥〕則是由于進(jìn)程間共享臨界資源而引起的。假設(shè)干同學(xué)去圖書(shū)館借書(shū)是間接制約,其中書(shū)是臨界資源。兩隊(duì)舉行籃球比賽是間接制約,其中籃球是臨界資源。流水線生產(chǎn)的各道工序是直接制約,各道工序間需要相互合作,每道工序的開(kāi)場(chǎng)都依賴(lài)于前一道工序的完成。商品生產(chǎn)和社會(huì)消費(fèi)是直接制約,兩者也需要相互合作:商品生產(chǎn)出來(lái)后才可以被消費(fèi);商品被消費(fèi)后才需要再生產(chǎn)。第二局部選擇題1.在進(jìn)程管理中,當(dāng)C時(shí),進(jìn)程從阻塞狀態(tài)變?yōu)榫途w狀態(tài)。2.分配到必要的資源并獲得處理機(jī)時(shí)的進(jìn)程狀態(tài)是B。3.P、V操作是A。4.設(shè)系統(tǒng)中有n〔n>2〕個(gè)進(jìn)程,且當(dāng)前不在執(zhí)行進(jìn)程調(diào)度程序,試考慮下述4種情況,不可能發(fā)生的情況是A。A.沒(méi)有運(yùn)行進(jìn)程,有2個(gè)就緒進(jìn)程,n個(gè)進(jìn)程處于等待狀態(tài)。B.有1個(gè)運(yùn)行進(jìn)程,沒(méi)有就緒進(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)程,沒(méi)有進(jìn)程處于等待狀態(tài)。5.假設(shè)P、V操作的信號(hào)量S初值為2,當(dāng)前值為-1,則表示有B等待進(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。7.進(jìn)程的三個(gè)根本狀態(tài)在一定條件下可以相互轉(zhuǎn)化,進(jìn)程由運(yùn)行狀態(tài)變?yōu)樽枞麪顟B(tài)的條件是B。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)锳。10.用V操作喚醒一個(gè)等待進(jìn)程時(shí),被喚醒進(jìn)程的狀態(tài)變?yōu)锽。11.操作系統(tǒng)通過(guò)B對(duì)進(jìn)程進(jìn)展管理。A.JCB B.PCB C.DCT D.CHCT12.用P、V操作可以解決A互斥問(wèn)題。A.一切 B.*些 C.正確 D.錯(cuò)誤13.一個(gè)進(jìn)程被喚醒意味著D。A.該進(jìn)程重新占有了CPU B.它的優(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)程存在的唯一標(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ā)生了*事件,使之無(wú)法繼續(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í)行;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í)行空語(yǔ)句〕,則最多可有〔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);假設(shè)進(jìn)程正處于執(zhí)行狀態(tài)時(shí),因終端的請(qǐng)求而暫停下來(lái)以便研究其運(yùn)行情況,這時(shí)進(jìn)程應(yīng)轉(zhuǎn)變?yōu)椤睠〕狀態(tài),假設(shè)進(jìn)程已處于阻塞狀態(tài);則此時(shí)應(yīng)轉(zhuǎn)變?yōu)椤睤〕狀態(tài)。A:〔1〕靜止阻塞;〔2〕活動(dòng)阻塞;〔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〕原語(yǔ);為使進(jìn)程由執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)樽枞麪顟B(tài),應(yīng)利用〔B〕原語(yǔ);為使進(jìn)程由靜止就緒變?yōu)榛顒?dòng)就緒,應(yīng)利用〔C〕原語(yǔ);從阻塞狀態(tài)變?yōu)榫途w狀態(tài)應(yīng)利用〔D〕原語(yǔ)。A:〔1〕create;〔2〕suspend;〔3〕active;〔4〕block;〔5〕wakeup。B:〔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)專(zhuān)門(mén)為運(yùn)行中的應(yīng)用進(jìn)程創(chuàng)立新進(jìn)程的事件是〔C〕。在創(chuàng)立進(jìn)程時(shí),〔D〕不是創(chuàng)立所必需的步驟。A:〔1〕用戶(hù)注冊(cè);〔2〕用戶(hù)登錄;〔3〕用戶(hù)記賬;〔4〕用戶(hù)通信。B:〔1〕作業(yè)錄入;〔2〕作業(yè)調(diào)度;〔3〕進(jìn)程調(diào)度;〔4〕中級(jí)調(diào)度。C:〔1〕分配資源;〔2〕進(jìn)展通信;〔3〕共享資源;〔4〕提供效勞。D:〔1〕為進(jìn)程建立PCB;〔2〕為進(jìn)程分配內(nèi)存等資源;〔3〕為進(jìn)程分配CPU;〔4〕將進(jìn)程插入就緒隊(duì)列。23.從下面對(duì)臨界區(qū)的論述中,選出一條正確的論述?!?〕臨界區(qū)是指進(jìn)程中用于實(shí)現(xiàn)進(jìn)程互斥的那段代碼?!?〕臨界區(qū)是指進(jìn)程中用于實(shí)現(xiàn)進(jìn)程同步的那段代碼。〔3〕臨界區(qū)是指進(jìn)程中用于實(shí)現(xiàn)進(jìn)程通信的那段代碼?!?〕臨界區(qū)是指進(jìn)程中用于訪問(wèn)共享資源的那段代碼?!?〕臨界區(qū)是指進(jìn)程中訪問(wèn)臨界資源的那段代碼。24.進(jìn)程A和B共享同一臨界資源,并且進(jìn)程A正處于對(duì)應(yīng)的臨界區(qū)內(nèi)執(zhí)行。請(qǐng)從以下描述中選擇一條正確的描述。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〕是排他性訪問(wèn)臨界資源。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〕不變;〔2〕加1;〔3〕減1;〔4〕加指定數(shù)值;〔5〕減指定數(shù)值。D:〔1〕大于0;〔2〕小于0;〔3〕大于等于0;〔4〕小于等于0.27.用信號(hào)量S實(shí)現(xiàn)對(duì)系統(tǒng)中4臺(tái)打印機(jī)的互斥使用,S.value的初值應(yīng)設(shè)置為〔A〕,假設(shè)S.value的初值為-1,則表示S.L隊(duì)列中有〔B〕個(gè)等待進(jìn)程。A:〔1〕1;〔2〕0;〔3〕-1;〔4〕4;〔5〕-4B:〔1〕1;〔2〕2;〔3〕3;〔4〕4;〔5〕5;〔6〕6;〔7〕0。28.設(shè)有10個(gè)進(jìn)程共享一個(gè)互斥段,如果最多允許有1個(gè)進(jìn)程進(jìn)入互斥段,則所采用的互斥信號(hào)量初值應(yīng)設(shè)置為〔A〕,而該信號(hào)量的取值范圍為〔B〕;如果最多允許有3個(gè)進(jìn)程同時(shí)進(jìn)入互斥段,則所采用的互斥信號(hào)量初值應(yīng)設(shè)置為〔C〕。A:〔1〕10;〔2〕;3;〔3〕1;〔4〕0。B:〔1〕0~1;〔2〕-1~0;〔3〕1~-9;〔4〕0~-9。C:〔1〕10;〔2〕;3;〔3〕1;〔4〕0。29.在生產(chǎn)者-消費(fèi)者問(wèn)題中,應(yīng)設(shè)置互斥信號(hào)量mute*、資源信號(hào)量full和empty。它們的初值應(yīng)分別為〔A〕、〔B〕、〔C〕。A:〔1〕0;〔2〕1;〔3〕-1;〔4〕-n;〔5〕+n。B:〔1〕0;〔2〕1;〔3〕-1;〔4〕-n;〔5〕+n。C:〔1〕0;〔2〕1;〔3〕-1;〔4〕-n;〔5〕+n。30.對(duì)生產(chǎn)者-消費(fèi)者問(wèn)題的算法描述如下,請(qǐng)選擇正確的答案填入方框中。..>Producer:beginRepeat(A);(B);Buffer(in):=m;In:=(in+1)modn;(C);(D);UntilfalseEndConsumer:beginRepeat(E);(B);M:=buffer(out);Out:=(out+1)modn;(C);(F);UntilfalseendA:(1)wait(mute*);(2)signal(mute*);(3)wait(empty);(4)signal(full);(5)wait(full);(6)signal(empty)。B:(1)wait(mute*);(2)signal(mute*);(3)wait(empty);(4)signal(full);(5)wait(full);(6)signal(empty)。C:(1)wait(mute*);(2)signal(mute*);(3)wait(empty);(4)signal(full);(5)wait(full);(6)signal(empty)。D:(1)wait(mute*);(2)signal(mute*);(3)wait(empty);(4)signal(full);(5)wait(full);(6)signal(empty)。E:(1)wait(mute*);(2)signal(mute*);(3)wait(empty);(4)signal(full);(5)wait(full);(6)signal(empty)。F:(1)wait(mute*);(2)signal(mute*);(3)wait(empty);(4)signal(full);(5)wait(full);(6)signal(empty)。31.試選擇〔A〕~〔D〕,以便能正確地描述圖2.12所示的前趨關(guān)系。S1S2S3S1S2S3S4abcBeginParbeginBeginS1;(A);end;BeginS2;(B);end;BeginWait(a);wait(b);S3;(C);EndBegin(D);S4endParendEndA:(1)signal(a);(2)signal(b);(3)wait(c);(4)signal(c)。B:(1)signal(a);(2)signal(b);(3)wait(c);(4)signal(c)。C:(1)signal(a);(2)signal(b);(3)wait(c);(4)signal(c)。D:(1)signal(a);(2)signal(b);(3)wait(c);(4)signal(c)。32.有兩個(gè)程序:A程序按順序使用CPU10秒、設(shè)備甲5秒、CPU5秒、設(shè)備乙10秒、CPU10秒;B程序按順序使用設(shè)備甲10秒、CPU10秒、設(shè)備乙5秒、CPU5秒、設(shè)備乙10秒。在順序環(huán)境下,執(zhí)行上述程序,CPU的利用率約為〔A〕。假設(shè)允許它們采用非搶占方式并發(fā)執(zhí)行,并且不考慮切換等開(kāi)銷(xiāo),則CPU的利用率約為〔B〕。A〔1〕30%;〔2〕40%;〔3〕50%;〔4〕60%;〔5〕70%;〔6〕80%;〔7〕90%。B〔1〕30%;〔2〕40%;〔3〕50%;〔4〕60%;〔5〕70%;〔6〕80%;〔7〕90%。33.從下面的表達(dá)中選出一條正確的表達(dá):〔1〕操作系統(tǒng)的一個(gè)重要概念是進(jìn)程,不同的進(jìn)程所執(zhí)行的代碼也不同。〔2〕操作系統(tǒng)通過(guò)PCB來(lái)控制和管理進(jìn)程,用戶(hù)進(jìn)程可從PCB中讀出與本身運(yùn)行狀態(tài)相關(guān)的信息?!?〕當(dāng)進(jìn)程由執(zhí)行狀態(tài)變?yōu)榫途w狀態(tài)時(shí),CPU現(xiàn)場(chǎng)信息必須被保存在PCB中?!?〕當(dāng)進(jìn)程申請(qǐng)CPU得不到滿(mǎn)足時(shí),它將處于阻塞狀態(tài)?!?〕進(jìn)程是可與其他程序并發(fā)執(zhí)行的程序在一個(gè)數(shù)據(jù)集合上的運(yùn)行過(guò)程,所以程序段是進(jìn)程存在的唯一標(biāo)志。34.從下面的表達(dá)中選出4條正確的表達(dá):〔1〕一個(gè)進(jìn)程的狀態(tài)發(fā)生變化總會(huì)引起其它一些進(jìn)程的狀態(tài)發(fā)生變化?!?〕進(jìn)程被掛起〔suspend〕后,狀態(tài)變?yōu)樽枞麪顟B(tài)?!?〕信號(hào)量的初值不能為負(fù)數(shù)。〔4〕線程是CPU調(diào)度的根本單位,但不是資源分配的根本單位?!?〕在進(jìn)程對(duì)應(yīng)的代碼中使用wait、signal操作后,可以防止系統(tǒng)發(fā)生死鎖?!?〕管程每次只允許一個(gè)進(jìn)程進(jìn)入。〔7〕wait、signal操作可以解決一切互斥問(wèn)題?!?〕程序的順序執(zhí)行具有不可再現(xiàn)性。35.在引入線程的操作系統(tǒng)中,資源分配和調(diào)度的根本單位是〔A〕,CPU調(diào)度和分配的根本單位是〔B〕。A:〔1〕程序;〔2〕進(jìn)程;〔3〕線程;〔4〕作業(yè)。B:〔1〕程序;〔2〕進(jìn)程;〔3〕線程;〔4〕作業(yè)。36.在三種根本類(lèi)型的操作系統(tǒng)中,都設(shè)置了〔A〕,在批處理系統(tǒng)中還應(yīng)設(shè)置〔B〕;在分時(shí)系統(tǒng)中除了〔A〕以外,通常還設(shè)置了〔C〕,在多處理機(jī)系統(tǒng)中則還需設(shè)置〔D〕。A:〔1〕剝奪調(diào)度;〔2〕作業(yè)調(diào)度;〔3〕進(jìn)程調(diào)度;〔4〕中級(jí)調(diào)度;〔5〕多處理機(jī)調(diào)度。B:〔1〕剝奪調(diào)度;〔2〕作業(yè)調(diào)度;〔3〕進(jìn)程調(diào)度;〔4〕中級(jí)調(diào)度;〔5〕多處理機(jī)調(diào)度。C:〔1〕剝奪調(diào)度;〔2〕作業(yè)調(diào)度;〔3〕進(jìn)程調(diào)度;〔4〕中級(jí)調(diào)度;〔5〕多處理機(jī)調(diào)度。D:〔1〕剝奪調(diào)度;〔2〕作業(yè)調(diào)度;〔3〕進(jìn)程調(diào)度;〔4〕中級(jí)調(diào)度;〔5〕多處理機(jī)調(diào)度。37.在面向用戶(hù)的調(diào)度準(zhǔn)則中,〔A〕是選擇實(shí)時(shí)調(diào)度算法的重要準(zhǔn)則,〔B〕是選擇分時(shí)系統(tǒng)中進(jìn)程調(diào)度算法的重要準(zhǔn)則,〔C〕是批處理系統(tǒng)中選擇作業(yè)調(diào)度算法的重要準(zhǔn)則,而〔D〕準(zhǔn)則則是為了照顧緊急作業(yè)用戶(hù)的要求而設(shè)置的。A:〔1〕響應(yīng)時(shí)間快;〔2〕平均周轉(zhuǎn)時(shí)間短;〔3〕截止時(shí)間的保證;〔4〕優(yōu)先權(quán)高的作業(yè)能獲得優(yōu)先效勞;〔5〕效勞費(fèi)低。B:〔1〕響應(yīng)時(shí)間快;〔2〕平均周轉(zhuǎn)時(shí)間短;〔3〕截止時(shí)間的保證;〔4〕優(yōu)先權(quán)高的作業(yè)能獲得優(yōu)先效勞;〔5〕效勞費(fèi)低。C:〔1〕響應(yīng)時(shí)間快;〔2〕平均周轉(zhuǎn)時(shí)間短;〔3〕截止時(shí)間的保證;〔4〕優(yōu)先權(quán)高的作業(yè)能獲得優(yōu)先效勞;〔5〕效勞費(fèi)低。D:〔1〕響應(yīng)時(shí)間快;〔2〕平均周轉(zhuǎn)時(shí)間短;〔3〕截止時(shí)間的保證;〔4〕優(yōu)先權(quán)高的作業(yè)能獲得優(yōu)先效勞;〔5〕效勞費(fèi)低。38.支持多道程序設(shè)計(jì)的操作系統(tǒng),在運(yùn)行過(guò)程中不斷地選擇新進(jìn)程運(yùn)行來(lái)實(shí)現(xiàn)CPU的共享,但其中〔A〕不是引起操作系統(tǒng)選擇新進(jìn)程的直接原因。A:〔1〕執(zhí)行進(jìn)程的時(shí)間片用完;〔2〕執(zhí)行進(jìn)程出錯(cuò);〔3〕執(zhí)行進(jìn)程要等待*一事件發(fā)生;〔4〕有新進(jìn)程進(jìn)入就緒隊(duì)列。39、一般情況下,互斥信號(hào)量的初值為B。A.0 B.1 C.2 D.4第三局部是非題1.進(jìn)程是動(dòng)態(tài)的概念〔對(duì)〕2.進(jìn)程執(zhí)行需要處理機(jī)〔對(duì)〕3.進(jìn)程是有生命期的〔對(duì)〕4.進(jìn)程是指令的集合〔錯(cuò)〕5.操作系統(tǒng)的一重要概念是進(jìn)程,因此不同進(jìn)程所執(zhí)行的代碼也一定不同〔錯(cuò)〕7.操作系統(tǒng)用PCB管理進(jìn)程,用戶(hù)進(jìn)程可以從PCB中讀出與本身運(yùn)行狀況有關(guān)的信息〔錯(cuò)〕8.進(jìn)程同步是指*些進(jìn)程之間在邏輯上的相互制約關(guān)系〔對(duì)〕9.在一個(gè)只有單個(gè)CPU的計(jì)算機(jī)中,進(jìn)程不能并行操作。錯(cuò)。一個(gè)進(jìn)程在利用CPU運(yùn)行,另一個(gè)進(jìn)程可以同時(shí)進(jìn)展I/O操作,它們是并行的。10.線程可以分為內(nèi)核級(jí)〔KernelThread〕和用戶(hù)級(jí)〔UserThread〕兩種,操作系統(tǒng)不可以直接調(diào)度用戶(hù)級(jí)的線程。對(duì)。第四局部填空題1.信號(hào)量的物理意義是當(dāng)信號(hào)量值大于零時(shí)表示可用資源的數(shù)目;當(dāng)信號(hào)量值小于零時(shí),其絕對(duì)值為因請(qǐng)求該資源而被阻塞的進(jìn)程數(shù)目。2.臨界資源的概念是一次僅允許一個(gè)進(jìn)程訪問(wèn)的資源,而臨界區(qū)是指進(jìn)程中訪問(wèn)臨界資源的那段程序代碼。3.進(jìn)程在運(yùn)行過(guò)程中有三種根本狀態(tài),它們是運(yùn)行、就緒、等待。4.進(jìn)程主要由程序段、數(shù)據(jù)段、PCB三局部?jī)?nèi)容組成,其中PCB是進(jìn)程存在的唯一標(biāo)志。而程序段局部也可以為其他進(jìn)程共享。5.系統(tǒng)中各進(jìn)程之間邏輯上的相互制約關(guān)系稱(chēng)為進(jìn)程同步。6.假設(shè)一個(gè)進(jìn)程已進(jìn)入臨界區(qū),其他欲進(jìn)入臨界區(qū)的進(jìn)程必須等待。7.將進(jìn)程的PCB鏈接在一起就形成了進(jìn)程隊(duì)列。8.用P、V操作管理臨界區(qū)時(shí),任何一個(gè)進(jìn)程在進(jìn)入臨界區(qū)之前應(yīng)調(diào)用P操作,退出臨界區(qū)時(shí)應(yīng)調(diào)用V操作。9.在多道程序系統(tǒng)中,進(jìn)程之間存在著的不同制約關(guān)系可以劃分為兩類(lèi):同步與互斥。同步指進(jìn)程間具有的一定邏輯關(guān)系;互斥是指進(jìn)程間在使用共享資源方面的約束關(guān)系。10.程序順序執(zhí)行時(shí)有順序性、封閉性和可再現(xiàn)性的特點(diǎn)。11.有m個(gè)進(jìn)程共享同一臨界資源,假設(shè)使用信號(hào)量機(jī)制實(shí)現(xiàn)對(duì)臨界資源的互斥訪問(wèn),則信號(hào)量值的變化范圍是1~-〔m-1〕。12.在一個(gè)單處理機(jī)系統(tǒng)中,假設(shè)有5個(gè)用戶(hù)進(jìn)程,且假設(shè)當(dāng)前時(shí)刻為用戶(hù)態(tài),則處于就緒狀態(tài)的用戶(hù)進(jìn)程最多有4個(gè),最少有0個(gè)。13、在單用戶(hù)單任務(wù)環(huán)境下,用戶(hù)獨(dú)占全機(jī),此時(shí)機(jī)內(nèi)資源的狀態(tài),只能由運(yùn)行程序的操作加以改變,此時(shí)的程序執(zhí)行具有封閉性性和可再現(xiàn)性性特征。14、并發(fā)進(jìn)程之間的相互制約,是由于它們的共享資源和相互合作而產(chǎn)生的,因而導(dǎo)致程序在并發(fā)執(zhí)行時(shí)具有連續(xù)性或異步性特征。15、程序并發(fā)執(zhí)行與順序執(zhí)行時(shí)相比產(chǎn)生了一些新特征,分別是、和。連續(xù)性、失去封閉性、不可再現(xiàn)性16、引入進(jìn)程的目的是,而引入線程的目的是。使程序能正確地并發(fā)執(zhí)行,以提高資源利用率和系統(tǒng)吞吐量;減少并發(fā)執(zhí)行的開(kāi)銷(xiāo),提高程序執(zhí)行的并發(fā)程度。17、進(jìn)程由、和組成,其中是進(jìn)程存在的唯一標(biāo)志。PCB、程序段、數(shù)據(jù)段、PCB18、進(jìn)程最根本的特征是和,除此之外,它還有、和特征。動(dòng)態(tài)性、并發(fā)性、獨(dú)立特征、異步性、構(gòu)造19、由于進(jìn)程的實(shí)質(zhì)是程序的一次執(zhí)行,故進(jìn)程有的根本特征,該特征還表現(xiàn)在進(jìn)程由而產(chǎn)生,由而執(zhí)行,由而消亡,即進(jìn)程具有一定的生命期。動(dòng)態(tài)性,創(chuàng)立,調(diào)度,撤銷(xiāo)20、引入進(jìn)程帶來(lái)的好處是和。提高資源利用率,增加系統(tǒng)吞吐量21、當(dāng)前正在執(zhí)行的進(jìn)程由于時(shí)間片用完而暫停執(zhí)行時(shí),該進(jìn)程應(yīng)轉(zhuǎn)變?yōu)闋顟B(tài);假設(shè)因發(fā)生*種事件而不能繼續(xù)執(zhí)行時(shí),應(yīng)轉(zhuǎn)為狀態(tài);假設(shè)應(yīng)終端用戶(hù)的請(qǐng)求而暫停執(zhí)行時(shí),它應(yīng)轉(zhuǎn)為狀態(tài)。就緒,阻塞,靜止就緒22、用戶(hù)為阻止進(jìn)程繼續(xù)運(yùn)行,應(yīng)利用原語(yǔ),假設(shè)進(jìn)程正在執(zhí)行,應(yīng)轉(zhuǎn)為狀態(tài);以后,假設(shè)用戶(hù)要恢復(fù)其運(yùn)行,應(yīng)利用原語(yǔ),此時(shí)進(jìn)程應(yīng)轉(zhuǎn)為狀態(tài)。 掛起;靜止就緒;激活;活動(dòng)就緒23、系統(tǒng)中共有5個(gè)用戶(hù)進(jìn)程,且當(dāng)前CPU在用戶(hù)態(tài)下執(zhí)行,則最多可有個(gè)用戶(hù)進(jìn)程處于就緒狀態(tài),最多可有個(gè)用戶(hù)進(jìn)程處于阻塞狀態(tài);假設(shè)當(dāng)前在核心態(tài)下執(zhí)行,則最多可有個(gè)用戶(hù)進(jìn)程處于就緒狀態(tài),最多可有個(gè)用戶(hù)進(jìn)程處于阻塞狀態(tài)。4,4,5,524、同步機(jī)制應(yīng)遵循的準(zhǔn)則:、、和。空閑讓進(jìn)、忙則等待、有限等待、讓權(quán)等待25、在記錄型信號(hào)量機(jī)制中,S.value>0時(shí)的值表示;每次wait操作意味著,因此應(yīng)將S.value,當(dāng)S.value時(shí),進(jìn)程應(yīng)阻塞??捎玫呐R界資源數(shù)量;申請(qǐng)一個(gè)臨界資源;減1;小于026、在記錄型信號(hào)量機(jī)制中,每次signal操作意味著,因此應(yīng)將S.value,當(dāng)S.value<=0時(shí),表示,此時(shí)應(yīng)。釋放一個(gè)臨界資源,加1,仍有請(qǐng)求該資源的進(jìn)程被阻塞;喚醒相應(yīng)阻塞隊(duì)列中的首進(jìn)程27、在利用信號(hào)量實(shí)現(xiàn)進(jìn)程互斥時(shí),應(yīng)將置于和之間。臨界區(qū),wait操作,signal操作28、在每個(gè)進(jìn)程中訪問(wèn)的那段代碼稱(chēng)為臨界區(qū)。為實(shí)現(xiàn)對(duì)它的共享,應(yīng)保證進(jìn)程進(jìn)入自己的臨界區(qū),為此,在每個(gè)進(jìn)程的臨界區(qū)前應(yīng)設(shè)置,臨界區(qū)后應(yīng)設(shè)置。臨界資源,互斥,進(jìn)入?yún)^(qū),退出區(qū)29、進(jìn)程通信的類(lèi)型有、、三類(lèi),其中利用共享文件進(jìn)展通信。共享存儲(chǔ)器、消息系統(tǒng)、管道通信、管道通信30、為實(shí)現(xiàn)消息緩沖隊(duì)列通信,應(yīng)在PCB中增加、、三個(gè)數(shù)據(jù)項(xiàng)。消息隊(duì)列首指針mq;消息隊(duì)列互斥信號(hào)量mute*;消息隊(duì)列資源信號(hào)量sm31.在直接通信方式中,系統(tǒng)通常提供的兩條通信原語(yǔ)如下,請(qǐng)選擇適當(dāng)?shù)膮?shù)填入。Send((A),(B));Receive((C),(B));A:〔1〕sender;〔2〕receiver;〔3〕te*t;〔4〕message;〔5〕mailbo*。B:〔1〕sender;〔2〕receiver;〔3〕te*t;〔4〕message;〔5〕mailbo*。C:〔1〕sender;〔2〕receiver;〔3〕te*t;〔4〕message;〔5〕mailbo*。32.使用mail命令的信箱通信屬于〔A〕,因?yàn)樾畔⑹潜话l(fā)送到接收方的〔B〕中;使用write命令,實(shí)現(xiàn)的是〔C〕通信,因?yàn)樾畔⑹潜话l(fā)送到接收方的〔D〕中;使用共享文件進(jìn)展通信的方式屬于〔E〕通信。A:〔1〕共享存儲(chǔ)器;〔2〕實(shí)時(shí)通信;〔3〕消息緩沖通信;〔4〕非實(shí)時(shí)通信;〔5〕管道通信。B:〔1〕消息緩沖隊(duì)列;〔2〕內(nèi)存;〔3〕信箱;〔4〕消息緩沖區(qū);〔5〕屏幕;〔6〕共享存儲(chǔ)器。C:〔1〕共享存儲(chǔ)器;〔2〕實(shí)時(shí)通信;〔3〕消息緩沖通信;〔4〕非實(shí)時(shí)通信;〔5〕管道通信。D:〔1〕消息緩沖隊(duì)列;〔2〕內(nèi)存;〔3〕信箱;〔4〕消息緩沖區(qū);〔5〕屏幕;〔6〕共享存儲(chǔ)器。E:〔1〕共享存儲(chǔ)器;〔2〕實(shí)時(shí)通信;〔3〕消息緩沖通信;〔4〕非實(shí)時(shí)通信;〔5〕管道通信。33、在采用用戶(hù)級(jí)線程的系統(tǒng)中,OS進(jìn)展CPU調(diào)度的對(duì)象是;在采用內(nèi)核支持線程的系統(tǒng)中,CPU調(diào)度的對(duì)象是。進(jìn)程,線程34、線程之所以能減少并發(fā)執(zhí)行的開(kāi)銷(xiāo)是因?yàn)?。線程根本不擁有資源35、進(jìn)程通信的常用方式有直接通信和間接通信等。36、如果P(S1)和P(S2)兩個(gè)操作在一起,則P操作的順序至關(guān)重要,一個(gè)同步P操作與一個(gè)互斥P操作在一起時(shí)同步P操作在互斥P操作前。而兩個(gè)V操作的次序無(wú)關(guān)緊要。37、P(S):表示申請(qǐng)一個(gè)資源;V(S)表示釋放一個(gè)資源。信號(hào)量的初值應(yīng)該大于等于0。38、P、V操作當(dāng)為互斥操作時(shí),它們同處于同一進(jìn)程;當(dāng)為同步操作時(shí),則不在同一進(jìn)程中出現(xiàn)。39、臨界資源是指系統(tǒng)中一次只允許一個(gè)進(jìn)程使用的資源,而臨界區(qū)是指涉及到臨界資源的代碼段。40、I/O型進(jìn)程是指花費(fèi)I/O時(shí)間多于計(jì)算的進(jìn)程,而CPU型進(jìn)程是指花費(fèi)計(jì)算多于I/O時(shí)間的進(jìn)程。41、當(dāng)時(shí)間片輪轉(zhuǎn)算法的時(shí)間片足夠大時(shí),這個(gè)算法就等同于FIFO算法。42、P\V操作必須成對(duì)出現(xiàn),有一個(gè)P操作就一定有一個(gè)V操作。43、臨界資源是指系統(tǒng)中一次只允許一個(gè)進(jìn)程使用的資源,而臨界區(qū)是指涉及到臨界資源的代碼段。第五局部解析題1.進(jìn)程的定義是什么?它最少有哪幾種狀態(tài)?2.進(jìn)程與線程的主要區(qū)別是什么?3、 什么是進(jìn)程的互斥與同步?同步和互斥這兩個(gè)概念有什么聯(lián)系和區(qū)別?解:〔1〕 同步:兩個(gè)事件的發(fā)生有著*種時(shí)序上的關(guān)系,進(jìn)程間的同步關(guān)系是指系統(tǒng)中往往有幾個(gè)進(jìn)程共同完成一個(gè)任務(wù);〔2〕 互斥是進(jìn)程間的另外一種關(guān)系。由于各進(jìn)程要共享資源。而有些資源往往要求排他性地使用;〔3〕 互斥是一種特殊的同步關(guān)系。S4S3S4S3S2S1解:圖說(shuō)明任務(wù)啟動(dòng)后S1先執(zhí)行。當(dāng)S1完畢后,S2、S3可以開(kāi)場(chǎng)執(zhí)行。S2、S3完成后,S4才能開(kāi)場(chǎng)執(zhí)行。為了確保這一執(zhí)行順序,設(shè)3個(gè)同步信號(hào)量b2、b3、b4分別表示進(jìn)程S2、S3、S4是否可以開(kāi)場(chǎng)執(zhí)行,其初值均為0。進(jìn)程同步描述如下://可用兩種方法來(lái)解決//S1不必判斷能否開(kāi)場(chǎng)//b2、b3、b4起初全部為0,表示都不可開(kāi)場(chǎng)intb2=0;//表示進(jìn)程S2是否可以開(kāi)場(chǎng)執(zhí)行intb3=0;//表示進(jìn)程S3是否可以開(kāi)場(chǎng)執(zhí)行intb4=0;//表示進(jìn)程S4是否可以開(kāi)場(chǎng)執(zhí)行//也可分為b42、b43main(){ cobegin S1();S2();S3();S4();Coend}S1(){…v(b2);v(b3);}S2(){ p(b2);…v(b4);//v(b42)}S3(){ p(b3);…v(b4);//v(b43)}S4(){//因?yàn)樵赟2及S3完成時(shí)均對(duì)b4做了v操作,因此這里要用兩個(gè)p操作 p(b4);//p(b42) p(b4);//p(b43)…}5.桌上有一空盤(pán),允許存放一只水果。爸爸可向盤(pán)中放蘋(píng)果,也可向盤(pán)中放桔子,兒子專(zhuān)等吃盤(pán)中的桔子,女兒專(zhuān)等吃盤(pán)中的蘋(píng)果。規(guī)定當(dāng)盤(pán)空時(shí)一次只能放一只水果供吃者取用,請(qǐng)用P、V原語(yǔ)實(shí)現(xiàn)爸爸、兒子、女兒三個(gè)并發(fā)進(jìn)程的同步。解:設(shè)置3個(gè)信號(hào)量S、SO、SA,信號(hào)量S表示盤(pán)子是否為空,其初值為1;信號(hào)量SO表示盤(pán)中是否有桔子,其初值為0;信號(hào)量SA表示盤(pán)中是否有蘋(píng)果,其初值為0。同步描述:intS=1;intSA=0;intSO=0;main(){ cobegin father(); son(); daughter(); coend}father(){ while(1){ p(S);//盤(pán)子是否空將水果放入盤(pán)中; if(放入的是桔子)v(SO);//變形 elsev(Sa)//很少有學(xué)生如此做!而這卻是此題的關(guān)鍵}}son(){ while(1){ p(SO);//盤(pán)子中有無(wú)桔子從盤(pán)中取出桔子; v(S);吃桔子;}}daughter(){ while(1){ p(SA);//盤(pán)子中有無(wú)蘋(píng)果從盤(pán)中取出蘋(píng)果; v(S);吃蘋(píng)果;}}6.在單處理機(jī)的分時(shí)系統(tǒng)中,分配給進(jìn)程P的時(shí)間片用完后,系統(tǒng)進(jìn)展切換,結(jié)果調(diào)度到的仍然是進(jìn)程P。有可能出現(xiàn)上述情形嗎?如果可能請(qǐng)說(shuō)明理由。解:有可能出現(xiàn)上述情況。例如,假設(shè)在進(jìn)程P時(shí)間片用完后,被迫回到就緒隊(duì)列時(shí),就緒隊(duì)列為空,這樣進(jìn)程P就是就緒隊(duì)列中唯一的一個(gè)進(jìn)程,于是調(diào)度程序選中的進(jìn)程必然是進(jìn)程P;又如在按優(yōu)先級(jí)調(diào)度的系統(tǒng)中,就緒隊(duì)列按進(jìn)程優(yōu)先級(jí)排列,在進(jìn)程P時(shí)間片用完之后回到就緒隊(duì)列時(shí),假設(shè)其優(yōu)先級(jí)高于當(dāng)前隊(duì)列中的其他進(jìn)程,則它將排在就緒隊(duì)列之首,從而再次被調(diào)度程序選中并投入運(yùn)行。7.哲學(xué)家甲請(qǐng)哲學(xué)家乙、丙、丁到*處討論問(wèn)題,約定全體到齊后開(kāi)場(chǎng)討論問(wèn)題;在討論的間隙4位哲學(xué)家進(jìn)餐,每人進(jìn)餐時(shí)都需使用刀、叉各一把,餐桌上的布置如圖。請(qǐng)用信號(hào)量及P、V操作說(shuō)明這4位哲學(xué)家的同步、互斥過(guò)程。解:在此題中,應(yīng)設(shè)置4個(gè)信號(hào)量fork1、fork2、knife1、knife2,其初值均為1,分別表示資源叉1、叉2、刀1、刀2是否可用。同步描述如下:intfork1=1;intfork2=1;intknife1=1;intknife2=1;main(){ cobegin Pa(); Pb(); Pc(); Pd(); Coend}Pa(){ while(1) { p(knife1); p(fork1);進(jìn)餐;v(knife1); v(fork1);討論問(wèn)題; }}Pb(){ while(1) { p(knife2); p(fork1);進(jìn)餐;v(knife2); v(fork1);討論問(wèn)題; }}Pc(){ while(1) { p(knife2); p(fork2);進(jìn)餐;v(knife2); v(fork2);討論問(wèn)題; }}Pd(){ while(1) { p(knife1); p(fork2);進(jìn)餐;v(knife1); v(fork2);討論問(wèn)題; }}8.請(qǐng)用信號(hào)量實(shí)現(xiàn)對(duì)*數(shù)據(jù)庫(kù)的讀者-寫(xiě)者互斥。要求:〔1〕讀者與寫(xiě)者之間互斥,寫(xiě)者與寫(xiě)者之間互斥?!?〕讀者之間不互斥。解:此題是讀者-寫(xiě)者問(wèn)題。在此題中,允許讀進(jìn)程同時(shí)讀數(shù)據(jù)庫(kù),但寫(xiě)進(jìn)程正在寫(xiě)數(shù)據(jù)庫(kù)時(shí)不允許其他進(jìn)程讀該數(shù)據(jù)庫(kù),也不允許其他進(jìn)程寫(xiě)該數(shù)據(jù)庫(kù)。為了解決讀、寫(xiě)進(jìn)程之間的同步,應(yīng)該設(shè)置2個(gè)信號(hào)量和一個(gè)共享變量:讀互斥信號(hào)量rmute*,用于使讀進(jìn)程互斥地訪問(wèn)共享變量count,其初值為1;寫(xiě)互斥信號(hào)量wmute*,用于實(shí)現(xiàn)寫(xiě)進(jìn)程與讀進(jìn)程的互斥及寫(xiě)進(jìn)程與寫(xiě)進(jìn)程的互斥,其初值為1;共享變量count,用于記錄當(dāng)前正在讀數(shù)據(jù)庫(kù)的讀進(jìn)程數(shù)目,初值為0。其工作過(guò)程描述如下:Semaphorermute*=1;Semaphorewmute*=1;Intcount=0;Main(){CobeginReader();Writer();Coend}Reader(){While(true){P(rmute*);If(count==0)p(wmute*);Count++;V(rmute*);讀數(shù)據(jù)庫(kù);P(rmute*);Count--;If(count==0)v(wmute*);V(rmute*);}}Writer(){While(true){P(wmute*);寫(xiě)數(shù)據(jù)庫(kù);V(wmute*);}}注意:正確理解信號(hào)量rmute*的意義是理解讀者-寫(xiě)者問(wèn)題的關(guān)鍵。Rmute*是一個(gè)互斥信號(hào)量,用于使讀進(jìn)程互斥地訪問(wèn)共享變量count。信號(hào)量rmute*并不表示讀進(jìn)程的數(shù)目,表示讀進(jìn)程數(shù)目的是共享變量count。當(dāng)一個(gè)讀進(jìn)程要讀數(shù)據(jù)庫(kù)時(shí),應(yīng)將讀進(jìn)程計(jì)數(shù)count增加1;如果此前〔count加1以前〕數(shù)據(jù)庫(kù)中無(wú)讀進(jìn)程,還應(yīng)對(duì)寫(xiě)互斥信號(hào)量wmute*做p操作,這樣,假設(shè)數(shù)據(jù)庫(kù)中無(wú)寫(xiě)進(jìn)程則通過(guò)p操作阻止后續(xù)寫(xiě)進(jìn)程寫(xiě),假設(shè)數(shù)據(jù)庫(kù)中有寫(xiě)進(jìn)程,則通過(guò)p操作讓讀進(jìn)程等
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 溝槽砂石墊層施工方案
- 液壓鋼板壩施工方案
- 端墻施工方案
- TSHAEPI 001-2022 凈味環(huán)保瀝青氣態(tài)污染物減排性能技術(shù)要求
- DLT-637-1997-閥控式密封鉛酸蓄電池訂貨技術(shù)條件
- 二零二五年度設(shè)備安裝安全協(xié)議及設(shè)備安裝驗(yàn)收證書(shū)
- 二零二五年度房地產(chǎn)租賃稅務(wù)籌劃與合同管理服務(wù)協(xié)議
- 二零二五年度住宅及地下室使用權(quán)租賃合同
- 2025年度智能化綠植養(yǎng)護(hù)服務(wù)合同協(xié)議書(shū)模板
- 二零二五年度珠寶店電子商務(wù)平臺(tái)合作開(kāi)發(fā)合同
- FMEA第五版表格(實(shí)例)
- 【講座】情境性試題:基于《中國(guó)高考評(píng)價(jià)體系》的高考語(yǔ)文命題研究
- 環(huán)??己嗽嚲?8285(含答案)
- SMED培訓(xùn)材料-快速換模
- HG20592-2009法蘭(PL)法蘭蓋(BL)精加工尺寸
- 叉車(chē)蓄電池容量與鐵箱規(guī)格表
- 風(fēng)管、水管支架估算表
- 淺談小學(xué)低年級(jí)數(shù)學(xué)計(jì)算課堂教學(xué)的有效策略
- scratch趣味編程社團(tuán)活動(dòng)方案活動(dòng)計(jì)劃
- 如何從事完美事業(yè)
- 本科教學(xué)工作審核評(píng)估匯報(bào)PPT課件
評(píng)論
0/150
提交評(píng)論