Appearance
408
操作系统
OS-03-05 非连续分配:段页式管理
一、定位信息
- 所属圈层:核心层
- 前置知识回顾:理解页式管理(等大小划分、页表、无外部碎片)和段式管理(逻辑划分、段表、有外部碎片)的基本原理和各自的优缺点。
- 知识网络位置:本单元是页式管理和段式管理的综合,取两者之长——用段式管理满足程序员的逻辑视角和共享保护需求,用页式管理消除外部碎片。段页式管理是现代操作系统(如Linux)实际采用的内存管理方式的理论基础。
- 考点热度等级:M级(中频常考)——段页式管理的地址转换过程是选择题和综合题的常见考点。
二、知识点讲解
2.1 基本思想
段页式管理将程序按逻辑结构划分为若干段,每个段再划分为若干页。进程的逻辑地址空间先分段,段内再分页。物理内存划分为与页大小相同的页框。
这样,程序员看到的是段(逻辑视角),但内存分配以页为单位(物理视角),兼具段式的逻辑清晰性和页式的无外部碎片优点。
2.2 地址结构
逻辑地址由三部分组成:
- 段号 :标识是哪个段
- 页号 :段内的第几页
- 页内偏移 :页内的偏移量
地址表示形式:,例如 表示第2段的第3页的第100字节处。
2.3 段表与页表
每个进程维护一张段表,每个段表项包含:
- 该段的页表起始地址(指向该段的页表)
- 该段的页表长度(该段包含多少页)
每个段有自己的页表,记录该段每页对应的页框号。
2.4 地址转换过程
完整的地址转换需要三次内存访问(不使用快表时):
- 从逻辑地址提取段号 、页号 、页内偏移
- 以 为索引查段表,得到该段的页表起始地址
- 以 为索引查该段的页表,得到页框号
- 物理地址 =
三次内存访问:①查段表 ②查页表 ③访问目标数据。引入快表后,命中时只需1次内存访问。
有效访问时间:设快表命中率为 ,内存访问时间为 ,快表访问时间为 :
2.5 优缺点
优点:
- 兼具段式的逻辑清晰性和页式的无外部碎片优点
- 便于共享和保护(以段为单位)
- 内存利用率高(以页为单位分配)
缺点:
- 地址转换复杂,需要三次内存访问(无快表时)
- 需要更多的硬件支持和表格(段表 + 多个页表)
- 系统开销较大
三、记忆与理解辅助
1. 类比记忆:段页式管理就像一本百科全书——先按学科分卷(段),每卷再按页码排列(页)。你想查某个知识点:先在目录中找到是哪一卷(查段表),再在该卷中找到是哪一页(查页表),最后找到页中的具体位置(偏移)。
2. 口诀:"段页先分段,段内再分页;段表指向页表头,页表找到框号走;三次访问记清楚,快表命中一次够。"
3. 三种非连续分配方式全面对比(★本章核心对比表):
| 对比项 | 页式管理 | 段式管理 | 段页式管理 |
|---|---|---|---|
| 划分方式 | 等大小分页 | 按逻辑分段 | 先分段,段内分页 |
| 地址结构 | |||
| 页/段表 | 页表 | 段表 | 段表 + 每段一个页表 |
| 内存访问次数(无快表) | 2次 | 2次 | 3次 |
| 内部碎片 | 有(最后一页) | 无 | 有(每段最后一页) |
| 外部碎片 | 无 | 有 | 无 |
| 共享 | 不方便 | 方便 | 方便(以段为单位) |
| 保护 | 以页为粒度 | 以段为粒度 | 以段为粒度 |
| 地址计算 | 除法+取余 | 直接编码 | 除法+取余+查段表 |
4. 内存访问次数对比:
- 页式(无快表):2次(查页表 + 访问数据)
- 段式(无快表):2次(查段表 + 访问数据)
- 段页式(无快表):3次(查段表 + 查页表 + 访问数据)
- 有快表时:命中时均为1次
四、例题与精解
例题1(基础巩固)
题目:某系统采用段页式管理,页大小为 。某进程的段表如下:
| 段号 | 页表起始地址 | 页表长度 |
|---|---|---|
| 0 | 20000 | 3 |
| 1 | 30000 | 2 |
段0的页表:
| 页号 | 页框号 |
|---|---|
| 0 | 10 |
| 1 | 15 |
| 2 | 8 |
段1的页表:
| 页号 | 页框号 |
|---|---|
| 0 | 20 |
| 1 | 5 |
求逻辑地址 和 对应的物理地址。
命题意图:考查段页式管理的完整地址转换过程。
精解:
1. 审题分析:逻辑地址格式为 ,需要先查段表获取页表位置,再查页表获取页框号,最后计算物理地址。
2. 解题思路:查段表 → 查页表 → 计算物理地址,同时检查越界。
3. 完整步骤:
地址 :
- 查段表:段0的页表起始地址 = 20000,页表长度 = 3
- 越界检查:页号 ✓,未越界
- 查段0的页表:页号1对应的页框号
- 物理地址 =
地址 :
- 查段表:段1的页表起始地址 = 30000,页表长度 = 2
- 越界检查:页号 ✓,未越界
- 查段1的页表:页号0对应的页框号
- 物理地址 =
4. 方法反思:段页式地址转换的关键是两次查表(段表→页表)。注意越界检查包括两层:①段号是否有效(本题未涉及);②页号是否超过该段的页表长度。
例题2(中等提升)
题目:某系统采用段页式管理,页大小为 ,内存访问时间为 ,快表访问时间为 ,快表命中率为 。 (1)不使用快表时,访问一个数据需要多少时间? (2)使用快表时,有效访问时间是多少?
命题意图:考查段页式管理的时间开销和快表优化效果。
精解:
1. 审题分析:段页式管理无快表时需要3次内存访问,有快表时需要考虑命中率。
2. 解题思路:无快表时3次内存访问,有快表时用有效访问时间公式。
3. 完整步骤:
(1)不使用快表:需要3次内存访问
- 第1次:查段表 →
- 第2次:查页表 →
- 第3次:访问目标数据 →
- 总时间 =
(2)使用快表:
4. 方法反思:段页式管理的3次内存访问是其最大缺点,快表的命中率对性能影响极大。从 降到 ,提升了约 。实际系统中快表命中率通常在 以上,效果更显著。
五、考情分析
- 考查频次:段页式管理在近5年真题中出现约2-3次。
- 常见题型:选择题(地址转换过程、内存访问次数判断)、综合题(与页式/段式对比)。
- 分值占比:选择题2分,综合题子问题3-5分。
- 命题趋势:段页式管理常与页式、段式管理一起作为对比题出现。近年来可能与虚拟内存、缺页中断结合考查。基于大纲与命题规律推测。
六、易错点提醒
错误表现:段页式地址转换时忘记查段表,直接用段号和页号去查页表。 错误原因:不理解段表的作用——段表告诉你该段的页表在哪里。 正确理解/做法:正确的顺序是:逻辑地址 → 查段表(得到页表地址) → 查页表(得到页框号) → 计算物理地址。两步查表缺一不可。
错误表现:认为段页式管理的内存访问次数是2次(与页式相同)。 错误原因:忽略了段表也需要一次内存访问。 正确理解/做法:无快表时,段页式需要3次内存访问:①查段表 ②查页表 ③访问数据。这是段页式的主要性能瓶颈。
错误表现:认为段页式管理完全消除了碎片。 错误原因:忽略了内部碎片仍然存在。 正确理解/做法:段页式消除了外部碎片(以页为单位分配),但每个段的最后一页可能存在内部碎片。平均每个段浪费半页空间。
七、来源标注
- 依据2026考研统考408大纲
- 依据《操作系统概念》(Operating System Concepts, Silberschatz)第9章
- 依据汤小丹《计算机操作系统》第4版第3章