| 项目 | 值 |
|---|---|
| 核心概念 | 页大小为 $2^n$ B 时,逻辑地址低 n 位为页内偏移,高位为页号 |
| 关键公式 / 性质 | $\text{逻辑地址} = \text{页号} + \text{页内偏移}$ |
| 考试频率 | ⭐⭐⭐⭐ |
页式存储管理:将进程的逻辑地址空间划分为大小相等的页(Page),内存划分为同样大小的页框 / 页帧(Frame)。页和页框从 0 开始编号。进程的最后一页可能产生页内碎片(内部碎片)。
页表:每个进程一张,记录页号到页框号的映射。页表基址寄存器(PTBR)存放页表起始地址。页表项包含:页框号、有效位(在 / 不在内存)、访问位、修改位、保护位。
快表(TLB):联想存储器,按内容查找,速度极快。TLB 命中则直接得到页框号,未命中则查页表并更新 TLB。有效访问时间计算需考虑 TLB 命中率。
两级 / 多级页表:解决页表过大问题。将页表再分页,外层页表常驻内存,内层页表按需调入。地址结构变为:一级页号 | 二级页号 | 页内偏移。
段式存储管理:按程序逻辑结构划分为若干段(代码段、数据段等),每段长度不等,有段名和段号。段表记录:段长 + 基址。
段页式存储管理:先分段,再在每段内分页。地址结构:段号 | 页号 | 页内偏移。需要三次访存(查段表 → 查页表 → 访目标数据)。
| 概念 | 定义 |
|---|---|
| 页面 | 进程逻辑地址空间划分的等大小单位 |
| 页框(帧) | 物理内存划分的与页面等大小的单位 |
| 页表 | 实现页号到页框号映射的数据结构 |
| TLB(快表) | 高速缓存,存储最近使用的页表项,加速地址转换 |
| 页内偏移 | 逻辑地址中页内部分,页式管理中逻辑地址和物理地址的偏移相同 |
| 段 | 按逻辑意义划分的地址空间单位,各段长度不等 |
| 段表 | 记录每段在内存中的起始地址和段长 |
| 内部碎片 | 分配单元内未被利用的空间(页式管理产生) |
| 外部碎片 | 内存中无法利用的小空闲分区(段式管理产生) |
| 考点 | 说明 |
|---|---|
| 逻辑地址 → 物理地址转换 | 给定页表或 TLB,计算物理地址 |
| 页表大小计算 | 页表项数 $\times$ 每项大小,注意对齐 |
| 有效访问时间计算 | $EAT = \alpha \times (\text{TLB时间} + \text{内存时间}) + (1-\alpha) \times (\text{TLB时间} + 2 \times \text{内存时间})$,$\alpha$ 为 TLB 命中率 |
| 多级页表访存次数 | k 级页表需 k+1 次访存,有 TLB 则命中只需 1 次 |
| 分页 vs 分段对比 | 页大小固定 vs 段长可变、一维 vs 二维地址空间、内部 vs 外部碎片 |
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。