Appearance
题目
某进程访问页面的序列如下所示。

图示页面访问序列在 t 时刻的前后情况:
- t 之前(按时间从早到晚):..., 1, 3, 4, 5, 6, 0, 3, 2, 3, 2
- t 时刻(在 2 之后、0 之前)
- t 之后(按时间从早到晚):0, 4, 0, 3, 2, 9, 2, 1, ...
若工作集的窗口大小为 6,则在 t 时刻的工作集为( )。
错因
B
窗口方向看反了——选了 t 之后最近 6 次访问的去重集合(0, 4, 0, 3, 2, 9 → {0, 4, 3, 2, 9},再去重凑成 4 个)。但工作集是基于已经访问过的历史——即 t 之前的窗口,不是 t 之后的预测。t 时刻还没看到未来的访问。
C
直接把 t 之后最近 6 次访问的去重集合 {0, 4, 0, 3, 2, 9} = {0, 4, 3, 2, 9} 当成答案——5 个不同页面。同样是把"未来"当成了工作集。工作集定义里"窗口"指过去 Δ 时间窗口,方向是过去而非未来。
D
包含了 t 之前的最近 7 次访问 (5, 6, 0, 3, 2, 3, 2 去重得 {5, 6, 0, 3, 2}),或者数错了 6 个范围。工作集窗口大小 = 6 指最近 6 次访问,不是"6 个不同页面"。把 6 当成集合大小要凑出 6 元素就会错。
总解析
工作集 W(t, Δ):进程在时刻 t 之前最近 Δ 次访问中所涉及的不同页面集合。这里 Δ = 6。
抽 t 时刻之前最近 6 次访问:
按图示,t 时刻之前的访问序列(从早到晚)是 ..., 1, 3, 4, 5, 6, 0, 3, 2, 3, 2。取末尾 6 个:
| 序号(最近的为 1) | 页号 |
|---|---|
| 6 | 6 |
| 5 | 0 |
| 4 | 3 |
| 3 | 2 |
| 2 | 3 |
| 1 | 2 |
最近 6 次访问的页面:6, 0, 3, 2, 3, 2
去重得到工作集:
关键点:① 方向是过去(已发生的访问); ② 窗口大小 = 访问次数而非页面数;③ 集合去重——同一页在窗口内出现多次只算一次。
逐项核对:
| 选项 | 内容 | 判定 |
|---|---|---|
| A | ✓ 正是 t 前最近 6 次访问的去重 | |
| B | 看了 t 后的访问 | |
| C | 看了 t 后最近 6 次的去重 | |
| D | t 前 6 次以上(最近 7 次或更多) |
最终答案是 A。