文章

147

粉丝

0

获赞

0

访问

7.5k

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


评分及理由

(1)得分及理由(满分8分)

学生答案中定义了碗的信号量 wan = m 和筷子信号量数组(每个初值为1),并给出了哲学家进程的基本框架,使用了P、V操作来实现同步。这些部分符合题目要求,体现了对互斥与同步的基本理解。

但是,答案存在以下主要逻辑错误:

  1. 死锁风险未解决:学生代码中哲学家先申请两根筷子,再申请碗。虽然碗的数量m可能有限制,但并未将碗的数量与防止死锁的最大并发哲学家数(n-1)联系起来。标准答案通过设置 bowls = min(m, n-1) 来确保最多只有 n-1 位哲学家竞争筷子,从而避免死锁。学生答案直接使用 wan = m,当 m ≥ n 时,所有哲学家可能同时拿起一根筷子,导致死锁。因此,这是一个严重的逻辑缺陷。
  2. 申请资源的顺序可能引起死锁:即使碗的数量有限,若多位哲学家同时各持有一根筷子等待另一根,仍可能死锁。标准答案通过先限制碗(即进餐名额)来防止所有哲学家同时进入竞争筷子的状态,这是关键的死锁预防措施。学生答案未体现这一点。
  3. 代码细节错误:学生代码中筷子下标使用 nini-1,未正确处理圆桌环形结构(例如第1位哲学家的左边筷子应是 n 而不是 ni-1)。但根据“误写不扣分”原则,若判断为识别或书写错误,可不单独扣分。然而,核心逻辑错误(死锁预防)仍需扣分。

综合来看,学生答案实现了基本的信号量设置和P、V操作,但未正确解决死锁问题,扣除此部分分数。考虑到题目总分为8分,根据评分要求,对于有逻辑错误的答案不能给满分。学生答案在核心同步逻辑上存在缺陷,但框架正确,给予部分分数。

得分:4分(满分8分)。扣分原因:未通过碗的信号量初值设置或资源申请顺序来防止死锁,这是题目的关键要求。

题目总分:4分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发