文章
91
粉丝
68
获赞
0
访问
5.8k
semphore kwksh = 3;//可挖坑数是3初始化,最多挖3个
semphore kyksh = 0;//初始可用的坑个数
semphore shmsh = 0;//可浇水树苗个数
甲(){
wait (kwksh);
挖坑;
signal(kyksh);
}
乙(){
wait (kyksh);
放树苗,填土;
signal(kwksh );
signal(shmsh );
}
丙(){
wait (shmsh );
浇水
}
评分及理由
(1)得分及理由(满分7分)
学生作答定义了三个信号量:kwksh(可挖坑数,初值3)、kyksh(可用坑数,初值0)、shmsh(可浇水树苗数,初值0)。这基本符合题目要求“定义尽可能少的信号量”,并且初值设置合理,能够描述三人之间的同步关系(甲挖坑受限于坑数,乙等待坑可用,丙等待树苗可浇水)。
但是,学生答案存在以下逻辑错误:
wait/signal),这会导致甲和乙可能同时使用铁锹,违反互斥要求,属于逻辑错误。signal(kwksh)和signal(shmsh)的顺序:在乙完成填土后,既释放了一个可挖坑位(signal(kwksh)),又通知丙有树苗可浇水(signal(shmsh))。这个顺序在逻辑上没有问题,但标准答案中先signal(sk)再signal(water),学生与之类似,此处不扣分。由于缺少对关键资源(铁锹)的互斥保护,同步互斥关系描述不完整,扣2分。
得分:5分(满分7分)。
题目总分:5分
题目总分:5分
登录后发布评论
暂无评论,来抢沙发