《操作系統(tǒng)習(xí)題解答一》由會(huì)員分享,可在線閱讀,更多相關(guān)《操作系統(tǒng)習(xí)題解答一(15頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),操作系統(tǒng)習(xí)題解答,計(jì)算機(jī)操作系統(tǒng),PV,操作的含義:,PV,操作由,P,操作原語(yǔ)和,V,操作原語(yǔ)組成(,原語(yǔ)是不可中斷的過(guò)程,),對(duì)信號(hào)量進(jìn)行操作,具體定義如下:,P,(,S,):將信號(hào)量,S,的值減,1,,即,S=S,1,;,如果,S,0,,則該進(jìn)程繼續(xù)執(zhí)行;否則該進(jìn)程置為等待狀態(tài),排入等待隊(duì)列。,V,(,S,):將信號(hào)量,S,的值加,1,,即,S=S+1,;,如果,S0,,則該進(jìn)程繼續(xù)執(zhí)行;否則釋放隊(duì)列中第一個(gè)等待信號(hào)量的進(jìn)程。,PV,操作的意義:,我們用信號(hào)量及,PV,操作來(lái)實(shí)現(xiàn)進(jìn)程的同步和互斥。,PV,操作屬于進(jìn)程的,低級(jí)通信,
2、。,信號(hào)量(,semaphore,),的數(shù)據(jù)結(jié)構(gòu)為一個(gè)值和一個(gè)指針,指針指向等待該信號(hào)量的下一個(gè)進(jìn)程。,信號(hào)量的值與相應(yīng)資源的使用情況有關(guān),。當(dāng)它的值大于,0,時(shí),表示當(dāng)前可用資源的數(shù)量;當(dāng)它的值小于,0,時(shí),其絕對(duì)值表示等待使用該資源的進(jìn)程個(gè)數(shù)。注意,,信號(hào)量的值僅能由,PV,操作來(lái)改變,。,利用信號(hào)量和,PV,操作實(shí)現(xiàn)進(jìn)程互斥的一般模型是:,進(jìn)程,P1,進(jìn)程,P2 ,進(jìn)程,Pn,P,(,S,);,P,(,S,);,P,(,S,);,臨界區(qū);臨界區(qū);臨界區(qū);,V,(,S,);,V,(,S,);,V,(,S,);,其中信號(hào)量,S,用于互斥,初值為,1,。,使用,PV,操作實(shí)現(xiàn)進(jìn)程互斥時(shí)應(yīng)該注意
3、的是:,(,1,)每個(gè)程序中用戶實(shí)現(xiàn)互斥的,P,、,V,操作必須成對(duì)出現(xiàn),先做,P,操作,進(jìn)臨界區(qū),后做,V,操作,出臨界區(qū),。若有多個(gè)分支,要認(rèn)真檢查其成對(duì)性。,(,2,),P,、,V,操作應(yīng)分別緊靠臨界區(qū)的頭尾部,,臨界區(qū)的代碼應(yīng)盡可能短,不能有死循環(huán),。,(,3,),互斥信號(hào)量的初值一般為,1,。,生產(chǎn)者,-,消費(fèi)者問(wèn)題,一個(gè)生產(chǎn)者,一個(gè)消費(fèi)者,公用一個(gè)緩沖區(qū)。,定義兩個(gè)同步信號(hào)量:,empty,表示緩沖區(qū)是否為空,初值為,1,。,full,表示緩沖區(qū)中是否為滿,初值為,0,。,生產(chǎn)者進(jìn)程,while(TRUE,),生產(chǎn)一個(gè)產(chǎn)品,;,P,(,empty,);,產(chǎn)品送往,Buffer;,V
4、,(,full,);,消費(fèi)者進(jìn)程,while(True,),P,(,full,);,從,Buffer,取出一個(gè)產(chǎn)品,;,V,(,empty,);,消費(fèi)該產(chǎn)品,;,設(shè)公共汽車上,司機(jī)和售票員的活動(dòng)分別是:,司機(jī)的活動(dòng):?jiǎn)?dòng)車輛;,正常行車;,到站停車;,售票員的活動(dòng):關(guān)車門;,售票;,開(kāi)車門;,在汽車不斷地到站、停車、行駛過(guò)程中,這兩個(gè)活動(dòng)有什么同步關(guān)系?用信號(hào)量和,P,、,V,操作實(shí)現(xiàn)它們的同步。,解:,在汽車行駛過(guò)程中,司機(jī)活動(dòng)與售票員活動(dòng)之間的同步關(guān)系為:售票員關(guān)車門后,向司機(jī)發(fā)開(kāi)車信號(hào),司機(jī)接到開(kāi)車信號(hào)后啟動(dòng)車輛,在汽車正常行駛過(guò)程中售票員售票,到站時(shí)司機(jī)停車,售票員在車停后開(kāi)車門讓乘客
5、上下車。因此司機(jī)啟動(dòng)車輛的動(dòng)作必須與售票員關(guān)車門的動(dòng)作取得同步;售票員開(kāi)車門的動(dòng)作也必須與司機(jī)停車取得同步,,在本題中,應(yīng)設(shè)置兩個(gè)信號(hào)量:,S1,、,S2,。,S1,表示是否允許司機(jī)啟動(dòng)汽車,其初值為,0,;,S2,表示是否允許售票員開(kāi)門,其初值為,0,。用,P,、,V,原語(yǔ)描述如下:,int,Sl,0;,int,S2,0;,main(),cobegin,driver();,busman();,coend,driver(),while(1),P(S1);,啟動(dòng)車輛,;,正常行車,;,到站停車,;,V(S2);,busman(),while(1),關(guān)車門,;,V(Sl,);,售票,;,P(S2)
6、;,開(kāi)車門,;,上下乘客,;,四個(gè)進(jìn)程,A,、,B,、,C,、,D,都要讀一個(gè)共享文件,F,,系統(tǒng)允許多個(gè)進(jìn)程同時(shí)讀文件,F,。但限制是進(jìn)程,A,和進(jìn)程,C,不能同時(shí)讀文件,F,,進(jìn)程,B,和進(jìn)程,D,也不能同時(shí)讀文件,F,。為了使這四個(gè)進(jìn)程并發(fā)執(zhí)行時(shí)能按系統(tǒng)要求使用文件,現(xiàn)用,PV,操作進(jìn)行管理,請(qǐng)回答下面的問(wèn)題:,(,1,)應(yīng)定義的信號(hào)量及初值:,。,(,2,)在下列的程序中填上適當(dāng)?shù)?P,、,V,操作,以保證它們能正確并發(fā)工作:,A()B()C()D(),1;3;5;7;,read F;read F;read F;read F;,2;4;6;8;,思考題解答:,(,1,)定義二個(gè)信號(hào)量,S1,、,S2,,初值均為,1,,即:,S1=1,,,S2=1,。其中進(jìn)程,A,和,C,使用信號(hào)量,S1,,進(jìn)程,B,和,D,使用信號(hào)量,S2,。,(,2,)從,1,到,8,分別為:,P(S1)V(S1)P(S2)V(S2)P(S1)V(S1)P(S2)V(S2),參考題:,桌上有一空盤,允許存放一只水果。爸爸可向盤中放蘋果,也可向盤中放桔子,兒子專等吃盤中的桔子,女兒專等吃盤中的蘋果。規(guī)定當(dāng)盤空時(shí)一次只能放一只水果供吃者取用,請(qǐng)用,P,、,V,原語(yǔ)實(shí)現(xiàn)爸爸、兒子、女兒三個(gè)并發(fā)進(jìn)程的同步。,