文章
183
粉丝
0
获赞
0
访问
11.2k

评分及理由
(1)信号量定义及初值(满分约2分)
学生定义了mutex_T=1作为铁锹互斥信号量,正确,得1分。但学生将keng和shu直接定义为整型变量(或未明确为信号量),且未给出明确的信号量初值说明。题目要求“定义尽可能少的信号量”,标准答案使用了4个信号量,而学生试图用两个整型变量(keng, shu)和互斥信号量来实现同步,但keng和shu在PV操作中既作为条件判断变量又作为信号量使用,存在混淆,且未正确定义为信号量并赋初值。此处逻辑不清晰,扣1分。本部分得1分。
(2)甲(挖坑者)的同步逻辑(满分约2分)
学生代码中,甲(counter1)试图通过if(keng<3)来判断是否可挖坑,并在挖坑后keng++,然后signal(keng)。这里存在几个问题:1)对keng的判断和修改在互斥区内,但keng本身不是信号量,Wait(keng)和signal(keng)的语义不匹配(标准答案用sk控制可挖坑数);2)没有实现“当树坑数量小于3时”的限制(应理解为已挖未填的坑数小于3,即空闲坑位),学生的if(keng<3)条件在keng初始为0时成立,但后续keng会一直增加,无法限制已挖坑数;3)signal(keng)中的keng是整型变量,不能作为信号量操作。逻辑错误,扣2分。本部分得0分。
(3)乙(放树苗填土者)和丙(浇水者)的同步逻辑(满分约3分)
乙(counter2)中,Wait(keng)试图等待有坑可用,但keng非信号量;if(keng>0)判断多余(因为已Wait);填土后shu++并signal(shu),但未释放坑资源(即未实现“填土后坑可重新用于挖坑”的循环,标准答案中乙会signal(sk))。丙(counter3)中,Wait(shu)等待有树可浇水,浇水后执行keng--和shu--,意图可能是释放资源,但keng和shu的递减未与甲、乙的同步正确关联,且操作不在互斥保护下,可能导致数据不一致。整体上,乙和丙的同步逻辑与标准答案偏差较大,未能正确实现工序间的传递和资源循环。扣3分。本部分得0分。
题目总分:1+0+0=1分
登录后发布评论
暂无评论,来抢沙发