文章
7
粉丝
0
获赞
0
访问
938
semaphore bucket=3,mutex1=1,mutex2=1,full=0,empty=10;
cobegin(
process young{
while(1){
P(empty);
P(bucket);
P(mutex1);
用桶从井中取水;
V(mutex1);
P(mutex2);
把水从桶放入水缸中;
V(mutex2);
V(full);
V(bucket);
}}
process old{
while(1){
P(full);
P(bucket);
P(muetx2);
用桶从缸中取水;
V(mutex2);
V(empty);
用桶喝水;
V(bucket);
}}
}coend;
评分及理由
(1)信号量定义(满分1分)
得分:1分
理由:学生正确定义了所有需要的信号量,包括bucket(水桶)、mutex1(水井互斥)、mutex2(水缸互斥)、full(水缸已用容量)、empty(水缸剩余容量),与标准答案一致。
(2)小和尚进程逻辑(满分3分)
得分:3分
理由:学生的小和尚进程逻辑完全正确,包括对empty、bucket、mutex1、mutex2的P/V操作顺序,以及取水和倒水的流程,与标准答案一致。
(3)老和尚进程逻辑(满分4分)
得分:3分
理由:老和尚进程逻辑基本正确,但在“用桶喝水”后缺少对水桶的释放(V(bucket)),这是一个逻辑错误。此外,mutex2的拼写错误(muetx2)不影响逻辑,但应扣分。因此扣1分。
题目总分:1+3+3=7分
登录后发布评论
暂无评论,来抢沙发