文章

480

粉丝

0

获赞

1

访问

65.1k

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


评分及理由

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

学生定义了三个信号量:mutexZ、mutexY1、mutexY2,与标准答案的mutex_z、mutex_y1、mutex_y2含义完全一致,且初始值均为1。此处得3分。

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

thread1中正确使用P(mutexY1)和V(mutexY1)保护了对全局变量y的读操作(在add(x, y)中),与标准答案一致。此处得1分。

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

thread2中需要互斥访问y和z。学生代码中先P(mutexZ)后P(mutexY2),而标准答案是先P(mutex_y2)后P(mutex_z)。虽然顺序不同,但根据“思路正确不扣分”的原则,只要实现了对y和z的互斥访问且能避免死锁,即为正确。学生的顺序同样可以避免死锁(因为thread3中访问y和z时,对mutexY1/Y2和mutexZ的申请是分开的,不会形成循环等待)。因此此处不扣分,得2分。

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

thread3的操作分为两部分:更新z和更新y。学生代码正确使用P(mutexZ)/V(mutexZ)保护了对z的更新。在更新y时,正确使用了P(mutexY1)和P(mutexY2)来获得对y的独占访问权(因为thread1和thread2可能同时读y),与标准答案一致。此处得2分。

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

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发