文章
393
粉丝
0
获赞
2
访问
35.3k
seamphore mutexchanzi=1 //表示甲乙对铲子的互斥访问
semaphore pot=0 //表示树坑
semaphore tong //表示丙可以给树苗浇水
甲(){
while(pot<3)
p (mutexchanzi)
挖坑
v(mutexchanzi)
v(pot)
}
乙(){
while(1)
p(pot)
放树苗
p(mutexchanzi)
填土
v(mutexchanzi)
v(tong)
}
丙(){
while(1)
p(tong)
浇水
}
评分及理由
(1)得分及理由(满分7分)
学生答案整体思路正确,实现了三人之间的基本同步关系:甲挖坑后乙才能放树苗填土,乙完成后丙才能浇水,且铁锹的互斥使用得到体现。但存在以下逻辑错误和表述问题:
tong 未赋初值(应为0),且未说明其作用。while(pot<3) 错误。题目要求“当树坑数量小于3时,甲才可以挖树坑”,但学生使用了信号量 pot 来表示已挖好的坑(初始为0),此条件判断无法正确限制并发挖坑数不超过3,且未使用信号量机制实现该限制,属于逻辑错误。p(mutexchanzi))再执行“放树苗并填土”的整体操作,因为填土需要铁锹。学生代码将“放树苗”置于获取铁锹之前,不符合资源使用逻辑。seamphore 拼写错误,p() 和 v() 虽可接受,但题目要求用 wait() 和 signal()。鉴于核心同步框架正确,但存在关键逻辑错误(特别是对挖坑数量的限制实现错误),扣3分。得分为:7 - 3 = 4分。
题目总分:4分
登录后发布评论
暂无评论,来抢沙发