文章

13

粉丝

0

获赞

0

访问

181

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


评分及理由

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

学生定义了mutexy和mutexz两个信号量,但缺少对y变量的细粒度控制。标准答案需要mutex_y1和mutex_y2两个信号量来分别控制thread1与thread3、thread2与thread3对y的访问,以实现最大并发。学生只用一个mutexy会降低并发度。得1分(只正确定义了z的信号量)。

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

thread1正确使用P(mutexy)和V(mutexy)保护了对y的访问,虽然使用的信号量名称与标准答案不同,但逻辑正确。得1分。

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

thread2中存在逻辑错误:先P(mutexz)后P(mutexy),但w=add(y,z)需要同时访问y和z,应该先获取y的锁再获取z的锁,或者按固定顺序获取以避免死锁。此外,add函数参数识别不清,但根据上下文应为(y,z)。由于存在获取锁顺序不当的问题,扣1分,得1分。

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

thread3中存在严重逻辑错误:在修改y时写成了"z = add(y,w)",这明显是笔误,应该是"y = add(y,w)"。由于这个错误会导致程序逻辑完全错误,扣1分。另外,对y的访问只使用一个mutexy,没有实现最大并发,但这不是逻辑错误。综合考虑,得1分。

题目总分:1+1+1+1=4分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发