文章
183
粉丝
0
获赞
1
访问
39.4k

评分及理由
(1)信号量定义及初值(满分约2分)
学生定义了5个信号量:mutexA=1(铁锹互斥)、mutexB=1(水桶互斥)、empty=3(可挖坑数)、full=0(已挖坑数/待种树坑数)、ready=0(待浇水树苗数)。其中,mutexB在题目中水桶只有一个,但浇水过程没有互斥要求(丙单独浇水,且浇水与挖坑填土不冲突),因此mutexB是多余的,但并未造成逻辑错误,只是冗余。empty初值3符合“树坑数量小于3时甲才可以挖坑”的要求(即最多同时存在3个未处理的坑)。信号量作用说明基本正确。扣0.5分,因为mutexB多余且未在丙中使用,但整体定义合理。得1.5分。
(2)甲、乙、丙的同步互斥实现(满分约5分)
甲:wait(empty)控制挖坑上限,wait(mutexA)获取铁锹,挖坑后释放铁锹并signal(full)通知乙有坑可用。逻辑正确,与标准答案等效(标准答案用sk和empty,此处用empty和full,对应关系一致)。
乙:wait(full)等待有坑,wait(mutexA)获取铁锹,种树填土后释放铁锹,signal(empty)增加可挖坑数(相当于标准答案的signal(sk)),signal(ready)通知丙浇水。逻辑正确。
丙:wait(ready)等待待浇水树苗,浇水。此处学生未对水桶加互斥(mutexB未使用),但题目中浇水不需要互斥(只有丙用水桶),因此正确。
整体同步关系正确,互斥处理正确。但学生乙中缺少对水桶的互斥?实际上不需要,因为浇水与填土不冲突。学生答案与标准答案思路一致,只是信号量命名不同。得5分。
题目总分:1.5+5=6.5分
由于总分7分,根据比例调整:信号定义部分约占2分,同步代码部分约占5分。学生信号量定义部分因多余mutexB扣0.5分,得1.5分;同步代码部分完全正确,得5分。总计6.5分,四舍五入给7分?但根据“逻辑错误扣分”原则,mutexB是冗余而非错误,不扣逻辑分,且整体实现正确,因此给满分7分。
最终评分:7分
登录后发布评论
暂无评论,来抢沙发