文章
5
粉丝
0
获赞
0
访问
84
(1)
是,因为B是临界资源,不可同时访问(不可同时写)
(2)
semaphore S = 0 // 表示B是否不为空
P1
C1;
signal(S);
P2
wait (S);
C2;
(3)
semaphore S = 1; //表示B能否被占用
P1
wait(S);
C3;
signal(S);
P2
wait(S);
C3;
signal(S);
评分及理由
(1)得分及理由(满分2分)
学生回答“是,因为B是临界资源,不可同时访问(不可同时写)”。该回答正确指出了C1操作涉及对共享缓冲区B的写入,需要互斥访问,因此是临界区。理由充分,与标准答案一致。得2分。
(2)得分及理由(满分3分)
学生定义了一个信号量S(初值0)表示B是否不为空。P1执行C1后signal(S),P2执行wait(S)后执行C2。该方案缺少对缓冲区B的互斥保护(mutex信号量),因为C1和C2操作本身可能涉及对共享缓冲区的读写,需要互斥访问以防止数据不一致。例如,如果多个进程同时执行C1或C2,可能产生竞态条件。因此,该方案存在逻辑错误,未实现完整的同步和互斥。扣2分(互斥缺失严重错误)。得1分(因为同步部分正确,但互斥部分缺失)。
(3)得分及理由(满分3分)
学生定义了一个信号量S(初值1)表示B能否被占用,并使用wait/signal操作包裹C3。该方案正确实现了对C3操作的互斥访问(因为C3修改缓冲区B,需要互斥),且信号量初值合理(初始非空,可直接访问)。与标准答案一致。得3分。
题目总分:2+1+3=6分
登录后发布评论
暂无评论,来抢沙发