文章
21
粉丝
0
获赞
0
访问
1.7k
semaphore t=1;//铁锹
semaphore h=0;//洞
semaphore tree =0;//种好的树
甲
turn 1
{
while(h>=3);
wait(t);
挖洞
signal(h);
signal(t);
}
乙
turn 2
{
wait(h);
放树苗
wait(t);
填土
signal(t);
signal(tree);
}
丙
turn 3
{
wait (tree);
浇水
}
评分及理由
(1)信号量定义及初值(满分2分)
得分:1分
理由:学生定义了三个信号量:t(铁锹互斥,初值1正确)、h(树坑计数,但初值应为0而非0,且缺少对最大树坑数量的控制信号量)、tree(种好的树计数,初值0正确)。但缺少关键信号量sk(控制最大可挖树坑数为3),且h的初值应为0(正确),但语义不清晰。扣1分。
(2)甲进程同步逻辑(满分2分)
得分:0分
理由:甲使用while(h>=3)忙等待而非信号量机制,违反题目要求(应使用wait/signal操作);且未实现对树坑数量小于3的条件判断(应通过信号量sk实现)。逻辑错误严重,扣2分。
(3)乙进程同步逻辑(满分2分)
得分:1分
理由:乙通过wait(h)等待树坑,通过signal(tree)通知丙浇水,基本正确。但未释放sk信号量(乙填土后应增加可挖坑数),且填土后未释放铁锹(实际已释放,但信号量操作顺序有瑕疵)。扣1分。
(4)丙进程同步逻辑(满分1分)
得分:1分
理由:丙通过wait(tree)等待种好的树,然后浇水,逻辑正确,无错误。
题目总分:1+0+1+1=3分
登录后发布评论
暂无评论,来抢沙发