文章

278

粉丝

0

获赞

1

访问

109.3k

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


评分及理由

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

学生定义了三个信号量:mutex_y=1, mutex_z=1, mutex_x=1。其中mutex_x用于保护x变量,但题目中x变量是只读的,不需要互斥保护,因此mutex_x是多余的(1分扣分)。mutex_y用于保护y变量,但标准答案需要两个独立的信号量mutex_y1和mutex_y2来分别保护thread1与thread3、thread2与thread3对y的访问,学生只用一个mutex_y会导致不必要的互斥,降低了并发度(1分扣分)。mutex_z定义正确(1分得分)。本部分得分:1分

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

thread1中使用了p(mutex_x)和p(mutex_y),其中mutex_x是不必要的,但mutex_y的使用基本正确。由于学生只用一个mutex_y保护y,虽然能保证互斥,但并发度不如标准答案高。考虑到基本实现了对y的保护,给1分。

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

thread2中使用了p(mutex_y)和p(mutex_z),基本正确。同样由于只用一个mutex_y保护y,并发度不如标准答案,但能保证互斥。给1分。

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

thread3中使用了p(mutex_y)和p(mutex_z)来保护对z和y的修改。这里的问题是:对y的修改需要同时与thread1和thread2互斥,但学生只用一个mutex_y,虽然能保证互斥,但在thread3执行y=add(y,w)时会阻塞其他所有需要访问y的线程,降低了并发度。标准答案使用两个独立的信号量可以允许thread1和thread2在某些情况下并发执行。给1分。

题目总分:1+1+1+1=4分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发