文章

91

粉丝

0

获赞

4

访问

9.6k

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


评分及理由

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

得分:1分

理由:学生定义了bowl信号量(初值m)和chopsticks信号量数组(初值全1),这部分正确。但额外定义了一个mutex信号量(初值n-1)并注释"确保最多有n个哲学家取筷子",这是错误的逻辑,因为n位哲学家最多只能有n-1位同时进餐。标准答案使用bowls = min(m, n-1)来限制进餐人数,而学生直接使用m,没有考虑n-1的限制。

(2)哲学家进程实现部分得分及理由(满分6分)

得分:3分

理由:学生正确使用了P(bowl)获取碗,P(chopsticks[i])和P(chopsticks[(i+1)%n])获取左右筷子,以及相应的V操作释放资源,这些基本操作正确。但是存在严重逻辑错误:将P(mutex)放在获取两根筷子之间,V(mutex)在获取两根筷子之后立即释放,这样mutex实际上没有起到保护作用,无法防止死锁。而且mutex的使用位置不当,应该在获取两根筷子的整个过程中保持互斥,或者采用其他更合理的同步方案。

(3)防止死锁机制部分得分及理由(隐含评分)

得分:0分

理由:学生虽然意识到需要防止死锁,但采用的mutex机制实现错误,没有真正解决死锁问题。标准答案通过限制碗的数量为min(m, n-1)来确保最多只有n-1位哲学家能进餐,从而破坏循环等待条件,这是正确的防死锁方案。

题目总分:1+3+0=4分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发