文章

117

粉丝

160

获赞

0

访问

3.8k

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


评分及理由

(1)信号量定义部分(满分3分)

得分:3分

理由:学生定义了三个信号量 y1、y2、z,初始值均为1,与标准答案中的 mutex_y1、mutex_y2、mutex_z 作用完全相同,只是命名略有差异。这完全符合题目要求,确保了线程互斥访问临界资源(变量 y 和 z),且定义正确无误。

(2)线程1代码部分(满分1分)

得分:1分

理由:线程1只访问全局变量 y(和 x,但 x 未被其他线程修改,无需互斥)。学生使用 P(y1) 和 V(y1) 将对 add(x, y) 的调用保护起来,实现了 thread1 与 thread3 对 y 的互斥访问,与标准答案一致。

(3)线程2代码部分(满分2分)

得分:2分

理由:线程2需要访问 y 和 z。学生的代码(以第二次识别结果为准)正确使用了 P(y2) 和 P(z) 在操作前获取信号量,并在操作后使用 V(z) 和 V(y2) 释放信号量,顺序与标准答案一致(先获取访问 y 的信号量,再获取访问 z 的信号量),确保了 thread2 与 thread3 对 y 和 z 的互斥访问。

(4)线程3代码部分(满分2分)

得分:2分

理由:线程3需要修改 z 和 y。学生的代码正确使用 P(z)/V(z) 保护对 z 的修改。对于 y 的修改,正确使用了 P(y1) 和 P(y2) 来同时获取与 thread1 和 thread2 互斥的信号量,并在修改后使用 V(y2) 和 V(y1) 释放,与标准答案逻辑一致,确保了最大程度的并发(例如,thread1 和 thread2 可以同时执行,只要它们访问的是 y 的不同“逻辑副本”)。

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

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发