文章

314

粉丝

1

获赞

107

访问

61.6k

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


评分及理由

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

学生作答存在多处逻辑错误,与标准答案相比差距较大。具体扣分理由如下:

  • 核心思路错误:学生试图使用一个互斥信号量(mutex)来一次性检查并获取碗和两根筷子,这本质上将并发访问串行化,严重限制了并发性,与题目要求的“使尽可能多的哲学家同时就餐”相悖。标准答案通过独立的碗信号量和筷子信号量,并调整碗的数量来防止死锁并最大化并发。
  • 资源管理错误:学生对筷子资源的使用方式不正确。在标准信号量P/V操作中,应使用`P(chopsticks[i])`来申请资源,而不是检查一个数组值然后手动递减。学生的代码中`chopsticks[i]`作为信号量却与整数值比较(`==1`),这是对信号量概念的误用。
  • 进程模型错误:学生的代码中只有一个`process()`函数,且使用了变量`i`,但没有清晰定义这是哪个哲学家的编号,进程模型不完整。标准答案应为每个哲学家定义一个明确的进程。
  • 同步逻辑不完整:学生的代码在获取资源后直接`break`跳出循环,然后注释“哲学家开始进餐”,但缺少实际的进餐、放回资源(V操作)和循环思考-进餐的完整流程。放回资源的操作缺失。
  • 细节错误:第二次识别结果中,判断筷子条件的代码为`chopsticks[i + 1]`,未对下标取模(`%n`),当i为n-1时会越界。

综上,该答案未能正确使用信号量机制描述哲学家就餐问题的同步与互斥,核心思路、资源管理方法和进程模型均存在根本性问题。但答案中识别出了碗和筷子两种资源,并试图进行互斥访问,体现了一定的问题理解。

给予基础分:2分

题目总分:2分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发