文章

78

粉丝

0

获赞

0

访问

3.4k

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

semaphore mutex_x=1;//互斥访问x

semaphore mutex_y=1; //互斥访问y

semaphore mutex_z=1; //互斥访问z

thread1 {

cnum w;

p(mutex_x);

p(mutex_y);

w=add(x,y);

v(mutex_x);

v(mutex_y);

...

}

thread2 {

cnum w;

p(mutex_y);

p(mutex_z);

w=add(y,z);

v(mutex_y);

v(mutex_z);

... }

thread3 {

cnum w;

w.a=1;

w.b=2;

p(mutex_z);

z=add(z,w);

v(mutex_z);

p(mutex_y);

y=add(y,w);

v(mutex_y);

... }


评分及理由

(1)信号量定义(满分3分)

得分:2分

理由:学生定义了mutex_x、mutex_y、mutex_z三个信号量,但mutex_x是多余的(因为x未被任何线程修改),且mutex_y的定义方式未能区分thread1和thread3、thread2和thread3的并发访问需求(标准答案需要两个独立的y信号量)。扣1分。

(2)thread1实现(满分1分)

得分:0.5分

理由:虽然实现了对y的互斥访问,但错误地加入了x的互斥(x未被修改,不需要互斥)。扣0.5分。

(3)thread2实现(满分1分)

得分:1分

理由:正确实现了对y和z的互斥访问,逻辑与标准答案一致。

(4)thread3实现(满分3分)

得分:2分

理由:实现了对z和y的互斥访问,但未区分thread1和thread3、thread2和thread3对y的并发访问需求(标准答案需要两个独立的y信号量)。扣1分。

题目总分:2+0.5+1+2=5.5分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发