Skip to content

2026年 408 操作系统 第 29 题

操作系统2026年选择题2分

题目

下列方法中能够有效降低系统平均访存时间的是( )。

Ⅰ. TLB Ⅱ. 多级页表 Ⅲ. 工作集概念 Ⅳ. 页表缓冲队列

错因

A

漏选了 Ⅳ。可能对"页表缓冲队列"(被换出的页面先入空闲/修改队列、未被覆盖前可"反悔"取回)这个机制不熟,于是不敢选。这个机制的核心收益是减少缺页时的磁盘 I/O,而磁盘 I/O 是几个数量级最慢的开销,所以它对平均访存时间的优化作用相当显著。

B

误以为"多级页表"也能降低访存时间。这是把多级页表的目的搞反了:多级页表是为了节省页表自身的内存占用(无需为整个虚拟地址空间一次性分配大块连续页表),代价反而是访存次数从"1 次查页表 + 1 次取数据"变成" 次查页表 + 1 次取数据"——每多一级页表,就多一次访存。它抬高了平均访存时间,与降低相反。同时漏选了 Ⅰ 和 Ⅳ。

D

把多级页表当成了访存优化手段,再加上漏掉了"工作集"对降低缺页率的贡献。工作集的思想是:只把进程当前活跃使用的页面留在内存里,避免无谓的换页——缺页率一降,由缺页带来的高昂磁盘 I/O 成本就大幅减少,平均访存时间随之下降。把"工作集"理解成只是个抽象概念、看不到性能影响,是这道选项的常见误区。

总解析

判定原则:把每种方法对"平均访存时间公式"的贡献位置看清楚。

简化模型

降低任一项就能降低整体——重点是这两项:地址转换时间、缺页率/缺页处理代价。

逐项分析

机制影响公式哪一项是否降低访存时间
Ⅰ. TLB缓存最近访问的页表项命中时 从一次完整查表降到 1 个 cache 周期✓ 显著降低
Ⅱ. 多级页表把大页表拆成树状多层 从 1 次查表变成 次查表✗ 反而升高(节省的是空间不是时间)
Ⅲ. 工作集只保留进程"近期常用"页面在内存 大幅下降✓ 降低(缺页处理是几毫秒级,省一次差好几个数量级)
Ⅳ. 页缓冲队列被换出的页先入空闲队列,未被覆盖前可零成本取回即便发生缺页, 也可能不需走磁盘✓ 降低

关键辨析

  • TLB 是硬件 cache,命中率通常 95%+,对访存时间是数量级的改善
  • 多级页表是空间-时间权衡:用更多次访存换更省的页表内存;想抵消它带来的延迟开销正是 TLB 的作用
  • 工作集理论的实际收益体现在缺页率上——缺页一次几毫秒,普通访存几纳秒,省一次缺页相当于省百万次普通访存
  • 页缓冲队列(如 Linux 的 buddy + LRU 页面回收链)是 OS 层的"软 cache",缺页时先查它再考虑读盘

只有 Ⅰ、Ⅲ、Ⅳ 真正降低访存时间;Ⅱ 是节省空间、反而增加单次访存时延。

最终答案是 C(Ⅰ、Ⅲ、Ⅳ)

最后更新:

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