文章
117
粉丝
160
获赞
0
访问
3.7k

评分及理由
(1)得分及理由(满分2分)
得分:2分
理由:学生正确指出实现C1的代码是临界区,并给出了正确原因——需要对缓冲区B进行互斥访问以防止数据不一致。与标准答案核心思想一致,因此得满分。
(2)得分及理由(满分3分)
得分:2分
理由:学生定义了正确的信号量(empty和full)并设置了正确的初值(empty=1, full=0),这满足了“B为空时才能执行C1,B非空时才能执行C2”的同步要求,思路正确。但是,在P2()函数中使用了`while(1)`循环,这是一个逻辑错误。题目要求“进程P2执行C2一次”,而循环结构会导致P2在完成一次C2后,再次尝试执行C2,这与题意不符。因此扣除1分。
(3)得分及理由(满分3分)
得分:3分
理由:学生正确理解了C3操作需要互斥访问缓冲区B。定义了一个信号量(full,作为互斥锁)并设置初值为1,在P1和P2中正确使用P/V操作(即wait/signal)包裹C3操作,确保了互斥。虽然信号量命名为`full`,但其作用与标准答案的`mutex`完全相同,思路正确,实现无误,因此得满分。
题目总分:2+2+3=7分
登录后发布评论
暂无评论,来抢沙发