文章

280

粉丝

1

获赞

8

访问

87.0k

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


评分及理由

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

学生定义了三个信号量:mutex_y1、mutex_y2、mutex_z(第二次识别中为mutex_z,第一次识别中为mutex_z0,但根据上下文可判断为误写),与标准答案完全一致。其中mutex_y1用于thread1与thread3对y的互斥,mutex_y2用于thread2与thread3对y的互斥,mutex_z用于thread2与thread3对z的互斥。定义正确,得3分。

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

学生在thread1中使用了P(mutex_y1)和V(mutex_y1)来保护w=add(x,y)操作,与标准答案一致,确保了thread1与thread3对y的互斥访问。代码正确,得1分。

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

学生在thread2中使用了P(mutex_y2)和P(mutex_z)来保护w=add(y,z)操作,并按照先申请mutex_y2再申请mutex_z的顺序,释放时顺序相反。这与标准答案完全一致,确保了thread2与thread3对y和z的互斥访问,且避免了死锁。代码正确,得2分。

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

学生在thread3中,对z的操作使用了P(mutex_z)和V(mutex_z)进行保护,正确。对y的操作,使用了P(mutex_y2)和P(mutex_y1)(第二次识别结果)或P(mutex_y1)和P(mutex_y2)(第一次识别结果,顺序与标准答案相反)。标准答案中申请顺序为mutex_y1、mutex_y2,而学生第一次识别结果为mutex_y2、mutex_y1,第二次识别结果为mutex_y2、mutex_y1。由于mutex_y1和mutex_y2保护的是同一个资源y的不同访问组合,申请顺序不影响正确性,只要成对使用且释放顺序相反即可,因此不构成逻辑错误。代码正确,得2分。

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

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发