Skip to content

2016年 408 操作系统 第 26 题

操作系统2016年选择题2分

题目

某系统采用改进型 CLOCK 置换算法,页表项中字段 A 为访问位,M 为修改位。A=0 表示页最近没有被访问,A=1 表示页最近被访问过。M=0 表示页没有被修改过,M=1 表示页被修改过。按 (A, M) 所有可能的取值,将页分为四类:(0, 0)、(1, 0)、(0, 1) 和 (1, 1),则该算法淘汰页的次序为( )。

错因

B

把"修改成本"放后于"近期访问"了——觉得 A 重要、M 是次要因素。但改进型 CLOCK 的核心理念是先看 A 再看 M——A=0 是首选(最近没访问),同样 A=0 时优先选 M=0 的(不用写回)。第二轮才让 A=1 的页参与,这时也是 M 优先。把顺序排成"先 A 再 M"会得到 (0,0) → (1,0) → (0,1) → (1,1),但这不符合"M=0 优先"的写回成本逻辑——A 同等条件下应当 M 优先。

C

把 (1,1) 放在 (1,0) 前——但已访问 + 已修改的页是改进型 CLOCK 最不愿动的(写回慢 + 最近还在用)。把它排到第三是把"修改成本"看得太重,忽略了"最近用过"的局部性预测意义。算法实际把 (1,1) 排最后:双重不利。

D

(1,1) 第二,(0,1) 第三——多半把"已修改"看成绝对优先级、把 A 位忽略了。但 A 位是评估"短期内还会用"的关键信号,A=1 的页无论 M 如何都比 A=0 的页更不该换。

总解析

改进型 CLOCK 把 (A, M) 分四类,按"两个轴"决定优先级:

含义偏好
A 访问位最近是否使用A=0 优先(不影响局部性)
M 修改位是否要写回外存M=0 优先(无写回开销)

A 比 M 更重要——因为 A 位反映"未来还会不会用",是最直接的预测;M 位只影响"换出时是否要写回",是成本但不是预测。所以排序优先级:

  1. 第一优先:A=0(不影响局部性的页)
  2. A 同级时:M=0(不用写回的)

按这个原则排:

排名(A, M)含义替换代价
1(0, 0)没访问、没改最低(直接丢)
2(0, 1)没访问、改过较低(要写回)
3(1, 0)访问过、没改较高(牺牲局部性)
4(1, 1)访问过、改过最高(局部性 + 写回)

速记:A 是大维度(先看),M 是小维度(同 A 等级时再比)。最理想:从来没访问过 + 没改 = (0,0),扔掉零成本;最不愿动:刚用过 + 还改过 = (1,1)。

实际算法走法:

找哪类路径动作
1(0, 0)找到就换,没找到不动位
2(0, 1)找到就换;同时沿途清 A 位(让 (1,) 退化成 (0,) 给后续轮用)
重复 1, 2直到找到

最终淘汰次序:(0,0) → (0,1) → (1,0) → (1,1)。

最终答案是 A

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数