文章
986
粉丝
5
获赞
20
访问
246.5k

评分及理由
(1)信号量定义部分
得分:2分(满分2分)
理由:学生定义了四个信号量,与标准答案一致。虽然信号量名称有差异(如 mutex_T 对应 mutexT,hell 对应 sk),但含义相同,且初值设置正确(mutex_T 初值应为1,但第一次识别中未显式写出初值,第二次识别中未写初值,根据上下文可推断为1,且标准答案中 mutexT 初值为1,此处不扣分)。empty 和 water 初值为0正确。符合题目要求“定义尽可能少的信号量”。
(2)甲、乙、丙进程的同步互斥实现
得分:4分(满分5分)
理由:
甲进程:逻辑正确,wait(hell) 控制可挖坑数,wait(mutex_T) 互斥使用铁锹,挖坑后释放铁锹并 signal(empty) 通知乙有坑可用。与标准答案一致。
乙进程:在第一次识别中缺少 signal(water) 操作,这将导致丙进程无法被唤醒,属于逻辑错误。第二次识别中乙进程增加了 signal(water),逻辑正确。根据题目要求“对学生作答进行了两次识别,只要其中有一次回答正确则不扣分”,因此乙进程逻辑按正确处理。
丙进程:在两次识别中,丙进程均在浇水后执行了 signal(water),这是错误的。因为 water 信号量用于乙通知丙有树苗需要浇水,丙浇水后不应再 signal(water),否则会错误地增加需浇水树苗计数,破坏同步逻辑。这是一个逻辑错误,扣1分。
其他部分(如互斥使用铁锹、坑数同步)均正确。
题目总分:2+4=6分
题目总分:6分
登录后发布评论
暂无评论,来抢沙发