文章
126
粉丝
0
获赞
3
访问
21.6k
评分及理由
(1)得分及理由(满分2分)
学生回答“是,因为B为空才能执行C1,保证了P1和P2互斥访问。” 标准答案中强调C1的代码是临界区,因为多个进程同时执行C1会导致对共享缓冲区B的并发写入,需要互斥。学生的回答正确指出了互斥访问的必要性,但理由表述不够完整(标准答案提到“数据不一致性”等细节),但核心逻辑正确。因此得2分。
(2)得分及理由(满分3分)
学生定义了两个信号量empty和full,初值分别为1和0,并使用P和V操作(即wait和signal)实现了同步:P1执行C1前P(empty),之后V(full);P2执行C2前P(full),之后V(empty)。这与标准答案使用mutex和full的思路不同(标准答案用mutex保证互斥,full同步),但学生的方案同样正确且满足要求(B为空时才能执行C1,B非空时才能执行C2),并且使用了尽可能少的信号量(两个)。逻辑正确,无错误。因此得3分。
(3)得分及理由(满分3分)
学生定义了一个信号量mutex(初值为1)用于互斥访问B,并在P1和P2中分别使用P(mutex)和V(mutex)保护C3操作。标准答案同样使用一个mutex信号量实现互斥。学生的第一次识别结果完全正确;第二次识别结果中多定义了“semaphore full - n;”,但根据题目要求“定义尽可能少的信号量”,且C3操作只需互斥(B非空时即可执行,无需同步),多余信号量不影响核心逻辑(学生实际代码中未使用full)。因此,核心逻辑正确,无扣分理由。得3分。
题目总分:2+3+3=8分
登录后发布评论
暂无评论,来抢沙发