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

2.6.2 页式存储

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

本节导学

页式存储是 2.6 中最容易出计算题的部分。它把用户程序逻辑空间划分成固定大小的页,把主存划分成同样大小的页框/页帧。程序页被调入主存后,逻辑页号与物理页帧号的对应关系记录在页表中。

地址转换时,逻辑地址已知,目标是求物理地址。核心规则是:页号查页表得到页帧号,页内地址保持不变

页表记录什么

页表记录的是“逻辑页号 -> 物理页帧号”的映射。一个程序的第 0 页、第 1 页、第 2 页不一定连续放在主存中,所以不能直接把逻辑页号当成物理页帧号,必须查页表。

页式存储带来的好处是便于离散分配,减少外部碎片;代价是需要页表管理,地址转换多了一次查表,页面大小还会带来内部碎片问题。

页内地址长度由页面大小决定

以 4KB 页面为例:

  • 4KB = 4096B = 212
  • 若按字节编址,页内地址需要 12 位。
  • 编号范围是 0 到 4095。

一般地,如果页面大小为 2k 字节,且按字节编址,则页内地址需要 k 位。常见换算:

页面大小字节数页内地址位数
1KB21010
2KB21111
4KB21212
8KB21313

地址转换规则

text
逻辑地址 = 页号 + 页内地址
页号查页表 -> 页帧号
物理地址 = 页帧号 + 页内地址

页内地址保持不变。

如果题目给十进制逻辑地址和页大小,也可以用除法拆:

页号=逻辑地址页大小页内地址=逻辑地址mod页大小

如果题目给二进制地址和页面大小,则低 k 位是页内地址,高位是页号。

页面置换和淘汰

页式存储还涉及缺页中断、访问位、修改位和页面淘汰原则:

  • 访问位为 0 的页面优先淘汰。
  • 多个访问位为 0 时,优先淘汰修改位为 0 的页面。
  • 修改位为 1 的页面淘汰成本更高,因为可能要写回。

缺页中断表示要访问的页当前不在主存,需要从外存调入。如果主存没有空闲页框,就要选择某个页面淘汰。访问位反映近期是否被访问,修改位反映淘汰时是否需要写回外存。访问位为 0 且修改位为 0 的页面,淘汰代价通常最低。

做题路线

  1. 先把页面大小换成 2k,确定页内地址位数。
  2. 拆逻辑地址:高位为页号,低 k 位为页内地址;十进制题用商和余数。
  3. 用页号查页表,得到页帧号。
  4. 物理地址由页帧号和原页内地址组成。
  5. 页面淘汰题先看访问位,再看修改位;修改位为 1 的页面淘汰成本更高。

例题

单选
页式地址转换的核心规则是:
单选
页面大小为 4KB,按字节编址,页内地址需要:
单选
按本节的页面淘汰原则,优先淘汰:

自查要点

  1. 为什么 4KB 页内地址是 12 位?
  2. 页号和页帧号的对应关系在哪里?
  3. 为什么修改位为 1 的页面淘汰成本更高?