文章
41
粉丝
0
获赞
0
访问
299

评分及理由
(1)得分及理由(满分2分)
学生答案正确指出C1的代码是临界区,并给出了正确理由(写操作需要互斥)。与标准答案核心思想一致。
得分:2分。
(2)得分及理由(满分3分)
学生答案存在逻辑错误。题目要求“B为空时才能执行C1”,因此P1执行C1前需要等待B为空。学生定义的信号量empty_B初值为0,并在P1执行C1后才signal(empty_B),这会导致:若B初始为空,P2会因wait(empty_B)而阻塞,但P1可以立即执行C1,这符合“B为空执行C1”的要求。然而,学生的方案缺少了对缓冲区B的互斥保护。C1和C2可能同时访问B,导致数据不一致。标准答案使用了互斥信号量mutex来保护临界区。因此,学生的答案因缺少必要的互斥机制而存在逻辑不完整。
扣分:缺少互斥保护,扣1分。
得分:2分。
(3)得分及理由(满分3分)
学生答案正确。对于C3操作(修改数据),需要互斥访问缓冲区B。学生定义了一个互斥信号量mutex,初值为1,并在P1和P2的C3操作前后正确使用了wait和signal操作。思路与标准答案完全一致。
得分:3分。
题目总分:2+2+3=7分
登录后发布评论
暂无评论,来抢沙发