文章
202
粉丝
0
获赞
0
访问
53.1k

评分及理由
(1)信号量定义及初值(满分约2分)
得分:1分
理由:学生定义了三个信号量:shovel(初值1,互斥铁锹)、water(初值0,同步乙丙)、hole(初值3,控制挖坑数量)。与标准答案相比,缺少了用于同步甲、乙之间“可使用的树坑数量”的信号量(标准答案中的empty)。hole信号量虽然初值为3,但其作用在代码逻辑中与标准答案的sk类似,但缺少empty会导致甲挖坑后乙无法及时获知有坑可用(乙的启动依赖于shovel的释放,而非坑的可用性),这是一个逻辑缺陷。因此扣1分。
(2)甲进程的同步互斥逻辑(满分约2分)
得分:1分
理由:甲进程中,先wait(hole)(相当于控制挖坑数量不超过3),再wait(shovel)获取铁锹,然后挖坑,最后signal(shovel)释放铁锹。但缺少signal(empty)来通知乙有坑可用,导致乙无法被正确唤醒(乙的启动条件只有wait(shovel))。这是一个同步逻辑错误,扣1分。
(3)乙进程的同步互斥逻辑(满分约2分)
得分:1分
理由:乙进程中,直接wait(shovel)获取铁锹,然后放树、填土,之后signal(shovel)释放铁锹,再signal(water)通知丙浇水,signal(hole)允许甲继续挖坑。但乙缺少等待“有坑可用”的同步信号量(即标准答案中的empty),导致乙可能在甲挖坑之前就试图填土(实际上乙需要等待甲挖好坑)。同时,乙释放hole的位置正确(填土后),但缺少对empty的等待使得同步关系不完整。扣1分。
(4)丙进程的同步互斥逻辑(满分约1分)
得分:1分
理由:丙进程正确等待water信号量后浇水,逻辑正确,不扣分。
题目总分:1+1+1+1=4分
登录后发布评论
暂无评论,来抢沙发