文章
7
粉丝
0
获赞
0
访问
485
semaphore tong = 3;
semaphore mutex1 =1;
semaphore mutex2 =1;
semaphore gang_water =0;
semaphore gang_empty =10;
littlemonk(){
while(1){
p(gang_empty);
p(tong);
quotong;
p(mutex1);
jingzhongdashui;
v(mutex1);
p(mutex2);
daoshuirugang;
v(mutex2);
v(gang_water);
huantong;
v(tong);
}
}
oldmonk(){
while(1){
p(gang_water);
p(tong);
p(mutex2);
gangzhongqushui;
v(mutex2);
v(gang_empty);
huangtong;
v(tong);
}
}
评分及理由
(1)信号量定义(满分1分)
得分:1分
理由:学生正确定义了所有必要的信号量,包括tong(水桶)、mutex1(水井互斥)、mutex2(水缸互斥)、gang_water(水缸已用容量)、gang_empty(水缸剩余容量),与标准答案一致。
(2)小和尚进程逻辑(满分3.5分)
得分:3.5分
理由:学生的小和尚进程逻辑基本正确,包括申请水缸剩余容量、申请水桶、互斥访问水井和水缸、释放信号量等操作。但存在以下问题:
- 扣0.5分:代码中“quotong”和“huantong”未明确说明是取桶和还桶操作,虽然逻辑正确但表述不清晰。
- 其他部分与标准答案完全一致,未扣分。
(3)老和尚进程逻辑(满分3.5分)
得分:3分
理由:学生的老和尚进程逻辑基本正确,但存在以下问题:
- 扣0.5分:代码中“huangtong”未明确说明是还桶操作,表述不清晰。
- 扣0分:虽然学生未明确写出“喝水”操作,但题目未要求必须体现,逻辑正确。
- 其他部分与标准答案完全一致,未扣分。
题目总分:1+3.5+3=7.5分
登录后发布评论
暂无评论,来抢沙发