Skip to content
难度基础(★)
建议时长45分钟

2.6.4 段页式存储

本课核心知识点整理
本课核心知识点手绘流程图(SVG)

本节导学

段页式存储是段式和页式的折中方案。字幕里讲得很清楚:先把程序按逻辑划分成段,但段可能很大、长度不一,直接按段调入主存容易造成空间碎片和利用率问题;于是再把每个段划分成固定大小的页,用分页方式调入主存。

所以段页式的思想是:用段保留程序逻辑,用页改善内存分配。代价是地址结构更复杂,查表层次更多。

地址结构

段页式逻辑地址通常由三部分组成:

text
段号 + 段内页号 + 页内地址

段号说明访问哪个逻辑段;段内页号说明访问该段中的第几页;页内地址说明在该页内部偏移多少。页内地址长度仍然由页面大小决定,例如页面大小 4KB,则页内地址仍为 12 位。

两级转换过程

段页式地址转换一般按以下顺序:

  1. 用段号查段表。
  2. 段表项给出该段对应页表的位置或页表起始信息。
  3. 用段内页号查该段页表,得到页帧号。
  4. 页内地址保持不变。
  5. 用页帧号和页内地址组成物理地址。

不要跳过段表直接查页表。段页式中的页号是“段内页号”,它必须先依附于某个段,才能定位到对应的页表。

为什么它是折中

方案优势局限段页式如何吸收
段式贴近程序逻辑,便于共享保护段长不一,易产生外部碎片先分段保留逻辑意义
页式固定大小,便于离散分配页面缺少程序逻辑意义段内再分页,改善分配效率
段页式兼顾逻辑与分配查表次数更多,管理更复杂用两级结构换综合效果

做题路线

  1. 看到逻辑地址有三段字段,先识别段号、段内页号、页内地址。
  2. 页面大小决定页内地址位数;段号和页号字段决定可表示的段数和每段页数上限。
  3. 转换时先查段表,再查该段页表。
  4. 页内地址在转换中不变。
  5. 题目问思想时,答“先分段体现逻辑,再分页便于离散分配”。

例题

单选
段页式逻辑地址通常包含:
单选
段页式地址转换的一般顺序是:
单选
段页式存储的主要思想是:

自查要点

  1. 段页式为什么要先查段表?
  2. 页内地址在转换中是否改变?
  3. 段页式相比单纯页式多了什么逻辑含义?