一.填空題(共1題,100.0分)
1
桌上有一隻盤子,最多可以容納m只水果,每次只能放入或取出一個水果。爸爸專向盤子中放蘋果(Apple),媽媽專向盤子中放桔子(Orange),兩個兒子專等吃盤子中的蘋果,兩個女兒專等吃盤子中的桔子。用P、V操作來實現爸爸、媽媽、兒子、女兒之間的同步與互斥關係。
解答:設信號量place、apple、orange和mutex分別表示盤子裏能放水果的數目、盤子裏已放入的蘋果數目和盤子裏已放入的桔子的數目和對盤子的互斥訪問,其初值分別爲m、0、0和1,其同步與互斥關係描述如下:
Semaphore place=m,apple=0,orange=0,mutex=1;
main()
{cobegin
father();
mother();
son();
daughter();
coend
}
father()
{while(1){
(【1】);
wait(mutex)
place apple;
signal(mutex);
signal(apple);}
}
mother()
{while(1){
(【2】);
wait(mutex)
place orange;
signal(mutex);
signal(orange);}
}
son()
{while(1){
(【3】);
wait(mutex)
take apple;
signal(mutex);
signal(place);}
}
daughter()
{while(1){
(【4】);
wait(mutex)
take orange;
signal(mutex);
signal(place);}
}
請分別在四個空處填寫正確的wait操作或signal操作。
(注意:wait和signal字母需要用小寫字母,圓括號使用英文半角輸入方式書寫,信號量與題目所定義的信號量保持一致。)
比如填上答案爲:wait(place),signal(place)
正確答案:
第一空:
wait(place)
第二空:
wait(place)
第三空:
wait(apple)
第四空:
wait(orange)
我的答案: 得分: 100.0分
第一空:
wait(place)
第二空:
wait(place)
第三空:
wait(apple)
第四空:
wait(orange)
批語
答案解析:
答案解析:設信號量place、apple、orange和mutex分別表示盤子裏能放水果的數目、盤子裏已放入的蘋果數目和盤子裏已放入的桔子的數目和對盤子的互斥訪問,其初值分別爲m、0、0和1,其同步與互斥關係描述如下:
Semaphore place=m,apple=0,orange=0,mutex=1;
main()
{cobegin
father();
mother();
son();
daughter();
coend
}
father()
{while(1){
wait(place);
wait(mutex)
place apple;
signal(mutex);
signal(apple);}
}
mother()
{while(1){
wait(place);
wait(mutex)
place orange;
signal(mutex);
signal(orange);}
}
son()
{while(1){
wait(apple);
wait(mutex)
take apple;
signal(mutex);
signal(place);}
}
daughter()
{while(1){
wait(orange);
wait(mutex)
take orange;
signal(mutex);
signal(place);}
}