文章

110

粉丝

0

获赞

0

访问

7.4k

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


评分及理由

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

学生定义了三个信号量:mutex_y1、mutex_y2、mutex_z,与标准答案完全一致,分别用于保护y变量在thread1和thread3之间的访问、y变量在thread2和thread3之间的访问、z变量的互斥访问。因此得3分。

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

thread1中正确使用了P(mutex_y1)和V(mutex_y1)来保护对y的访问(在add(x,y)中),实现与thread3的互斥。虽然代码中变量类型写成了"(num"和"num"(应为cnum),但这是识别错误,不扣分。因此得1分。

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

thread2中正确使用了P(mutex_y2)和P(mutex_z)来保护对y和z的访问(在add(y,z)中),并按照与申请相反的顺序释放信号量。实现与thread3的互斥。因此得2分。

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

thread3中:

  • 对z的操作正确使用了P(mutex_z)和V(mutex_z)保护 - 得0.5分
  • 对y的操作正确使用了P(mutex_y1)和P(mutex_y2)以及相应的V操作保护 - 得1分
  • 虽然第二次识别中"z = add(z, n)"应为"z = add(z, w)",但根据上下文判断为识别错误,不扣分
  • 信号量申请顺序合理,释放顺序正确 - 得0.5分

因此thread3部分得2分。

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

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发