文章

19

粉丝

78

获赞

0

访问

402

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


评分及理由

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

学生作答得分为:2分

理由:

  1. 核心逻辑错误(扣4分):学生的解决方案存在严重逻辑问题。
    • 学生使用了单个互斥信号量 `mutex` 来包裹对碗和筷子的申请与释放。这会导致所有哲学家串行化地申请资源,即同一时刻只能有一个哲学家尝试拿碗和筷子,这严重违背了题目“使尽可能多的哲学家同时就餐”的要求,极大地降低了并发度。
    • 学生对左右筷子的信号量定义错误。题目中“每两位哲学家之间有一根筷子”,意味着有n根筷子,每根筷子是共享资源。学生的代码中,每个哲学家进程使用独立的 `left` 和 `right` 信号量(且初始化为1),这实际上为每个哲学家分配了“私有”的筷子,没有正确模拟共享筷子的争用,无法防止死锁(在其串行化模型下死锁虽被避免,但模型本身是错误的)。
  2. 部分正确(给2分)
    • 学生正确引入了碗资源(`bowl = m`)的信号量,并对其进行了P/V操作,意识到了碗是有限的资源。
    • 代码结构(循环、思考、进餐)和信号量的基本P/V操作语法正确。
  3. 未扣分项
    • 学生答案中“Semaphore left = right = 1;”可能存在字符识别或书写不规范,但根据上下文可推断其意图是定义两个信号量。根据“禁止扣分”原则,不因此扣分。
    • 代码中“进餐”后的释放资源部分再次使用 `P(mutex)` 是错误的,但这属于上述核心逻辑错误的一部分,已在总分中体现,不重复扣分。

综上所述,学生的方案因核心并发模型错误(串行化)和资源(筷子)建模错误,未能正确解决哲学家就餐问题,仅因正确引入了碗资源信号量而获得部分分数。

题目总分:2分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发