文章

63

粉丝

0

获赞

0

访问

2.5k

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


评分及理由

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

学生定义了三个信号量:y_13(用于thread1和thread3对y的互斥)、y_23(用于thread2和thread3对y的互斥)、z_23(用于thread2和thread3对z的互斥)。这与标准答案的mutex_y1、mutex_y2、mutex_z完全对应,只是命名不同。信号量初始值均为1,正确。得3分。

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

thread1中只访问了全局变量x和y,其中y需要与thread3互斥。学生使用P(y_13)和V(y_13)保护了w=add(x,y)操作,正确。得1分。

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

thread2中需要访问y和z,其中y需要与thread3互斥(使用y_23),z需要与thread3互斥(使用z_23)。学生正确使用了P(y_23)、P(z_23)和相应的V操作保护了w=add(y,z),且PV操作顺序合理。得2分。

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

thread3中需要修改z和y。对z的修改(z=add(z,w))使用P(z_23)和V(z_23)保护,正确。对y的修改(y=add(y,w))使用P(y_23)和V(y_23)保护,正确。但标准答案中thread3修改y时需要同时获取mutex_y1和mutex_y2,而学生只使用了y_23(对应mutex_y2),缺少对y_13(对应mutex_y1)的保护。这会导致thread1和thread3可能同时访问y,存在数据竞争。扣1分。得1分。

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

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发