文章

224

粉丝

0

获赞

1

访问

33.0k

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


评分及理由

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

得分:1分

理由:学生定义了mutex_z和mutex_y两个信号量,其中mutex_z用于保护变量z是正确的(1分)。但是缺少对y变量的细粒度控制,标准答案需要两个独立的信号量mutex_y1和mutex_y2来分别控制thread1-thread3和thread2-thread3对y的访问,而学生只用一个mutex_y无法实现最大程度的并发。另外定义了一个不必要的count信号量和计数器,增加了复杂度但没有正确解决问题。

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

得分:0分

理由:thread1的实现逻辑混乱。使用了复杂的计数器机制来试图控制对y的访问,但代码逻辑存在严重错误:在w=add(x,y)后重复出现了count++和V操作,且最后的条件判断逻辑错误。没有正确实现对y的互斥访问保护。

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

得分:0分

理由:thread2的实现同样存在严重逻辑错误。在P(mutex_count)后直接V(mutex_y)会释放y锁,这是错误的。对z的操作顺序混乱,先V(mutex_z)后P(mutex_z)没有意义。计数器机制使用不当,无法正确保护对y和z的访问。

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

得分:0.5分

理由:对z的操作部分基本正确,P(mutex_z)和V(mutex_z)保护了z的访问(0.5分)。但对y的操作逻辑完全错误,计数器使用混乱,条件判断if(count>=0)逻辑不合理,且缺少必要的V操作来释放信号量。

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

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发