文章

194

粉丝

0

获赞

0

访问

28.4k

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


评分及理由

(1)信号量定义得分及理由(满分3分)

得分:1分

理由:学生定义了三个信号量:my、ry和z。其中z用于保护变量z的互斥访问,符合要求(得1分)。但是my和ry的设计存在问题:my虽然标注为"互斥写"但实际未在thread3写y时使用;ry被初始化为2,意图实现读者-写者模式,但实际使用方式不正确,且缺少对y写操作的完整互斥保护。标准答案需要两个独立的信号量mutex_y1和mutex_y2来分别保护thread1-thread3和thread2-thread3对y的访问,而学生答案中只有ry一个信号量来控制对y的读操作,无法确保写操作时的互斥。因此扣2分。

(2)thread1实现得分及理由(满分1分)

得分:0.5分

理由:thread1中对y的访问使用了p(ry)和v(ry)来保护,思路基本正确,但ry信号量的设计本身存在问题。考虑到学生意图实现读者-写者模式,虽然实现不完整,但基本思路是保护对y的读操作,因此给0.5分。

(3)thread2实现得分及理由(满分2分)

得分:1分

理由:thread2中对z和y的访问都进行了信号量保护,使用了p(z)、p(ry)和相应的v操作,执行顺序正确,基本实现了对y和z的互斥访问。但由于ry信号量设计本身的问题,扣1分。

(4)thread3实现得分及理由(满分2分)

得分:0分

理由:thread3的实现存在严重问题:①对z的写操作保护正确;②对y的写操作使用了p(ry)两次,这会导致死锁,因为ry初始值为2,第一次p(ry)后值变为1,第二次p(ry)后值变为0,但后续的v(ry)只有两次,无法恢复初始状态;③缺少对y写操作的完整互斥保护机制;④ry1信号量未定义。这些逻辑错误导致该部分实现完全不符合要求。

题目总分:1+0.5+1+0=2.5分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发