文章
187
粉丝
0
获赞
3
访问
17.0k

评分及理由
(1)得分及理由(满分2分)
学生回答“是的,C1要对缓冲区B进行操作。P1和P2必需互斥访问。” 这准确地指出了C1操作需要互斥执行,因为它是临界区。理由充分,与标准答案一致。得2分。
(2)得分及理由(满分3分)
学生定义了三个信号量:empty=1, mutex=1, full=0。其P1和P2的代码逻辑正确:P1先P(empty)检查缓冲区是否为空,再P(mutex)进入临界区执行C1,然后V(mutex)释放互斥锁,最后V(full)表示缓冲区有数据。P2先P(full)等待缓冲区有数据,再P(mutex)进入临界区执行C2,然后V(mutex)释放互斥锁,最后V(empty)表示缓冲区为空。该逻辑完全满足题目要求(B为空才能执行C1,B非空才能执行C2),且互斥保护得当。虽然信号量名称与标准答案略有不同(标准答案用mutex和full,学生增加了empty),但思路正确且完整,不扣分。得3分。
(3)得分及理由(满分3分)
学生定义了一个信号量mutex=1,并在P1和P2中正确使用P(mutex)和V(mutex)包裹C3操作。这确保了多个进程对缓冲区B的修改操作(C3)互斥进行,符合题目要求(B非空时才能执行C3,但互斥是主要需求)。学生的第二次识别结果中P1的代码“P(mutex)”正确(第一次识别中的“P(empty, mutex)”可能是识别错误,但以第二次为准)。逻辑正确。得3分。
题目总分:2+3+3=8分
登录后发布评论
暂无评论,来抢沙发