文章

986

粉丝

5

获赞

20

访问

247.9k

头像
2026 年 408 冲刺预测 3 套卷(一) - 第46题回答
操作系统
发布于2025年12月3日 15:48
阅读数 142


评分及理由

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

学生定义了信号量 wrt 和 mutex,以及变量 read_count 和 writer_waiting,但缺少实现“写者优先”所需的关键信号量(如 read_try)和用于保护写者计数的 mutex_w。信号量初始化未明确写出,但根据上下文可推断。定义不完整,扣1分。得1分。

(2)得分及理由(满分2分)

读者进程代码框架存在严重逻辑错误:

  • 在检查 writer_waiting > 0 后直接执行 V(mutex) 并 P(wrt),这会导致读者在写者等待时仍可能进入,未实现写者优先。
  • 读者在进入读取前执行了 P(wrt),这会阻止其他读者和写者,违背了“允许多个读者同时读取”的要求。
  • 读者代码中出现了两次 P(mutex) 和 V(mutex) 包裹的 read_count 修改,但中间缺少实际的读取操作,且第二次修改 read_count 的代码位置错误(应放在读取操作之后)。

代码框架无法正确实现同步,逻辑错误较多,扣2分。得0分。

(3)得分及理由(满分2分)

写者进程代码框架存在逻辑错误:

  • 写者通过 writer_waiting = 1 标记等待,但未实现多个写者计数,无法正确处理多个写者同时等待的情况。
  • 写者在 P(wrt) 之前设置 writer_waiting = 1,但在 P(wrt) 之后立即将其置0,这会导致在写者持有 wrt 期间,新读者可能因为 writer_waiting = 0 而进入,无法保证写者优先。
  • 写者代码中 V(wrt) 出现在最后,但缺少对写入操作(临界区)的描述,且 P(wrt) 和 V(wrt) 之间没有明确的写入操作框架。

代码框架无法正确实现写者优先和互斥写入,逻辑错误较多,扣2分。得0分。

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

学生作答中未包含对信号量作用和工作原理的解释部分,因此不得分。得0分。

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

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发