文章

7

粉丝

0

获赞

0

访问

33

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


评分及理由

(1)信号量设计及初始化:得分2/4

学生使用了整型变量wan表示碗的数量,但未使用信号量来管理碗资源,存在竞态条件风险。筷子资源使用整型数组chopstick表示,同样未使用信号量,无法保证原子操作。虽然使用了一个互斥信号量mutex,但未正确初始化碗和筷子的信号量机制。扣2分。

(2)资源申请逻辑:得分1/4

学生尝试通过互斥锁保护下的条件判断一次性申请碗和筷子,思路正确但实现存在严重问题:
- 条件wan > 1应为wan > 0,逻辑错误扣1分;
- 筷子索引计算错误,chopstick[i-1]未处理环形边界(如i=0时越界),逻辑错误扣1分;
- 资源申请后未进入就餐阶段直接释放锁,但缺少就餐操作调用(第二次识别有eat()),此处不扣分。
合计扣3分,本部分得1分。

(3)资源释放逻辑:得分1/2

资源释放部分位于循环外,无法正常执行,属于结构性逻辑错误。释放时未处理筷子环形索引问题。扣1分。

(4)死锁预防:得分0/2

未体现任何死锁预防机制(如限制进餐人数、资源有序分配等),且代码存在明显的死锁风险(所有哲学家竞争同一把互斥锁时可能饥饿)。扣2分。

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

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发