Appearance
408
操作系统
OS-03-03 非连续分配:页式管理
一、定位信息
- 所属圈层:核心层
- 前置知识回顾:理解连续分配方式(特别是动态分区)存在外部碎片问题,知道地址转换的基本原理(逻辑地址→物理地址)。了解内存按字节编址的基本概念。
- 知识网络位置:本单元是非连续分配的核心,与OS-03-04(段式管理)、OS-03-05(段页式管理)并列,共同构成非连续分配的三种方式。页式管理是虚拟内存(OS-03-06~03-10)的硬件基础,也是现代操作系统最主流的内存管理方式。
- 考点热度等级:H级(高频重点)——页式管理的地址转换、页表结构、快表(TLB)是几乎每年必考的核心知识点。
二、知识点讲解
2.1 基本思想
页式管理将进程的逻辑地址空间划分为等大小的页(Page),将物理内存划分为等大小的页框(Page Frame)(也称页帧、物理块)。页和页框大小相同,通常为 字节(如4KB)。进程的各页可以装入内存中任意一个空闲页框,不需要连续存放,从而彻底消除外部碎片。
2.2 地址结构
逻辑地址被划分为两部分:
- 页号 :逻辑地址 / 页大小(整除)
- 页内偏移 :逻辑地址 % 页大小(取余)
例如:页大小为 字节,逻辑地址 ,则页号 ,页内偏移 。
物理地址同样被划分为:
- 页框号 :物理地址 / 页大小
- 页内偏移 :与逻辑地址中的偏移相同(页与页框大小相同)
2.3 页表(Page Table)
每个进程维护一张页表,记录该进程每个页号对应的页框号。页表通常存储在内存中,由操作系统维护。页表的第 项记录第 页装入的页框号。
地址转换过程:
- 从逻辑地址中提取页号 和页内偏移
- 以 为索引查页表,得到页框号
- 物理地址 =
2.4 快表(TLB, Translation Lookaside Buffer)
每次地址转换都需要访问内存查页表,相当于每次内存访问变成两次(一次查页表,一次取数据),速度减半。为解决此问题,引入快表——一种高速缓存,存储最近使用的页表项。
改进的地址转换过程:
- 从逻辑地址提取页号 和页内偏移
- 先查快表:若命中,直接得到页框号 (1次内存访问)
- 若快表未命中,查内存中的页表得到 ,并将该页表项存入快表(2次内存访问)
- 物理地址 =
**有效访问时间(EAT)**计算:设快表访问时间为 ,内存访问时间为 ,快表命中率为 ,则:
2.5 多级页表
当逻辑地址空间很大时(如 或 ),页表本身也很大,需要连续存储会占用大量内存。多级页表将页表本身也进行分页,形成层次结构。例如二级页表:一级页表 → 二级页表 → 页框号。顶级页表常驻内存,低级页表按需调入。
三、记忆与理解辅助
1. 类比记忆:页式管理就像把一本书(逻辑地址空间)撕成一页一页的,然后把这些散页随意放入文件柜(物理内存)的任意抽屉中。页表就是一张"目录",告诉你第几页在哪个抽屉。
2. 口诀:"页式分页等大小,页框随便装;页表查框号,快表加速找;偏移不变框乘大,加偏移得物理地址。"
3. 页式 vs 段式 对比表(★本章核心对比):
| 对比项 | 页式管理 | 段式管理 |
|---|---|---|
| 划分方式 | 等大小(硬件决定) | 不等大小(逻辑决定) |
| 划分依据 | 物理(内存块大小) | 逻辑(程序模块) |
| 地址结构 | 页号 + 页内偏移 | 段号 + 段内偏移 |
| 内部碎片 | 有(最后一页) | 无 |
| 外部碎片 | 无 | 有 |
| 共享与保护 | 不方便(一页可能含多个逻辑段) | 方便(一个段是一个逻辑单位) |
| 用户可见性 | 用户不可见 | 用户可见(段名、段号) |
4. 地址转换关键公式:
- 页号 ( 为逻辑地址, 为页大小)
- 页内偏移
- 物理地址 =
四、例题与精解
例题1(基础巩固)
题目:某系统页大小为 ,某进程的页表如下:
| 页号 | 页框号 |
|---|---|
| 0 | 5 |
| 1 | 3 |
| 2 | 8 |
| 3 | 1 |
求逻辑地址 对应的物理地址。
命题意图:考查页式管理的基本地址转换过程。
精解:
1. 审题分析:页大小 字节,逻辑地址 ,页表已知。需要提取页号和偏移,查表得到页框号,计算物理地址。
2. 解题思路:,,查表得 ,物理地址 = 。
3. 完整步骤:
- 页号
- 页内偏移
- 查页表:页号2对应的页框号
- 物理地址 =
4. 方法反思:地址转换的核心是三步——拆分地址、查页表、拼接物理地址。注意页内偏移在转换前后不变,这是页式管理的重要特征。
例题2(中等提升)
题目:某系统页大小为 ,内存访问时间为 ,快表访问时间为 ,快表命中率为 。问: (1)有效访问时间是多少? (2)若要使有效访问时间不超过 ,快表命中率至少需要多少?
命题意图:考查快表机制和有效访问时间的计算。
精解:
1. 审题分析:已知内存访问时间 ,快表访问时间 ,命中率 。需要计算有效访问时间。
2. 解题思路:用公式 。
3. 完整步骤:
(1)
(2)设快表命中率为 ,要求 :
即快表命中率至少需要 。
4. 方法反思:有效访问时间的计算是页式管理的经典考点。关键在于理解:快表命中只需1次内存访问(查快表+访问目标单元,快表访问时间与内存访问时间重叠或单独计算,取决于题目设定),未命中需要2次内存访问(查页表+访问目标单元)。不同教材对快表访问时间的处理略有差异,以题目给定的条件为准。
五、考情分析
- 考查频次:页式管理在近5年真题中出现频率极高,每年至少1-2道选择题,经常出现在综合大题中。
- 常见题型:选择题(地址转换计算、页表项判断)、综合题(结合虚拟内存、缺页中断的完整场景)。
- 分值占比:选择题2-4分,综合题可占5-10分。
- 命题趋势:近年来更倾向于将页式管理与TLB、多级页表、缺页中断结合考查,单纯的地址转换计算题减少。需要掌握完整的工作流程。基于大纲与命题规律推测。
六、易错点提醒
错误表现:计算页号时用"逻辑地址 / 页大小"得到小数,不知道取整。 错误原因:对页号的定义(整数部分)理解不清。 正确理解/做法:页号 = (向下取整),页内偏移 = 。例如 ,页号是 不是 。
错误表现:认为页式管理完全没有碎片问题。 错误原因:忽略了最后一页可能填不满的情况。 正确理解/做法:页式管理消除了外部碎片,但存在内部碎片——进程的最后一页通常不会恰好填满。平均每个进程浪费半页空间。
错误表现:计算有效访问时间时,将快表访问时间和内存访问时间简单相加。 错误原因:不理解快表是高速缓存,其访问可以与CPU操作并行。 正确理解/做法:快表访问时间通常远小于内存访问时间,且可以与CPU操作并行。具体计算方式以题目给定条件为准,一般公式中快表时间 和内存时间 是相加关系。
错误表现:在多级页表中,认为每级页表都需要常驻内存。 错误原因:不理解多级页表的核心优势——按需调入。 正确理解/做法:只有顶级页表需要常驻内存,低级页表可以按需调入,这是多级页表节省内存的关键。
七、来源标注
- 依据2026考研统考408大纲
- 依据《操作系统概念》(Operating System Concepts, Silberschatz)第9章
- 依据汤小丹《计算机操作系统》第4版第3章