文章

91

粉丝

68

获赞

0

访问

5.8k

头像
2025年(408)计算机学科专业基础综合试题 - 第45题回答
操作系统
发布于2025年12月14日 16:30
阅读数 16

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)。这基本符合题目要求“定义尽可能少的信号量”,并且初值设置合理,能够描述三人之间的同步关系(甲挖坑受限于坑数,乙等待坑可用,丙等待树苗可浇水)。

但是,学生答案存在以下逻辑错误:

  1. 缺少对铁锹的互斥访问:题目中明确指出“铁锹用于挖树坑,填土”,且“铁锹和水桶各一个”。水桶只有丙使用,无需互斥;但铁锹需要被甲(挖坑)和乙(填土)互斥使用。学生代码中甲和乙的操作均未对铁锹进行加锁(wait/signal),这会导致甲和乙可能同时使用铁锹,违反互斥要求,属于逻辑错误。
  2. 信号量命名不规范:虽然不影响逻辑,但通常应使用有意义的英文或拼音全称,这里使用缩写但尚可理解。
  3. 乙中signal(kwksh)signal(shmsh)的顺序:在乙完成填土后,既释放了一个可挖坑位(signal(kwksh)),又通知丙有树苗可浇水(signal(shmsh))。这个顺序在逻辑上没有问题,但标准答案中先signal(sk)signal(water),学生与之类似,此处不扣分。

由于缺少对关键资源(铁锹)的互斥保护,同步互斥关系描述不完整,扣2分。

得分:5分(满分7分)。

题目总分:5分

题目总分:5分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发