一.填空题(共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);}
}