文章

292

粉丝

0

获赞

2

访问

79.6k

头像
2019年计算机学科专业基础综合试题 - 第43题回答
操作系统
发布于2025年11月4日 17:37
阅读数 144


评分及理由

(1)信号量定义部分得分及理由(满分2分)

学生定义了三个信号量:c[n](筷子)、b[m](碗)和mutex(互斥锁)。其中c[n]和b[m]的初值都设为1,这与标准答案中筷子信号量初值为1一致,但碗的信号量定义方式与标准答案不同。标准答案使用一个bowls信号量表示可用碗的数量(初值为min(n-1, m)),而学生使用m个独立的碗信号量,这种思路虽然不同但理论上可行。mutex信号量的引入是为了解决资源分配时的互斥问题,但具体使用方式需要进一步分析。此部分没有明显错误,得2分。

(2)资源申请逻辑得分及理由(满分4分)

学生的资源申请逻辑存在严重问题:

  • 在申请筷子时使用了if条件判断而非P操作,这违反了信号量的基本使用原则,可能导致竞态条件
  • 筷子申请成功后没有及时释放mutex,导致其他哲学家无法并发执行
  • 碗的申请逻辑复杂且容易出错,使用了循环查找可用的碗
  • 整个资源申请过程被mutex完全包围,严重降低了并发性能
  • 没有体现"防止死锁"和"使尽可能多的哲学家同时就餐"的核心要求

与标准答案相比,学生的解决方案在防止死锁和提升并发度方面存在明显不足。扣3分,得1分。

(3)资源释放逻辑得分及理由(满分2分)

学生的资源释放逻辑基本正确:在就餐后正确释放了两根筷子和使用的碗。虽然碗的释放使用了jnum变量记录,但逻辑上是可行的。此部分没有明显错误,得2分。

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

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发