Skip to content

2016年 408 操作系统 第 29 题

操作系统2016年选择题2分

题目

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

image-20260426234619144

图示页面访问序列在 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)页号
66
50
43
32
23
12

最近 6 次访问的页面:6, 0, 3, 2, 3, 2

去重得到工作集

关键点:① 方向是过去(已发生的访问); ② 窗口大小 = 访问次数而非页面数;③ 集合去重——同一页在窗口内出现多次只算一次。

逐项核对:

选项内容判定
A 正是 t 前最近 6 次访问的去重
B看了 t 后的访问
C看了 t 后最近 6 次的去重
Dt 前 6 次以上(最近 7 次或更多)

最终答案是 A

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题