文章

105

粉丝

0

获赞

0

访问

53.2k

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


评分及理由

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

学生定义了5个信号量:y=0, z=0, mutex_y=1, mutex_x=1, mutex_z=1。其中mutex_y和mutex_z用于互斥访问是正确的,但标准答案需要区分thread1和thread3、thread2和thread3对y的互斥访问,这里只用一个mutex_y会导致并发度降低。另外,学生额外定义了y=0和z=0这两个同步信号量,以及不必要的mutex_x=1,这些在标准答案中并不需要。根据标准答案的评分标准,每个正确互斥信号量得1分,这里mutex_y和mutex_z基本正确但不够精确,给1分;额外的不必要信号量不扣分但也不加分。得1分。

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

学生在thread1中使用了p(y)和v(y)这些同步操作,这是不必要的,因为题目只要求互斥不要求同步。对x和y的互斥访问使用了p(mutex_x)和p(mutex_y),其中mutex_x是不必要的,因为x只被thread1读取。核心的互斥逻辑存在但过于复杂,且并发度不如标准答案高。考虑到基本实现了对y的互斥访问,给0.5分。

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

学生在thread2中使用了p(y)、p(z)等同步操作,这是不必要的。对y和z的互斥访问使用了p(mutex_y)和p(mutex_z),这基本正确但并发度不如标准答案(标准答案用mutex_y2和mutex_z)。由于存在不必要的同步操作,扣0.5分,得0.5分。

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

学生在thread3中对z的互斥访问正确(p(mutex_z)/v(mutex_z)),但对y的互斥只用了mutex_y,没有区分不同线程的互斥关系,这会导致并发度降低。另外增加了v(z)和v(y)这些不必要的同步操作。根据标准答案,thread3需要同时获取mutex_y1和mutex_y2才能修改y,这里没有实现这一点。给1分。

题目总分:1+0.5+0.5+1=3分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发