Skip to content

基本分页(地址变换)

考情分析

分页是内存管理的核心考点,地址变换过程和 TLB 的计算是大题常客。属于 🔥🔥🔥 高频核心。

连续分配浪费严重,分页的思路很直接:把进程和内存都切成固定大小的小块,哪里有空就往哪里塞,再用一张页表记住谁放在了哪里。

基本概念

概念说明
页面(Page)将进程的逻辑地址空间分成大小相等的块
页框(Frame)将物理内存分成与页面大小相同的块
页表(Page Table)记录页面到页框的映射关系——就像一本通讯录,用页号查到对应的物理块号,就知道数据实际住在哪

页面大小通常为 4KB212B)。

逻辑地址结构

逻辑地址 = 页号 P + 页内偏移 W

|← ── 页号 P ── →|← 页内偏移 W →|
   高位部分              低位部分
  • 页面大小为 2k → 页内偏移占 k 位
  • 页号 $= $ 逻辑地址 / 页面大小
  • 页内偏移 $= $ 逻辑地址 % 页面大小

示例:页面大小 4KB = 212B,逻辑地址 0x00002A1F

  • 页内偏移占 12 位:0xA1F
  • 页号:0x2(第 2 页)
  • 查页表得到第 2 页对应的页框号,假设为 8
  • 物理地址 =8×4096+0xA1F=0x8A1F

地址变换过程

基本分页需要两次内存访问

  1. 第一次:访问页表(查页框号)
  2. 第二次:访问实际数据

快表 TLB

为了减少访存次数,引入快表(TLB, Translation Lookaside Buffer)——一个高速缓存,存放最近访问过的页表项。快表相当于你手机里的"最近通话"——大部分时候你要找的人就在里面,不用翻整本通讯录。

带 TLB 的地址变换

情况访存次数
TLB 命中1 次(只访问数据)
TLB 未命中2 次(访问页表 + 访问数据)

有效访存时间计算

设 TLB 命中率为 p,TLB 访问时间为 ttlb,内存访问时间为 tmem

EAT=p×(ttlb+tmem)+(1p)×(ttlb+2×tmem)

示例ttlb=20nstmem=200nsp=90%

EAT=0.9×(20+200)+0.1×(20+400)=198+42=240ns

若没有 TLB:每次都需 2 次访存 = 400ns。引入 TLB 后降低到 240ns。

多级页表

当逻辑地址空间很大时(如 32 位地址),页表本身也很大。解决方案:多级页表

二级页表

将页表再分页,建立页目录表指向各个页表页:

逻辑地址: |一级页号|二级页号|页内偏移|

页目录表 → 页表页 → 页框号

二级页表需要 3 次访存(TLB 未命中时):页目录 → 页表 → 数据

n 级页表需要 n+1 次访存(TLB 未命中时)。

交互可视化

加载可视化中...

页表项大小的计算

示例:物理内存 4GB,页面大小 4KB。

  • 页框数 =4GB/4KB=220=1M
  • 页框号需要 20 位
  • 页表项至少 20 位 → 实际通常取 4B(对齐到字节边界)

易错

TLB 相关的访存次数是计算题高频陷阱:

  • TLB 命中1 次访存(只访问数据)——TLB 本身是高速缓存,访问 TLB 不算访存
  • TLB 未命中2 次访存(查页表 + 访问数据)
  • 如果是 n 级页表 + TLB 未命中:n+1 次访存

常见错误:把 TLB 访问时间算成一次访存。TLB 是寄存器/Cache 级别的硬件,比内存快得多,EAT 公式中 ttlbtmem 是分开算的。

考研高频考点

  • 🔥🔥🔥 逻辑地址到物理地址的变换过程(手算)
  • 🔥🔥🔥 TLB 命中和未命中时的访存次数
  • 🔥🔥🔥 有效访存时间 EAT 的计算
  • 🔥🔥 多级页表的访存次数(n 级 = n+1 次)
  • 🔥🔥 页表项大小的计算
  • 🔥 分页系统有内碎片(最后一页可能不满)无外碎片

分页从系统管理角度出发,把一切切成固定大小。但程序员写代码时想的是"代码段""数据段"这样的逻辑结构——下篇来看以用户视角划分的基本分段。

真题练习

相关真题(15题)

2026Q28选择题2分

多级页表:计算三级页表占用的页框数

2026Q29选择题2分

访存优化:TLB加速地址转换,工作集和页缓冲降低缺页率

2026Q30选择题2分

共享文件:不同进程中虚拟地址不同但映射到相同物理地址

2025Q24选择题2分

上下文切换:中断向量表是系统全局的,切换时不需要更新

2024Q45综合题7分

综合题:页式虚拟存储管理的地址结构与页表计算

2023Q25选择题2分

位图管理:16GB/4KB=4M个页框,4M位=512KB

2023Q30选择题2分

共享内存:不同进程虚拟页号不一定相同,但映射到同一物理页框

2022Q25选择题2分

进程切换:需要更新PC、栈基址、页表基址等所有进程上下文

2020Q29选择题2分

二级页表:计算页目录表的表项个数

2019Q31选择题2分

二级页表地址结构:从虚拟地址中提取页目录号和页号

2018Q45综合题8分

综合题:虚拟地址计算、PDBR特性、改进CLOCK页表项字段

2017Q45综合题7分

综合题:二级分页虚拟存储管理的地址变换和进程状态分析

2014Q28选择题2分

TLB加速:增大TLB容量和页表常驻内存都能加快地址转换

2014Q32选择题2分

多级页表优点:不需要连续存放整个页表,减少连续内存占用

2009Q29选择题2分

二级页表:一个页面可放2¹⁰/2=512个页表项,2¹⁶/512=128个页目录项