文章

21

粉丝

0

获赞

0

访问

1.0k

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


评分及理由

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

得分:2分

理由:

学生作答存在以下逻辑错误:

  • 错误1:碗的信号量初始化错误。标准答案中碗的信号量初值应为 min(m, n-1),以限制同时就餐人数防止死锁,而学生直接初始化为 m,忽略了 n-1 的限制,可能导致当 m > n-1 时超过实际安全并发数,存在死锁风险。
  • 错误2:哲学家取筷子的顺序逻辑错误。学生使用了 if (i / 2 == 0) 的奇偶判断,但标准答案并未使用此方法。更关键的是,在 if 分支中,哲学家先取右边筷子((i+1)%n)后取左边筷子(i),且中间出现了重复的“进餐;”和“V(A[(i+1)%n]);”操作,导致逻辑混乱、资源释放不当。例如:先 P(A[(i+1)%n]) 进餐一次,再 P(A[i]) 又进餐一次,且 V(A[(i+1)%n]) 被重复执行,破坏了互斥与同步规则。
  • 错误3:进餐操作重复且位置错误。在 if 分支中,两次调用了“进餐;”,且第一次进餐时只持有右边筷子,未持有左边筷子和碗(虽然 P(bow) 在先,但之后应等待筷子全到才能进餐),违反“必须取到碗和两侧筷子才能就餐”的要求。
  • 正确部分:学生正确使用了信号量机制,定义了碗和筷子的信号量,并进行了 P/V 操作的基本设置,且整体思路试图解决哲学家就餐问题。因此获得部分分数。

题目总分:2分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发