文章

176

粉丝

0

获赞

0

访问

13.8k

头像
2019年(408)计算机学科专业基础综合试题 - 第43题回答
操作系统
发布于2025年11月12日 16:06
阅读数 83


评分及理由

(1)信号量定义部分(满分2分)

得分:0分。理由:学生定义了三个信号量,但存在多处错误。首先,碗的信号量bowl初值为m,但标准答案中碗的信号量初值应为min(m, n-1),这里没有考虑最大可进餐名额限制。其次,chopsticks信号量定义错误,应该是一个数组,每个元素对应一根筷子,而学生定义为单个信号量且初值为n-1。最后,额外定义的mutex信号量是不必要的,会导致性能下降。

(2)筷子操作部分(满分3分)

得分:1分。理由:学生基本理解了需要获取左右两根筷子的逻辑,使用了P(chopsticks[i])和P(chopsticks[(i+1)%(n-1)])的操作顺序。但是chopsticks不是数组,且取模运算中使用了n-1而不是n,这是错误的。考虑到核心思路是获取左右筷子,给1分基础分。

(3)碗资源管理部分(满分3分)

得分:1分。理由:学生理解了需要获取碗资源(P(bowl))并在用餐后释放(V(bowl)),但碗的获取顺序放在了筷子之后,且没有考虑最大并发数量的限制。碗的信号量初值设置错误,没有使用min(m, n-1)。考虑到基本理解了碗资源的管理,给1分基础分。

题目总分:0+1+1=2分

总体评价:学生的答案在基本思路上与标准答案有相似之处,理解了哲学家需要获取碗和筷子资源,但在关键细节上存在多处错误:信号量定义错误、筷子索引计算错误、碗资源管理不当、不必要的互斥锁等,这些逻辑错误导致无法正确解决死锁问题和实现最大并发。

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发