文章
29
粉丝
0
获赞
0
访问
1.0k
semaphore full=0//坑位数量
semaphore empty=3;//树坑剩余要求不超过3
semaphore mutex=1;//互斥使用铁楸
semaphore water=0;//需要浇水的数量
甲(){
P(empty);//看树坑数量是否大于3
P(mutex);//
挖树坑;
V(mutex);
V(full);
}
乙(){
P(full);
P(mutex);
放树苗并填土;
V(mutex);
V(empty);
V(water);//新的树苗需要进行浇水
}
丙(){
P(water);
提水并浇水;
}
评分及理由
(1)信号量定义(满分2分)
得分:2分
理由:学生定义了四个信号量:full(表示已挖坑位数量,初值0)、empty(表示可挖坑位数量,初值3)、mutex(互斥使用铁锹,初值1)、water(表示需要浇水的树苗数量,初值0)。这些信号量的定义和初值设置与标准答案在功能上是等价的(empty对应sk,full对应empty,mutex对应mutexT,water对应water),虽然命名不同但作用一致,且初值正确。思路正确,不扣分。
(2)甲进程代码(满分2分)
得分:2分
理由:甲进程先P(empty)检查可挖坑数(对应标准答案的wait(sk)),再P(mutex)获取铁锹,然后挖坑,之后V(mutex)释放铁锹,最后V(full)通知乙有坑可用(对应标准答案的signal(empty))。逻辑正确,与标准答案等效。
(3)乙进程代码(满分2分)
得分:2分
理由:乙进程先P(full)等待有坑(对应标准答案的wait(empty)),再P(mutex)获取铁锹,然后放树苗填土,之后V(mutex)释放铁锹,V(empty)增加可挖坑数(对应标准答案的signal(sk)),最后V(water)通知丙浇水。逻辑正确,与标准答案等效。
(4)丙进程代码(满分1分)
得分:1分
理由:丙进程通过P(water)等待浇水信号,然后浇水。逻辑正确,与标准答案一致。
题目总分:2+2+2+1=7分
总体评价:学生的解答与标准答案在信号量命名上有所不同,但逻辑结构完全正确,所有同步和互斥关系均得到妥善处理,且满足...
登录后发布评论
暂无评论,来抢沙发