文章
246
粉丝
40
获赞
2
访问
12.6k
coBegin{
semaphore mutex_k = 3;//还剩可以挖几个坑
semaphore mutex_t = 1;//铁锹
semaphore a_done = 0;//有多少个坑需要填土
semaphore b_done = 0;//有多少颗树需要浇水
p_1(){
while(1){
wait(mutex_k);
wait(mutex_t);
挖坑;
signal(mutex_t)
signal(a_done);
}
}
p_2(){
while(1){
wait(a_done);
wait(mutex_t);
放入树苗;
填土;
signal(mutex_t);
signal(mutex_k)
signal(b_done);
}
}
p_3(){
while(1){
wait(b_done);
浇水;
}
}
}CoEnd
评分及理由
(1)信号量定义(满分2分)
得分:2分
理由:学生定义了四个信号量,与标准答案的四个信号量功能完全对应:mutex_k对应sk(可挖坑数量,初值3),mutex_t对应mutexT(铁锹互斥,初值1),a_done对应empty(坑可用数量,初值0),b_done对应water(需要浇水的树苗,初值0)。信号量作用清晰,初值正确。
(2)甲(p_1)的同步操作(满分2分)
得分:2分
理由:甲先等待mutex_k(可挖坑数量),再等待mutex_t(铁锹互斥),挖坑后释放铁锹,再signal(a_done)(表示坑可用)。顺序正确,与标准答案一致。
(3)乙(p_2)的同步操作(满分2分)
得分:2分
理由:乙先等待a_done(坑可用),再等待mutex_t(铁锹互斥),操作后释放铁锹,然后signal(mutex_k)(增加可挖坑数量)和signal(b_done)(通知浇水)。顺序正确,与标准答案一致。
(4)丙(p_3)的同步操作(满分1分)
得分:1分
理由:丙等待b_done(需要浇水的树苗)后浇水,操作正确,与标准答案一致。
题目总分:2+2+2+1=7分
登录后发布评论
暂无评论,来抢沙发