文章

75

粉丝

0

获赞

0

访问

15.8k

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


评分及理由

(1)得分及理由(满分7分中的部分,通常按小题分值分配,此处题目总分7分,但未明确划分各小题分值。根据常见分配,第(1)问定义信号量约占1-2分)

学生定义了信号量 Rkey 和 Wkey,并初始化。但缺少了实现“写者优先”的关键信号量(如标准答案中的 read_try),也缺少了保护读者/写者计数的互斥信号量(如 mutex_r, mutex_w)。定义的信号量数量不足,功能不完整,无法完全实现题目要求的“写者优先”同步机制。因此扣分。得分:0.5分(满分若按2分计)。

(2)得分及理由(满分7分中的部分,读者进程代码框架)

读者进程中,先对 Rkey 进行 P/V 操作来增加 numR,但 Rkey 被用作互斥保护 numR,这基本正确。然后直接 P(Wkey) 试图锁定资源。这里存在逻辑错误:1. 没有实现“写者优先”,新读者在写者等待时不应直接进入。2. 对 Wkey 的 P 操作位置不当,会导致多个读者无法同时读(因为每个读者都会 P(Wkey),而 Wkey 初始为1,第一个读者 P 后变为0,第二个读者会被阻塞在 P(Wkey) 上,违反了“允许多个读者同时读取”的要求)。思路有根本性错误。得分:0分(满分若按2分计)。

(3)得分及理由(满分7分中的部分,写者进程代码框架)

写者进程中,判断 if (numW==0) 时对 Rkey 和 Wkey 进行 P 操作,意图是第一个写者阻止新读者并等待资源。但存在严重逻辑错误:1. 对 numW 的修改没有放在互斥保护中,存在竞态条件。2. P(Wkey) 和后续操作逻辑混乱,例如,写者进入后 numW++,但写操作前后对锁的释放判断条件有误(第二次识别中 if (numW == 0) 才释放,但此时 numW 已减为0,条件成立,会释放 Wkey 和 Rkey;第一次识别中 if (numW!=0) 释放,逻辑相反且错误)。整体框架无法正确实现互斥与写者优先。得分:0分(满分若按2分计)。

(4)得分及理由(满分7分中的部分,解释信号量作用。本题要求中第(4)问需简要解释,但学生作答未包含此部分)

学生答案中未对信号量的作用和工作原理进行解释。因此不得分。得分:0分(满分若按1分计)。

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

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发