文章
135
粉丝
93
获赞
1
访问
39.7k

评分及理由
(1)信号量定义部分(满分约2分)
得分:2分
理由:学生定义了四个信号量,与标准答案对应关系为:Tq 对应 mutexT(铁锹互斥),Emptykeng 对应 sk(可挖坑数,初值3),full keng 对应 empty(可用树坑数,初值0),Shu 对应 water(待浇水树苗,初值0)。信号量命名虽不同,但含义与初值均正确,符合题目要求“定义尽可能少的信号量”。
(2)甲进程代码(满分约2分)
得分:2分
理由:甲进程逻辑正确。先 wait(Emptykeng) 确保坑数小于3才可挖坑,再 wait(Tq) 获取铁锹,挖坑后释放铁锹并 signal(full keng) 通知乙有坑可用。与标准答案完全一致。
(3)乙进程代码(满分约2分)
得分:1分
理由:存在逻辑错误。错误1:在 wait(full keng) 之前执行了“放树苗”操作,这不符合题目步骤顺序(应先有坑才能放树苗)。错误2:填土后 signal(full keng) 是错误的,此处应 signal(Emptykeng) 或类似含义的信号量以允许甲继续挖坑(因为乙填土后完成一个坑,相当于释放了一个可挖坑的资源)。标准答案中乙是 signal(sk)。学生代码中 signal(full keng) 会导致 full keng 计数错误增加,破坏同步。但 signal(Shu) 通知丙浇水是正确的。因此扣除1分。
(4)丙进程代码(满分约1分)
得分:0.5分
理由:存在逻辑不严谨。丙进程中“拿水桶”操作未用信号量保护,但题目中水桶只有一个,且未明确要求互斥,通常可忽略。主要错误在于浇水后 signal(Shu) 是不必要的,因为 Shu 信号量用于表示需要浇水的树苗数量,浇水后不应增加该计数。这会导致 Shu 计数错误,可能使丙重复等待或无法正确同步。但考虑到水桶资源可能隐含互斥,且学生可能意图释放水桶,此处扣0.5分。
题目总分:2+2+1+0.5=5.5分
根据题目总分7分,按比例折算为:5.5 / 7 ≈ 0.7857,考虑到各部分分值权重,综合给分:
最终得分:5分(四舍五入取整)
登录后发布评论
暂无评论,来抢沙发