文章
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_3(){
while(1){
p(b_done);
浇水;
}
}
}Coend
评分及理由
(1)信号量定义及初值(满分2分)
得分:2分。理由:学生定义了四个信号量,其中mutex_t用于铁锹互斥(初值1),empty用于控制可挖坑数量(初值3),a_done表示需要放树苗的坑数量(初值0),b_done表示需要浇水的坑数量(初值0)。这些信号量的定义和初值设置与标准答案等效(标准答案中sk相当于empty,empty相当于a_done,water相当于b_done),且覆盖了所有同步互斥需求,因此得满分。
(2)甲(P_1)的同步操作(满分2分)
得分:2分。理由:甲先等待empty(即可挖坑数量),然后获取铁锹互斥锁,挖坑后释放互斥锁,并通知a_done(表示坑已挖好)。该逻辑与标准答案一致,且正确实现了同步互斥关系。
(3)乙(P_2)的同步操作(满分2分)
得分:2分。理由:乙先等待a_done(表示有坑可操作),然后获取铁锹互斥锁,执行放树苗和填土操作后释放互斥锁,并通知b_done(表示需要浇水)和empty(增加可挖坑数量)。该逻辑与标准答案等效(标准答案中乙还通知了sk,但sk与empty作用相同),且正确实现了同步互斥关系。
(4)丙(P_3)的同步操作(满分1分)
得分:1分。理由:丙等待b_done(表示有树苗需要浇水),然后执行浇水操作。该逻辑与标准答案一致,且无需互斥操作(水桶未定义互斥,但题目中水桶只有一个,但学生未处理水桶互斥,但标准答案也未处理,因此不扣分)。
题目总分:...
登录后发布评论
暂无评论,来抢沙发