計算機(jī)操作系統(tǒng)習(xí)題及答案_第1頁
計算機(jī)操作系統(tǒng)習(xí)題及答案_第2頁
計算機(jī)操作系統(tǒng)習(xí)題及答案_第3頁
計算機(jī)操作系統(tǒng)習(xí)題及答案_第4頁
計算機(jī)操作系統(tǒng)習(xí)題及答案_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第4章進(jìn)程同步與通信1)選擇題(1)在操作系統(tǒng)中,P、V操作是一種_D__。A.機(jī)器指令B.系統(tǒng)調(diào)用命令C.作業(yè)控制命令D.低級進(jìn)程通信原語(2)若信號量S的初值為2,當(dāng)前值為-1,則表示有_B__等待進(jìn)程。A.0個B.l個C.2個D.3個(3)在直接通信方式中,系統(tǒng)提供兩條通信原語進(jìn)行發(fā)送和接收,其中Send原語中參數(shù)應(yīng)是_C_。A.sender,messageB.sender,mailboxC.receiver,messageD.receiver,mailbox(4)下述那個選項不是管程的組成部分_A__。A.管程外過程調(diào)用管程內(nèi)數(shù)據(jù)結(jié)構(gòu)的說明B.管程內(nèi)對數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作的一組過程C.局部于管程的共享數(shù)據(jù)說明D.對局部于管程的數(shù)據(jù)結(jié)構(gòu)設(shè)置初值的語句(5)某通信方式通過共享存儲區(qū)來實現(xiàn),其屬于_D__。A.消息通信B.低級通信C.管道通信D.高級通信(6)用P、V操作管理臨界區(qū)時,信號量的初值應(yīng)定義為__C__。A.-1B.0C.1D.任意值(7)臨界區(qū)是_B__。A.一個緩沖區(qū)B.一段程序C.一段共享數(shù)據(jù)區(qū)D.一個互斥資源(8)信箱通信是一種_D__通信方式。A.直接通信B.信號量C.低級通信D.間接通信(9)對于兩個并發(fā)進(jìn)程,設(shè)互斥信號量為mutex,若mutex=0則__A_。A.表示有一個進(jìn)程進(jìn)入臨界區(qū)B.表示沒有進(jìn)程進(jìn)入臨界區(qū)C.表示有一個進(jìn)程進(jìn)入臨界區(qū),另一個進(jìn)程等待進(jìn)入D.表示有兩個進(jìn)程進(jìn)入臨界區(qū)(10)對信號量S執(zhí)行V操作后,下述選項正確的是_C__。A.當(dāng)S小于等于0時喚醒一個阻塞進(jìn)程B.當(dāng)S小于0時喚醒一個阻塞進(jìn)程C.當(dāng)S小于等于0時喚醒一個就緒進(jìn)程D.當(dāng)S小于0時喚醒一個就緒進(jìn)程(11)在消息緩沖通信中,消息隊列屬于_A__資源。A.臨界B.共享C.永久D.可剝奪(12)在消息緩沖通信機(jī)制中,使用的臨界資源是_D__。A.信箱B.消息隊列中的某個緩沖區(qū)C.管道D.整個消息隊列2)填空題(1)信號量的物理意義是:當(dāng)信號量值大于0時表示可用資源的個數(shù);當(dāng)信號量值小于0時,其絕對值為等待該信號量的進(jìn)程數(shù)。(2)如果信號量的當(dāng)前值為-4,則表示系統(tǒng)中在該信號量上有__4__個等待進(jìn)程。(3)對于信號量可以做P操作和V操作,P操作用于阻塞進(jìn)程,V操作用于釋放進(jìn)程。程序中的P和V操作應(yīng)謹(jǐn)慎使用,以保證其使用的正確性,否則執(zhí)行時可能發(fā)生死鎖。(4)有m個進(jìn)程共享同一臨界資源,若使用信號量機(jī)制實現(xiàn)對臨界資源的互斥訪問,則信號量值的變化范圍是_[-(m-1),1]_。(5)管程由局部于管程(資源對象)的共享變量的說明、對管程(資源對象)數(shù)據(jù)進(jìn)行操作的一組過程和對局部于管程的數(shù)據(jù)設(shè)置初始值的語句三部分組成。(6)訪問臨界資源的進(jìn)程應(yīng)該遵循的條件有:空閑讓進(jìn)、忙則等待、有限等待和讓權(quán)等待。(7)每個信箱可以包含信箱頭和信箱體兩部分。(8)為了實現(xiàn)消息緩沖通信,在PCB中應(yīng)增加的數(shù)據(jù)項有消息隊列中消息資源的信號量、對消息隊列互斥操作的信號量和指向消息隊列的指針。3)解答題(1)什么是臨界資源?什么是臨界區(qū)?對臨界資源的訪問有哪些原則?答:一次僅允許一個進(jìn)程使用的共享資源被稱為臨界資源。每個進(jìn)程中訪問臨界資源的那段程序稱為臨界區(qū)。對臨界資源的訪問原則是:①空閑讓進(jìn),如果有若干進(jìn)程要求進(jìn)入空閑的臨界區(qū),一次僅允許一個進(jìn)程進(jìn)入。②忙則等待,任何時候,處于臨界區(qū)內(nèi)的進(jìn)程不可多于一個。如已有進(jìn)程進(jìn)入自己的臨界區(qū),則其它所有試圖進(jìn)入臨界區(qū)的進(jìn)程必須等待。③有限等待,進(jìn)入臨界區(qū)的進(jìn)程要在有限時間內(nèi)退出,以便其它進(jìn)程能及時進(jìn)入自己的臨界區(qū)。④讓權(quán)等待,如果進(jìn)程不能進(jìn)入自己的臨界區(qū),則應(yīng)讓出CPU,避免進(jìn)程出現(xiàn)“忙等”現(xiàn)象。(2)請給出P、V操作的定義。如何用P、V操作實現(xiàn)進(jìn)程間的互斥?解:P原語操作的動作是:①sem減1;②若sem減1后仍大于或等于零,則進(jìn)程繼續(xù)執(zhí)行;③若sem減1后小于零,則該進(jìn)程被阻塞后進(jìn)入與該信號相對應(yīng)的隊列中,然后轉(zhuǎn)進(jìn)程調(diào)度。V原語操作的動作是:①sem加1;②若相加結(jié)果大于零,則進(jìn)程繼續(xù)執(zhí)行;③若相加結(jié)果小于或等于零,則從該信號的等待隊列中喚醒一等待進(jìn)程,然后再返回原進(jìn)程繼續(xù)執(zhí)行或轉(zhuǎn)進(jìn)程調(diào)度。由于用于互斥的信號量sem與所有的并發(fā)進(jìn)程有關(guān),所以稱之為公有信號量。公有信號量的值反映了公有資源的數(shù)量。只要把臨界區(qū)置于P(sem)和V(sem)之間,即可實現(xiàn)進(jìn)程間的互斥,sem的初值通常設(shè)置成1。使用P、V操作實現(xiàn)進(jìn)程互斥時應(yīng)該注意的是:①每個程序中用戶實現(xiàn)互斥的P、V操作必須成對出現(xiàn),先做P操作,進(jìn)臨界區(qū),后做V操作,出臨界區(qū)。若有多個分支,要認(rèn)真檢查其成對性。②P、V操作應(yīng)分別緊靠臨界區(qū)的頭尾部,臨界區(qū)的代碼應(yīng)盡可能短,不能有死循環(huán)。③互斥信號量的初值一般為1。(3)請用P、V操作寫出一個不會出現(xiàn)死鎖的哲學(xué)家進(jìn)餐問題的解?解:至多只允許四個哲學(xué)家同時進(jìn)餐,以保證至少有一個哲學(xué)家能夠進(jìn)餐,最終總會釋放出他所使用過的兩支筷子,從而可使更多的哲學(xué)家進(jìn)餐。以下將room作為信號量,只允許4個哲學(xué)家同時進(jìn)入餐廳就餐,這樣就能保證至少有一個哲學(xué)家可以就餐,而申請進(jìn)入餐廳的哲學(xué)家進(jìn)入room的等待隊列,根據(jù)FIFO的原則,總會進(jìn)入到餐廳就餐,因此不會出現(xiàn)餓死和死鎖的現(xiàn)象。semaphorechopstick[5]={1,1,1,1,1};semaphoreroom=4;voidphilosopher(inti){while(true){think();wait(room);//請求進(jìn)入房間進(jìn)餐wait(chopstick[i]);//請求左手邊的筷子wait(chopstick[(i+1)%5]);//請求右手邊的筷子eat();signal(chopstick[(i+1)%5]);//釋放右手邊的筷子signal(chopstick[i]);//釋放左手邊的筷子signal(room);//退出房間釋放信號量room}}(此題有多種解法。)(4)高級進(jìn)程通信方式有哪幾類?各自如何實現(xiàn)進(jìn)程間通信?答:高級進(jìn)程通信方式可以分為三大類:共享存儲器系統(tǒng)、消息傳遞系統(tǒng)以及管道通信系統(tǒng)。在共享存儲區(qū)系統(tǒng)中,進(jìn)程通過共享內(nèi)存中的存儲區(qū)來實現(xiàn)通信。在消息傳遞系統(tǒng)中,進(jìn)程間的數(shù)據(jù)交換以消息為單位,程序員直接利用系統(tǒng)提供的一組通信命令(原語)來實現(xiàn)通信。管道是用于連接讀進(jìn)程和寫進(jìn)程以實現(xiàn)它們之間通信的共享文件,向管道提供輸入的發(fā)送進(jìn)程(即寫進(jìn)程)以字符流形式將大量的數(shù)據(jù)送入管道,而接收管道輸出的接收進(jìn)程(即讀進(jìn)程)可以從管道中接收數(shù)據(jù)。(5)設(shè)有6個進(jìn)程P1、P2、P3、P4、P5、P6,它們有如圖3.5所示的并發(fā)關(guān)系。試用P、V操作實現(xiàn)這些進(jìn)程間的同步。圖3.5六個合作進(jìn)程的并發(fā)關(guān)系圖3.5六個合作進(jìn)程的并發(fā)關(guān)系解:semaphorea,b,c,d,e,f=0,0,0,0,0,0;{cobeginP1;P2;P3;P4;P5;P6;coend}P1(){P1;V(a);V(b);}P2(){P(a);P2;V(c);}P3(){P(b);P3;V(d);}P4(){P(c);P4;V(e);}P5(){P(d);P5;V(f);}P6(){P(e);P(f);P6;}(6)有一個單向行駛的公路橋,每次只允許一輛汽車通過。當(dāng)汽車到達(dá)橋頭時,若橋上無車,便可上橋;否則需等待,直到橋上的汽車下橋為止。若每一輛汽車為一個進(jìn)程,請用P、V操作保證汽車按要求過橋。解:本題中使用一個信號量m用于互斥過河,因為每次允許一輛汽車通過,所以m初值為1。semaphorem=1;main(){cobeginpassi();coend}passi(){P(m);Passtheriver;V(m);}passi表示第i輛汽車。(7)有3個并發(fā)進(jìn)程R、M、P,它們共享了一個可循環(huán)使用的緩沖區(qū)B,緩沖區(qū)B共有n個單元。進(jìn)程R負(fù)責(zé)從輸入設(shè)備讀信息,每讀一個字符后,把它存入到緩沖區(qū)B的一個單元中;進(jìn)程M負(fù)責(zé)處理讀入的字符;進(jìn)程P負(fù)責(zé)把處理后的字符取出并打印輸出。只有當(dāng)緩沖區(qū)單元中的字符被進(jìn)程P取出后,才又可用來存放下一次讀入的字符。請用P、V操作為同步機(jī)制寫出它們能正確并發(fā)執(zhí)行的程序。解:semaphorebuffer_number=n;semaphorechar_number=0;semaphoreman_number=0;main(){cobeginR;M;P;coend}R(){while(true){P(buffer_number);readachartobuffer;V(char_number);}}M(){while(true){P(char_number);manipulateachar;V(man_number);}}P(){while(true){P(man_number);printachar;V(buffer_number);}}(8)在生產(chǎn)者-消費(fèi)者問題中,如果對調(diào)生產(chǎn)者描述中的兩個P操作會發(fā)生什么情況?如果對調(diào)生產(chǎn)者描述中的兩個V操作的順序又會發(fā)生什么情況?答:在生產(chǎn)者-消費(fèi)者問題中,如果將兩個P操作位置對調(diào),都可能引起死鎖??紤]系統(tǒng)中緩沖區(qū)全滿前時,若一生產(chǎn)者進(jìn)程先執(zhí)行了P(mutex)操作并獲得成功,當(dāng)再執(zhí)行P(empty)操作時,它將因失敗而進(jìn)入阻塞狀態(tài),它期待消費(fèi)者執(zhí)行V(empty)來喚醒自己。在此之前,它不可能執(zhí)行V(mutex)操作,從而使企圖通過P(mutex)進(jìn)入自己的臨界區(qū)的其他生產(chǎn)者和所有的消費(fèi)者進(jìn)程全部進(jìn)入阻塞狀態(tài),從而引起系統(tǒng)死鎖。類似地,消費(fèi)者進(jìn)程若先執(zhí)行P(mutex),后執(zhí)行P(full),同樣可能造成死鎖。V(full)和V(mutex)互換位置,或者V(empty)和V(mutcx)互換位置,則不會引起死鎖,其影響只是使臨界資源的釋放略為推遲一些。(9)一個快餐廳有4類職員:①領(lǐng)班:接受顧客點菜;②廚師:準(zhǔn)備顧客的飯菜;③打包工:將做好的飯菜打包;④出納員:收款并提交食品。每個職員可被看作一個進(jìn)程,試用一種同步機(jī)制寫出能讓四類職員正確并發(fā)運(yùn)行的程序。解:semaphoreS1=1;//S1表示是否可以開始點菜semaphoreS2=0;//S2表示是否可以開始做菜semaphoreS3=0;//S3表示是否可以開始打包semaphoreS4=0;//S4表示是否可以提交食品main(){cobeginLB();CS();DBG();CNY();coend}LB(){while(true){顧客到達(dá);P(S1);接受顧客點菜;V(S2);}}CS(){while(true){P(S2);準(zhǔn)備顧客的飯菜;V(S3);}}DBG(){while(true){P(S3);打包顧客的飯菜;V(S4);}}CNY(){while(true){P(S4);收款并提交食品;V(S1);}}(10)設(shè)公共汽車上,司機(jī)和售票員的活動分別如下:①司機(jī)的活動:啟動車輛:正常行車;到站停車。②售票員的活動:關(guān)車門;售票;開車門。在汽車不斷地到站、停車、行駛過程中,這兩個活動有什么同步關(guān)系?用信號量和P、V操作實現(xiàn)它們的同步。解:semaphores1=0;//s1表示是否允許司機(jī)啟動汽車,其初值為0semaphores2=0;//s2表示是否允許售票員開門,其初值為0main(){cobegindriver();busman();coend}driver(){while(true){P(s1);啟動車輛;正常行車;到站停車;V(s2);}}busman(){while(true){關(guān)車門;V(s1);售票;

溫馨提示

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

評論

0/150

提交評論