資源描述:
《進(jìn)程同步互斥練習(xí)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、1.如果信號(hào)量S的初值是5,現(xiàn)在信號(hào)量的值是-5,那么系統(tǒng)中的相關(guān)進(jìn)程至少執(zhí)行了幾個(gè)P(S)操作?與信號(hào)量S相關(guān)的處于阻塞狀態(tài)的進(jìn)程有幾個(gè)?為使信號(hào)量S的值大于0,應(yīng)進(jìn)行怎樣的操作?答案:1)5-(-5)=10,因此系統(tǒng)中的相關(guān)進(jìn)程至少執(zhí)行了10個(gè)P(S)操作。因?yàn)槊繄?zhí)行一次P(S)操作就會(huì)將信號(hào)量S減去1。2)與信號(hào)量S相關(guān)的處于阻塞狀態(tài)的進(jìn)程有
2、-5
3、=5個(gè)。3)為使信號(hào)量S的值大于0,應(yīng)當(dāng)有至少6個(gè)執(zhí)行了P(S)但還沒來得及執(zhí)行V(S)的進(jìn)程去執(zhí)行V(S)操作。2.一售票廳只能容納300人,當(dāng)少于300人時(shí),可以進(jìn)入;否則,需在外等候。若將每一個(gè)購(gòu)票者作為一個(gè)
4、進(jìn)程,請(qǐng)用P、V操作編程,并寫出信號(hào)量的初值。答案:設(shè)置信號(hào)量NUM表示售票廳當(dāng)前還可以進(jìn)入的人數(shù),初值為300.購(gòu)票者進(jìn)程:do{P(NUM);進(jìn)入售票廳;V(NUM);}While(1);3.桌上有一空盤,只允許存放一個(gè)水果。爸爸可向盤中放蘋果,也可向盤中放桔子。兒子專等吃盤中的桔子,女兒專等吃盤中的蘋果。規(guī)定當(dāng)盤中空時(shí)一次只能放一只水果供吃者取用,請(qǐng)用P、V原語實(shí)現(xiàn)爸爸、兒子、女兒三個(gè)并發(fā)進(jìn)程的同步。答案:設(shè)置三個(gè)信號(hào)量S、So、Sa,信號(hào)量S表示盤子是否為空,其初值為1;信號(hào)量So表示盤中是否有桔子,其初值為0;信號(hào)量Sa表示盤中是否有蘋果,其初值為0。同步
5、描述如下:intS=1;intSa=0;intSo=0;main(){father();son();daughter();}father(){while(1){P(S);將水果放入盤中;if(放入的是桔子)V(So);elseV(Sa);}}son(){while(1){P(So);從盤中取出桔子;V(S);吃桔子;}}daughter(){while(1){P(Sa);從盤中取出蘋果;V(S);吃蘋果;}}4.下面是兩個(gè)并發(fā)執(zhí)行的進(jìn)程。它們能正確執(zhí)行嗎?若不能,試改正之。CobeginVarx:integer;ProcessP1Vary,z:integer;Beg
6、inx:=1;y:=0;Ifx≥1theny:=y+1;z:=y;End;ProcessP2Vart,u:integer;Beginx:=0;t:=0;Ifx<1thent:=t+2;u:=t;End;Coend答案:改正后的代碼cobeginvarx:integer;S;semaphore;S:=1;ProcessP1Vary,z:integer;BeginP(S);x:=1;y:=0;Ifx≥1theny:=y+1;V(S);z:=y;endProcessP2vart,u:integer;beginP(S);x:=0;t:=0;Ifx<1thent:=t+2;V
7、(S);u:=t;EndCoend書上:3(6)有k個(gè)進(jìn)程共享一臨界區(qū),說明信號(hào)的初值及含義,用P、V操作寫出互斥算法1)一次只允許一個(gè)進(jìn)程進(jìn)入臨界區(qū)。2)一次允許K個(gè)進(jìn)程進(jìn)入臨界區(qū)。答案:1)設(shè)信號(hào)量M表示當(dāng)前可進(jìn)入臨界區(qū)的進(jìn)程數(shù),初值為1.進(jìn)程{…P(M);進(jìn)入臨界區(qū);V(M);….}2)設(shè)信號(hào)量M表示當(dāng)前可進(jìn)入臨界區(qū)的進(jìn)程數(shù),初值為K.進(jìn)程{….P(M);進(jìn)入臨界區(qū);V(M);…}或者:進(jìn)程{…進(jìn)入臨界區(qū);…}