文章
288
粉丝
0
获赞
1
访问
28.6k
评分及理由
(1)信号量定义部分(满分2分)
得分:0分
理由:学生定义了多个信号量,但含义不清晰且存在错误。标准答案中需要碗的信号量(bowls)和筷子信号量数组(chopsticks[n]),而学生定义了people、w、k、mutex四个信号量,其中w和k的初值设置虽然与碗和筷子数量相关,但未体现筷子是每根独立管理的特性。特别是"people"信号量的定义完全多余且含义不明。信号量定义部分完全不符合题目要求。
(2)资源申请与释放逻辑(满分4分)
得分:0分
理由:学生的代码逻辑存在严重错误:①没有体现哲学家需要获取左右两根筷子的过程;②使用mutex信号量将整个资源申请过程原子化,这会严重降低并发度,与题目"使尽可能多的哲学家同时就餐"的要求相违背;③代码中P(m)和P(k)的操作对象与定义的信号量名称不一致(应该是P(w)和P(k)),但即使修正后,逻辑仍然错误,因为这样无法防止死锁。
3)死锁预防与并发优化(满分2分)
得分:0分
理由:学生的解决方案没有体现任何死锁预防机制。标准答案通过限制碗的数量为min(n-1, m)来确保最多只有n-1位哲学家能同时申请筷子,从而破坏死锁的必要条件。学生的方案既没有考虑碗的数量限制,也没有正确的筷子获取顺序,必然会导致死锁。
题目总分:0+0+0=0分
登录后发布评论
暂无评论,来抢沙发