软件设计师 · 高频练习

TLB 快表为什么能加快分页地址转换?

中级 单选题 第 852 题 中等 软件设计师操作系统TLB快表页表地址转换
题目

在采用分页存储的系统中设置 TLB(快表),其主要目的是()。

A 扩大每个页面的大小,减少页内偏移位数
B 把磁盘中的全部页面永久装入内存
C 保证程序运行过程中绝不会发生缺页中断
D 缓存近期页表项,减少地址转换所需的内存访问
题目类型:原创高频练习题 用途:用于帮助理解软件设计师相关考点和答案解析,不等同于官方真题。
正确答案
D
答案解析

页表通常放在内存中,若没有 TLB,一次访存可能先访问页表,再访问目标数据。TLB 是保存近期页表项的高速相联存储器;命中时可以直接得到页框号,从而省去访问内存页表的步骤。

选项分析

A

错误。页面大小由系统设计决定,TLB 不改变地址字段划分。

B

错误。TLB 只保存少量页表项,不保存完整页面数据,更不会把磁盘页面全部装入。

C

错误。TLB 命中率高可以加快转换,但不能消除工作集不足造成的缺页。

D

正确。TLB 命中后可直接获得页框号,减少一次访问内存页表的开销。

本题为什么容易错

“未命中”三个字很像故障,但 TLB 未命中只是缓存里没有;内存页表仍可能显示该页有效。缺页中断则说明所需页面当前不在物理内存,两者代价差距很大。

先看结论

简短答案

TLB 快表为什么能加快分页地址转换,正确答案是 D(缓存近期页表项,减少地址转换所需的内存访问)。页表通常放在内存中,若没有 TLB,一次访存可能先访问页表,再访问目标数据。TLB 是保存近期页表项的高速相联存储器;命中时可以直接得到页框号,从而省去访问内存页表的步骤。

解析

易混淆概念对比表

概念本题判断区别要点记忆提示
扩大每个页面的大小,减少页内偏移位数 本题干扰项 错误。页面大小由系统设计决定,TLB 不改变地址字段划分。 看到该词不要急着选,先判断是否真正解决题干问题
把磁盘中的全部页面永久装入内存 本题干扰项 错误。TLB 只保存少量页表项,不保存完整页面数据,更不会把磁盘页面全部装入。 看到该词不要急着选,先判断是否真正解决题干问题
保证程序运行过程中绝不会发生缺页中断 本题干扰项 错误。TLB 命中率高可以加快转换,但不能消除工作集不足造成的缺页。 看到该词不要急着选,先判断是否真正解决题干问题
缓存近期页表项,减少地址转换所需的内存访问 本题正确答案 正确。TLB 命中后可直接获得页框号,减少一次访问内存页表的开销。 看到题干核心场景时优先联想到它
本题易混淆选项怎么区分
  • 扩大每个页面的大小,减少页内偏移位数:错误。页面大小由系统设计决定,TLB 不改变地址字段划分。
  • 把磁盘中的全部页面永久装入内存:错误。TLB 只保存少量页表项,不保存完整页面数据,更不会把磁盘页面全部装入。
  • 保证程序运行过程中绝不会发生缺页中断:错误。TLB 命中率高可以加快转换,但不能消除工作集不足造成的缺页。
复习

知识点详解

TLB 通常采用相联查找,以虚拟页号为线索快速找到页框号和访问控制信息。命中后,页框号与页内偏移组合成物理地址;未命中时再访问内存中的多级或单级页表,并可把结果写回 TLB。若页表项的有效位表明页面不在内存,才进入缺页异常处理。

备考速记

TLB 没找到先查页表,页表说不在才叫缺页。

TLB 在地址转换场景中的作用

TLB在本题中的核心价值,是解决“在采用分页存储的系统中设置 TLB(快表),其主要目的是()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。

拓展

同类题怎么考

  • 根据 TLB 命中率和内存访问时间计算有效地址转换时间。
  • 判断 TLB 未命中后下一步查页表还是直接访问磁盘。
  • 比较 TLB、Cache 和页表各自缓存或记录的内容。
TLB 在软件设计师软考中的考法

软考选择题通常不会只考概念定义,还会把TLB放到地址转换场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。

解题思路

老师常把 TLB 未命中和缺页画成两道门:第一道门没找到页表项,就去内存页表再查;查到页表项且有效,照样可以继续访问。只有页表告诉你页面不在内存,才需要触发缺页处理。

考点定位

TLB 缓存的是页号到页框号等页表项映射,提升地址转换速度;TLB 未命中只表示要查内存页表,不等于所访问页面一定不在内存。

易错提醒

  • 把 TLB 当成页面数据缓存;它缓存的是页表项,不是普通数据块。
  • 认为 TLB 未命中必然发生磁盘 I/O。
  • 忽略进程切换时 TLB 条目可能需要刷新,或通过地址空间标识符加以区分。

备考提示

  • 画出 CPU→TLB→内存页表→主存页面的查找路径,分别标注命中和未命中。
  • 把 Cache 未命中、TLB 未命中、缺页中断放在一起比较它们查找的对象和处理代价。

你可能还想了解

  • TLB 中保存的是页面数据还是页表项?
  • TLB 未命中为什么不一定发生缺页?
  • 一次分页访存为什么可能访问两次内存?
  • TLB 与 CPU Cache 有什么区别?

本文小结

TLB缓存近期页表项,命中时可直接取得页框号,省去访问内存页表的步骤。TLB未命中只需继续查页表,并不等于页面不在内存或一定触发缺页。