2.6.4 段页式存储
本课核心知识点整理
本节导学
段页式存储是段式和页式的折中方案。字幕里讲得很清楚:先把程序按逻辑划分成段,但段可能很大、长度不一,直接按段调入主存容易造成空间碎片和利用率问题;于是再把每个段划分成固定大小的页,用分页方式调入主存。
所以段页式的思想是:用段保留程序逻辑,用页改善内存分配。代价是地址结构更复杂,查表层次更多。
地址结构
段页式逻辑地址通常由三部分组成:
text
段号 + 段内页号 + 页内地址段号说明访问哪个逻辑段;段内页号说明访问该段中的第几页;页内地址说明在该页内部偏移多少。页内地址长度仍然由页面大小决定,例如页面大小 4KB,则页内地址仍为 12 位。
两级转换过程
段页式地址转换一般按以下顺序:
- 用段号查段表。
- 段表项给出该段对应页表的位置或页表起始信息。
- 用段内页号查该段页表,得到页帧号。
- 页内地址保持不变。
- 用页帧号和页内地址组成物理地址。
不要跳过段表直接查页表。段页式中的页号是“段内页号”,它必须先依附于某个段,才能定位到对应的页表。
为什么它是折中
| 方案 | 优势 | 局限 | 段页式如何吸收 |
|---|---|---|---|
| 段式 | 贴近程序逻辑,便于共享保护 | 段长不一,易产生外部碎片 | 先分段保留逻辑意义 |
| 页式 | 固定大小,便于离散分配 | 页面缺少程序逻辑意义 | 段内再分页,改善分配效率 |
| 段页式 | 兼顾逻辑与分配 | 查表次数更多,管理更复杂 | 用两级结构换综合效果 |
做题路线
- 看到逻辑地址有三段字段,先识别段号、段内页号、页内地址。
- 页面大小决定页内地址位数;段号和页号字段决定可表示的段数和每段页数上限。
- 转换时先查段表,再查该段页表。
- 页内地址在转换中不变。
- 题目问思想时,答“先分段体现逻辑,再分页便于离散分配”。
例题
单选
段页式逻辑地址通常包含:
单选
段页式地址转换的一般顺序是:
单选
段页式存储的主要思想是:
自查要点
- 段页式为什么要先查段表?
- 页内地址在转换中是否改变?
- 段页式相比单纯页式多了什么逻辑含义?