2.6.1 段页式存储概述
本课核心知识点整理
本节导学
计算机组成章节讲过 Cache、主存、外存的层次关系;操作系统这里接着讲主存与外存之间如何配合。外存容量大但慢,主存速度快但容量小,程序运行时 CPU 主要从 Cache 和主存取数据。于是操作系统需要把当前需要的页面或段从外存调入主存,不在主存时触发缺页中断,再从外存调入。
存储管理的核心问题可以概括为:程序看到的是逻辑地址,硬件访问的是物理地址,操作系统必须负责二者之间的转换,并同时完成分配、保护、调入调出和回收。
三种存储管理方式
| 方式 | 切分依据 | 重点 |
|---|---|---|
| 页式 | 固定大小页面 | 方便离散分配 |
| 段式 | 程序逻辑段 | 贴近程序逻辑 |
| 段页式 | 先分段再分页 | 兼顾逻辑和分配 |
页式存储把程序逻辑空间和主存空间都切成固定大小的块,便于把一个程序分散装入不连续的内存页框。段式存储按程序逻辑划分,例如代码段、数据段、栈段,便于共享和保护。段页式先按逻辑分段,再把每段分页,试图同时获得段式的逻辑表达能力和页式的离散分配能力。
为什么需要虚拟存储视角
很多程序逻辑上认为自己拥有连续、较大的地址空间,但真实主存并不一定足够,也不一定连续。操作系统可以把外存看作主存的扩展,把暂时不用的内容留在外存,把当前需要的内容调入主存。程序访问不在主存的页时,会产生缺页中断,系统暂停当前执行,调入所需页面后再继续。
这也是为什么页式、段式、段页式都绕不开地址转换:用户程序给出的是逻辑地址,真正访问内存时必须变成物理地址。
地址结构先分清
| 存储方式 | 逻辑地址结构 | 地址转换关键 |
|---|---|---|
| 页式 | 页号 + 页内地址 | 页号查页表得到页帧号,页内地址不变 |
| 段式 | 段号 + 段内偏移量 | 段号查段表,先判越界,再基址加偏移 |
| 段页式 | 段号 + 段内页号 + 页内地址 | 先查段表找到页表,再查页表得到页帧号 |
做题路线
- 看到“固定大小页、页框、页内地址”,按页式处理。
- 看到“逻辑模块、段号、段长、段内偏移”,按段式处理。
- 看到“段号 + 页号 + 页内地址”,按段页式处理。
- 页式题重点算页内地址位数和页表映射;段式题重点判越界;段页式题重点查表顺序。
- 记住考试更常考页式地址转换和页面淘汰原则,段式主要掌握合法段地址判断。
例题
单选
把程序和内存都按固定大小划分,属于:
单选
按程序的自然逻辑模块划分,更符合:
单选
段页式地址转换通常需要:
自查要点
- 页式和段式的划分依据有什么不同?
- 为什么段页式要先分段再分页?
- 地址转换为什么是存储管理的核心?