文章
412
粉丝
1102
获赞
1723
访问
141w
Semaphore chopstick={1,1,....1}//n个筷子
Semaphore max=n-1//最多允许n-1个哲学家用餐
Semaphore bowl=min(m,n-1)//碗比人少时,保证每个用餐的哲学家都有碗可用
p(max);
p(chop[i]);//取左筷子
p((chop[i]+1)%n);//取右筷子
p(bow);
用餐;
v(chop[i]);
v((chop[i]+1)%n);
v(bowl);
v(max);
思考;
评分及理由
(1)得分及理由
得分:2分
理由:学生正确定义了筷子的信号量(chopstick)并初始化,符合题目要求。这部分没有逻辑错误。
(2)得分及理由
得分:2分
理由:学生正确定义了碗的信号量(bowl)并初始化为min(m, n-1),符合题目要求。这部分没有逻辑错误。
(3)得分及理由
得分:2分
理由:学生正确定义了最大可进餐名额的信号量(max)并初始化为n-1,符合题目要求。这部分没有逻辑错误。
(4)得分及理由
得分:1分
理由:学生在P、V操作的顺序上存在逻辑错误。正确的顺序应该是先获取碗(bowl),再获取筷子(chopstick)。学生的顺序是先获取max,再获取筷子,最后获取bowl,这可能导致死锁或资源分配不合理。此外,学生将bowl拼写为bow,这是一个小错误。
(5)得分及理由
得分:1分
理由:学生在释放资源的顺序上基本正确,但拼写错误(bowl拼写为bow)和多余的max信号量的释放(max信号量在题目中并未要求)影响了得分。
题目总分:2+2+2+1+1=8分
登录后发布评论
暂无评论,来抢沙发