内存管理-分页存储管理
1. 分页的核心思想
为解决连续分配的碎片问题,将进程逻辑地址空间和内存物理空间按固定大小划分:
- 页面(Page):进程逻辑地址空间的固定大小块(如4KB),编号为页号(从0开始)。
- 页框(Page Frame/物理块):内存物理空间的固定大小块(与页面大小相同),编号为页框号(从0开始)。
- 页内碎片:进程最后一个页面可能未占满,产生的内部碎片(平均为半个页面大小)。
2. 分页存储的基本概念
2.1 页面大小
- 要求:通常为
,便于地址拆分。
- 权衡:
- 过小 → 页面数多 → 页表过长,地址转换开销大。
- 过大 → 页内碎片多 → 内存利用率低。
2.2 地址结构
逻辑地址分为两部分:![]()
- 页号 ( P ):索引页表,确定页面在内存中的物理块。
- 页内偏移 ( W ):页面内的具体地址(范围:0 ~ 页面大小-1)。
- 示例:32位地址,页面大小4KB(12位偏移)→ 页号占20位(最多 (
) 个页面)。
2.3 页表
- 作用:记录进程页面与物理页框的映射关系,实现从页号到物理块号的转换。
- 结构:每个进程一张页表,每个页表项含物理块号(及状态位等)。
- 特点:页表项连续存放,页号隐含(通过索引获取,不占用存储空间)。

3. 基本地址变换机构
将逻辑地址转换为物理地址的硬件过程(需页表寄存器PTR支持):
- 拆分逻辑地址:

越界检查:若
,触发越界中断。查页表得物理块号:

计算物理地址:
4. 具有快表(TLB)的地址变换
问题:基本变换需两次访存(查页表+存取数据),速度慢。
优化:增设快表(Translation Lookaside Buffer)——高速缓冲存储器,存放近期访问的页表项。
地址变换流程:
- CPU给出逻辑地址,提取页号 ( P )。
- 快表命中:直接从快表取物理块号 ( b ),拼接 ( W ) 得物理地址(一次访存)。
快表未命中:访问内存页表取 ( b ),拼接 ( W ) 得物理地址,并将该页表项存入快表(两次访存)。
快表特性:
- 命中率:通常>90%,显著降低访存延迟。
- 局部性原理:基于程序访问的局部性,近期访问的页面再次访问概率高。
5. 两级页表(解决页表过大问题)
问题:32位系统中,若页面大小4KB、页表项4B,页表项数为 ,需 ( 4MB ) 连续内存(无法满足)。
解决方案:对页表再分页,形成外层页表(页目录) 和内层页表:
- 外层页表:记录内层页表的物理块号(页目录项)。
- 内层页表:记录进程页面的物理块号(普通页表项)。
两级页表的核心思想
将单级页表进一步分页,形成“外层页表(页目录)+ 内层页表(普通页表)”的两级结构:
- 内层页表:原单级页表被拆分为多个小页表(每个小页表大小=1页),存放页面→物理块的映射。
- 外层页表(页目录):记录各内层页表的物理块号(即内层页表的存放位置),自身大小恰好为1页
地址结构(32位示例):![]()
地址变换流程:
需借助外层页表寄存器(页目录基址寄存器) 完成,步骤如下:
1.查外层页表:
- 外层页表寄存器存放外层页表始址。
- 用 P1作为索引,访问外层页表,得到内层页表的物理块号 b1
2.查内层页表:
- 内层页表始址 = b1×4KB(页面大小)。
- 用 P2作为索引,访问内层页表,得到目标页面的物理块号 b2。
3.计算物理地址: 物理地址=b2×4KB+W物理地址=b2×4KB+W
访存次数:共3次(外层页表→内层页表→目标内存单元),可通过快表(TLB)优化为1次。
- 外层页号 ( P1 ) 索引外层页表,得内层页表始址。
- 内层页号 ( P2 ) 索引内层页表,得物理块号 ( b )。
- 拼接 ( b ) 与 ( W ) 得物理地址(三次访存,可通过快表优化)。
两级页表的优势
- 离散存储页表:内层页表可分散存放于不连续的页框,无需大块连续内存。
- 减少内存开销:仅需将当前使用的内层页表调入内存(未使用的可驻留磁盘,结合虚拟内存)。
- 外层页表紧凑:大小固定为1页(4KB),易于管理和存放。
6. 多级页表的扩展(64位系统)
64位地址空间下,两级页表仍可能导致外层页表过大(如4KB页面、4B页表项,外层页号需42位,外层页表项数= ,无法存储)。
解决方案:采用多级页表(如4级页表),对各级页表递归分页,最终使最外层页表大小为1页,通过多级索引实现地址转换。
核心考点
- 地址拆分与计算:给定逻辑地址、页面大小,计算页号、页内偏移及物理地址。
- 快表的作用:减少访存次数(从2次→1次),依赖局部性原理提升命中率。
- 两级页表的必要性:解决单级页表需连续大内存的问题,通过离散存储页表降低内存开销。
- 页表项大小:需能容纳物理块号(如32位地址、4KB页面→页表项至少3B,通常取4B对齐)。
总结
分页存储通过“固定大小划分+页表映射”实现内存离散分配,解决了外部碎片问题,但存在页内碎片。快表和多级页表分别优化了地址转换速度和页表存储开销,是现代操作系统的核心内存管理技术。
✨ 一句话记忆:分页固定大小,页表映射地址,快表加速转换,多级页表离散存储! ✨