文章
14
粉丝
0
获赞
0
访问
1.3k
semaphoer mutex=1;//铁锹的使用
semaphore holes=3; //可挖树坑
samaphore empty=0;//可用树坑
semaphore water=0;//需要浇水的树苗
甲() {
while (1) {
p(holes);
p(mutex);
挖坑;
v(mutex);
v(empty);
}
}
乙() {
while (1) {
p(empty);
p(mutex);
入坑并填土;
v(mutex);
v(holes);
v(water);
}
}
丙() {
while (1) {
p(water);
浇水;
}
}
评分及理由
(1)信号量定义部分(满分2分)
得分:2分
理由:学生定义了4个信号量,与标准答案完全一致。虽然信号量名称略有不同(mutexT变为mutex,sk变为holes),但作用和初值都正确,符合题目要求。
(2)甲进程实现(满分2分)
得分:2分
理由:甲进程的逻辑完全正确。先wait(holes)检查可挖树坑数量,再wait(mutex)获取铁锹使用权,挖坑后释放铁锹,signal(empty)通知乙有可用树坑。使用p/v操作与wait/signal等价。
(3)乙进程实现(满分2分)
得分:2分
理由:乙进程的逻辑完全正确。先wait(empty)等待可用树坑,再wait(mutex)获取铁锹使用权,填土后释放铁锹,signal(holes)增加可挖树坑数量,signal(water)通知丙浇水。
(4)丙进程实现(满分1分)
得分:1分
理由:丙进程的逻辑完全正确。只需wait(water)等待需要浇水的树苗,然后浇水,不需要使用铁锹,因此不需要获取mutex信号量。
题目总分:2+2+2+1=7分
总体评价:学生的作答与标准答案在逻辑上完全一致,只是信号量命名略有不同,但功能和作用完全相同。代码逻辑正确,同步互斥关系处...
登录后发布评论
暂无评论,来抢沙发