文章

302

粉丝

0

获赞

15

访问

52.2k

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


评分及理由

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

学生定义了三个信号量:y1、y2、z,分别用于保护y和z的访问。这与标准答案中的mutex_y1、mutex_y2、mutex_z作用一致,只是命名不同。信号量初始值均为1,正确。因此得3分。

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

thread1中使用了P(y1)和V(y1)来保护对y的访问,与标准答案一致,确保与thread3对y的互斥访问。代码逻辑正确,得1分。

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

thread2中先P(y2)再P(z),然后执行w=add(y,z),最后V(y2)和V(z)。这里存在一个逻辑错误:标准答案中先V(mutex_z)再V(mutex_y2),而学生答案中先V(y2)后V(z)。这可能导致死锁风险,因为thread3中需要同时获取y1和y2,如果thread2先释放y2,thread3可能获取y2但等待y1,而thread1可能持有y1等待其他资源,形成循环等待。因此扣1分,得1分。

(4)thread3代码得分及理由(满分2分)

thread3中先对z进行操作(P(z)和V(z)),然后对y进行操作(P(y1)、P(y2)和V(y1)、V(y2)),与标准答案一致。代码逻辑正确,得2分。

题目总分:3+1+1+2=7分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发