文章

83

粉丝

160

获赞

0

访问

1.5k

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


评分及理由

(1)信号量定义与初始化(满分2分)

得分:1分

理由:学生正确定义了碗的信号量 bowl = min(m, n-1),这是防止死锁的关键,符合标准答案思路。但在筷子信号量定义上存在明显错误:首先用循环定义了 chopstick[i](但语法不标准),随后又重复定义了一个固定大小为5的数组 chopstick[5] = {1,1,1,1,1},且未体现 n 的通用性。此外,第一次识别中出现了“chopstack”的拼写/识别错误,但根据上下文可判断为“chopstick”的误写,不扣分。由于核心的碗信号量定义正确,但筷子信号量定义混乱且有错误,扣1分。

(2)哲学家进程的同步互斥操作逻辑(满分5分)

得分:4分

理由:学生给出的哲学家进程逻辑结构基本正确:先 P(bowl),再依次获取左右筷子,进餐后按相反顺序释放筷子,最后 V(bowl)。这个顺序与标准答案一致,能有效防止死锁并允许最多 min(m, n-1) 位哲学家同时进餐。主要扣分点在于:代码中使用了固定值“5”作为取模运算的基数((i+1)%5),而题目要求是 n 位哲学家,这是一个逻辑错误,扣1分。此外,代码结构有些混乱(如 eat() 函数定义包裹了循环),但核心的 P、V 操作序列正确。

(3)整体结构与说明(满分1分)

得分:0.5分

理由:学生的答案包含了必要的信号量说明(如“保证不发生互锁”),体现了对问题关键的理解。但代码整体结构不清晰,存在重复定义和硬编码问题,扣0.5分。

题目总分:1+4+0.5=5.5分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发