文章
281
粉丝
0
获赞
0
访问
46.7k

评分及理由
(1)信号量定义部分(满分2分)
得分:1分
理由:学生定义了碗的信号量a(初值m)和筷子信号量数组L[n](初值全1),这部分正确。但额外定义了mutex和mutex1两个互斥信号量,这是不必要的,且mutex1用于保护碗的信号量操作,实际上碗的信号量操作本身是原子的,不需要额外保护。由于多定义了不必要的信号量,扣1分。
(2)哲学家进程逻辑部分(满分6分)
得分:3分
理由:学生基本理解了需要获取碗和两根筷子的逻辑顺序,但存在以下逻辑错误: - 使用mutex保护两根筷子的获取,这会降低并发度,且可能导致死锁(所有哲学家都拿到一根筷子后互相等待) - 筷子释放时使用了错误的索引计算:V((L[i]+1)%m) 应该是 V(L[(i+1)%n]) - 没有考虑最大可进餐名额的限制(应该是min(m, n-1)) - 获取资源的顺序不够优化 由于存在明显的逻辑错误,扣3分。
题目总分:1+3=4分
总体评价:学生理解了问题的基本要求,知道需要使用信号量管理碗和筷子资源,但在防止死锁和优化并发方面考虑不够充分,资源获取顺序和信号量使用存在明显问题。
登录后发布评论
暂无评论,来抢沙发