文章
397
粉丝
40
获赞
2
访问
88.2k
semaphore mutex_t = 1;//铁锹
semaphore empty = 3;//还可以挖多少个坑
semaphore a_done = 0;//有多少个坑需要放树苗
semaphore b_done = 0;//需要浇水的坑数量
CoBegin{
P_1(){
while(1){
p(empty);
p(mutex_t);
挖坑;
v(mutex_t);
v(a_done);
}
}
P_2(){
while(1){
p(a_done);
p(mutex_t);
放树苗;
填土;
v(mutex_t);
v(b_done);
v(empty);
}
}
P_1(){
while(1){
p(b_done);
浇水;
}
}
}Coend
评分及理由
(1)信号量定义(满分2分)
得分:2分
理由:学生定义了四个信号量:mutex_t(铁锹互斥)、empty(可挖坑数量,初值3)、a_done(需要放树苗的坑数量)、b_done(需要浇水的坑数量)。这些信号量覆盖了所有同步和互斥需求,且初值设置正确(empty=3符合题目要求“树坑数量小于3时甲才可以挖坑”)。定义清晰,与标准答案等效。
(2)甲(P_1)的同步互斥(满分2分)
得分:2分
理由:甲先wait(empty)检查可挖坑数量(保证树坑数小于3),再wait(mutex_t)获取铁锹互斥,挖坑后释放铁锹并signal(a_done)通知乙。逻辑正确,与标准答案等效(标准答案中sk等价于empty,empty等价于a_done)。
(3)乙(P_2)的同步互斥(满分2分)
得分:2分
理由:乙先wait(a_done)等待甲挖坑完成,再wait(mutex_t)获取铁锹互斥,执行放树苗和填土后释放铁锹,然后signal(b_done)通知丙浇水,并signal(empty)增加可挖坑数量(相当于回收坑位)。逻辑正确,与标准答案等效(标准答案中signal(sk)等价于signal(empty))。
(4)丙(P_3)的同步互斥(满分1分)
得分:1分
理由:丙等待wait(b_done)后直接浇水,无需互斥(水桶只有一个但浇水操作不涉及共享资源竞争,无需互斥信号量)。逻辑正确,与标准答案一致...
登录后发布评论
暂无评论,来抢沙发