文章

117

粉丝

160

获赞

0

访问

3.7k

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


评分及理由

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

得分:3分

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

(2)thread1 实现部分(满分1分)

得分:1分

理由:thread1 只访问全局变量 y(和 x,但 x 未被其他线程修改,无需保护)。学生正确地在 add(x, y) 前后对 y1(即保护 y 的信号量之一)进行了 P、V 操作,实现了 thread1 与 thread3 对 y 的互斥访问,与标准答案逻辑一致。

(3)thread2 实现部分(满分2分)

得分:2分

理由:thread2 需要访问 y 和 z。学生正确地在 add(y, z) 前对 y2 和 z 信号量进行了 P 操作(注意:第二次识别结果中包含了 P(z),这是正确的;第一次识别结果漏了 P(z),但根据“两次识别只要一次正确则不扣分”的原则,以正确版本为准),并在操作后进行了对应的 V 操作,确保了与 thread3 对 y 和 z 的互斥访问,且顺序合理,未造成死锁。

(4)thread3 实现部分(满分2分)

得分:2分

理由:thread3 需要修改 z 和 y。学生先对 z 进行 P-V 操作保护,然后对 y1 和 y2 进行 P 操作以保护 y(确保与 thread1 和 thread2 互斥),修改 y 后进行 V 操作。整个逻辑与标准答案完全一致,且最大程度允许并发(例如,thread1 和 thread2 在 thread3 只修改 z 时仍可并发执行)。

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

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发