一.填空題(共1題,100.0分)
1
問題:用P、V操作解決下面問題
司機進程:
REPEAT
啓動車輛
正常駕駛
到站停車
UNTIL…
售票員進程:
REPEAT
關門
售票
開門
UNTIL…
解答:
設置信號量:
設同步信號量S_Door,表示是否關好車門,初值爲0;設同步信號量S_Stop,表示是否停穩車,初值爲0。
則司機進程和乘務員進程描述如下:
司機進程()
{ while(1){
(【1】);
啓動;
駕駛;
停車;
(【2】);}
}
乘務員進程()
{while(1){
關門;
(【3】);
售票;
(【4】);
開門;}
}
請分別在【1】【2】【3】【4】四個空白處填寫正確的wait操作或signal操作。
(注意:wait和signal字母需要用小寫字母,圓括號使用英文半角輸入方式書寫,信號量與題目所定義的信號量保持一致。)
比如填上答案爲:wait(S_Door)或signal(S_Door)
正確答案:
第一空:
wait(S_Door)
第二空:
signal(S_Stop)
第三空:
signal(S_Door)
第四空:
wait(S_Stop)
我的答案: 得分: 100.0分
第一空:
wait(S_Door)
第二空:
signal(S_Stop)
第三空:
signal(S_Door)
第四空:
wait(S_Stop)
批語
答案解析:
答案解析:
同步要求:先關門,後開車;
先停車,後開門
設置信號量:
設同步信號量S_Door,表示是否關車門,初值爲0;設同步信號量S_Stop表示是否停車,初值爲0。
則司機進程和乘務員進程描述如下:
司機進程()
{ while(1){
wait(S_Door);
啓動;
駕駛;
停車;
signal(S_Stop);}
}
乘務員進程()
{while(1){
關門;
signal(S_Door);
售票;
wait(S_Stop);
開門;}
}