文章

83

粉丝

0

获赞

0

访问

25.6k

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


评分及理由

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

学生定义了三个信号量:mutex、mutex_y、mutex_Z,并初始化为1。这与标准答案中需要互斥访问y和z的思路一致,但标准答案将y的互斥分为两个信号量(mutex_y1和mutex_y2)以实现thread1与thread3、thread2与thread3之间的独立互斥,从而允许更高程度的并发。学生使用一个mutex_y来保护y,会导致不必要的串行化(例如thread1和thread2无法同时读y),降低了并发度。因此,信号量设计在功能上能保证互斥,但未达到“最大程度地并发执行”的要求。扣1分。得2分。

(2)线程1代码得分及理由(满分1分)

线程1中,学生对y的访问使用了P(mutex_y)进行保护,正确。但额外使用了P(mutex),这个mutex并未在标准答案中出现,且保护了不必要的部分(x是只读的,无需互斥),这不会导致错误但增加了不必要的约束,可能轻微影响并发。由于题目要求“最大程度地并发执行”,且标准答案未对x加锁,此处的mutex是多余的。但考虑到其不破坏互斥且可能为识别误写(如将其他信号量误识别为mutex),根据“误写不扣分”原则,不扣分。得1分。

(3)线程2代码得分及理由(满分2分)

线程2需要访问y和z。学生使用P(mutex_y)和P(mutex_Z)保护,顺序正确(先申请y锁再申请z锁,与标准答案顺序不同,但未形成死锁风险)。然而,在第一次识别结果中,第二个P(mutex_y)明显是笔误(应为V(mutex_y)),第二次识别结果已纠正为正确的V操作。根据“两次识别有一次正确则不扣分”的原则,按正确版本评分。但同样存在使用单一mutex_y锁导致并发度下降的问题,扣1分。得1分。

(4)线程3代码得分及理由(满分2分)

线程3先修改z,后修改y。学生对z的修改用P/V(mutex_Z)保护,正确。对y的修改用P/V(mutex_y)保护,正确。但同样因为使用单一mutex_y锁,导致thread3修改y时,thread1和thread2都无法访问y,降低了并发度,未达到最大并发。扣1分。得1分。

题目总分:2+1+1+1=5分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发