Skip to content

408

操作系统

OS-03-03 非连续分配:页式管理


一、定位信息

  • 所属圈层:核心层
  • 前置知识回顾:理解连续分配方式(特别是动态分区)存在外部碎片问题,知道地址转换的基本原理(逻辑地址→物理地址)。了解内存按字节编址的基本概念。
  • 知识网络位置:本单元是非连续分配的核心,与OS-03-04(段式管理)、OS-03-05(段页式管理)并列,共同构成非连续分配的三种方式。页式管理是虚拟内存(OS-03-06~03-10)的硬件基础,也是现代操作系统最主流的内存管理方式。
  • 考点热度等级H级(高频重点)——页式管理的地址转换、页表结构、快表(TLB)是几乎每年必考的核心知识点。

二、知识点讲解

2.1 基本思想

页式管理将进程的逻辑地址空间划分为等大小的页(Page),将物理内存划分为等大小的页框(Page Frame)(也称页帧、物理块)。页和页框大小相同,通常为 2n2^n 字节(如4KB)。进程的各页可以装入内存中任意一个空闲页框,不需要连续存放,从而彻底消除外部碎片。

2.2 地址结构

逻辑地址被划分为两部分:

  • 页号 PP:逻辑地址 / 页大小(整除)
  • 页内偏移 WW:逻辑地址 % 页大小(取余)

例如:页大小为 4KB=2124\text{KB} = 2^{12} 字节,逻辑地址 8196=8192+48196 = 8192 + 4,则页号 P=8196/4096=2P = 8196 / 4096 = 2,页内偏移 W=8196mod4096=4W = 8196 \mod 4096 = 4

物理地址同样被划分为:

  • 页框号 ff:物理地址 / 页大小
  • 页内偏移 WW:与逻辑地址中的偏移相同(页与页框大小相同)

2.3 页表(Page Table)

每个进程维护一张页表,记录该进程每个页号对应的页框号。页表通常存储在内存中,由操作系统维护。页表的第 ii 项记录第 ii 页装入的页框号。

地址转换过程:

  1. 从逻辑地址中提取页号 PP 和页内偏移 WW
  2. PP 为索引查页表,得到页框号 ff
  3. 物理地址 = f×页大小+Wf \times \text{页大小} + W

2.4 快表(TLB, Translation Lookaside Buffer)

每次地址转换都需要访问内存查页表,相当于每次内存访问变成两次(一次查页表,一次取数据),速度减半。为解决此问题,引入快表——一种高速缓存,存储最近使用的页表项。

改进的地址转换过程:

  1. 从逻辑地址提取页号 PP 和页内偏移 WW
  2. 先查快表:若命中,直接得到页框号 ff1次内存访问
  3. 若快表未命中,查内存中的页表得到 ff,并将该页表项存入快表(2次内存访问
  4. 物理地址 = f×页大小+Wf \times \text{页大小} + W

**有效访问时间(EAT)**计算:设快表访问时间为 tt,内存访问时间为 TT,快表命中率为 pp,则: EAT=p×(t+T)+(1p)×(t+2T)EAT = p \times (t + T) + (1-p) \times (t + 2T)

2.5 多级页表

当逻辑地址空间很大时(如 2322^{32}2642^{64}),页表本身也很大,需要连续存储会占用大量内存。多级页表将页表本身也进行分页,形成层次结构。例如二级页表:一级页表 → 二级页表 → 页框号。顶级页表常驻内存,低级页表按需调入。


三、记忆与理解辅助

1. 类比记忆:页式管理就像把一本书(逻辑地址空间)撕成一页一页的,然后把这些散页随意放入文件柜(物理内存)的任意抽屉中。页表就是一张"目录",告诉你第几页在哪个抽屉。

2. 口诀:"页式分页等大小,页框随便装;页表查框号,快表加速找;偏移不变框乘大,加偏移得物理地址。"

3. 页式 vs 段式 对比表(★本章核心对比)

对比项页式管理段式管理
划分方式等大小(硬件决定)不等大小(逻辑决定)
划分依据物理(内存块大小)逻辑(程序模块)
地址结构页号 + 页内偏移段号 + 段内偏移
内部碎片有(最后一页)
外部碎片
共享与保护不方便(一页可能含多个逻辑段)方便(一个段是一个逻辑单位)
用户可见性用户不可见用户可见(段名、段号)

4. 地址转换关键公式

  • 页号 P=A/LP = \lfloor A / L \rfloorAA 为逻辑地址,LL 为页大小)
  • 页内偏移 W=AmodLW = A \mod L
  • 物理地址 = f×L+Wf \times L + W

四、例题与精解

例题1(基础巩固)

题目:某系统页大小为 4KB4\text{KB},某进程的页表如下:

页号页框号
05
13
28
31

求逻辑地址 84508450 对应的物理地址。

命题意图:考查页式管理的基本地址转换过程。

精解

1. 审题分析:页大小 4KB=40964\text{KB} = 4096 字节,逻辑地址 84508450,页表已知。需要提取页号和偏移,查表得到页框号,计算物理地址。

2. 解题思路P=8450/4096P = 8450 / 4096W=8450mod4096W = 8450 \mod 4096,查表得 ff,物理地址 = f×4096+Wf \times 4096 + W

3. 完整步骤

  • 页号 P=8450/4096=2.063=2P = \lfloor 8450 / 4096 \rfloor = \lfloor 2.063 \rfloor = 2
  • 页内偏移 W=8450mod4096=84502×4096=84508192=258W = 8450 \mod 4096 = 8450 - 2 \times 4096 = 8450 - 8192 = 258
  • 查页表:页号2对应的页框号 f=8f = 8
  • 物理地址 = 8×4096+258=32768+258=330268 \times 4096 + 258 = 32768 + 258 = 33026

4. 方法反思:地址转换的核心是三步——拆分地址、查页表、拼接物理地址。注意页内偏移在转换前后不变,这是页式管理的重要特征。

例题2(中等提升)

题目:某系统页大小为 1KB1\text{KB},内存访问时间为 100ns100\text{ns},快表访问时间为 20ns20\text{ns},快表命中率为 80%80\%。问: (1)有效访问时间是多少? (2)若要使有效访问时间不超过 130ns130\text{ns},快表命中率至少需要多少?

命题意图:考查快表机制和有效访问时间的计算。

精解

1. 审题分析:已知内存访问时间 T=100nsT = 100\text{ns},快表访问时间 t=20nst = 20\text{ns},命中率 p=80%p = 80\%。需要计算有效访问时间。

2. 解题思路:用公式 EAT=p×(t+T)+(1p)×(t+2T)EAT = p \times (t + T) + (1-p) \times (t + 2T)

3. 完整步骤

(1) EAT=0.8×(20+100)+0.2×(20+200)EAT = 0.8 \times (20 + 100) + 0.2 \times (20 + 200)=0.8×120+0.2×220=96+44=140ns= 0.8 \times 120 + 0.2 \times 220 = 96 + 44 = 140\text{ns}

(2)设快表命中率为 pp,要求 EAT130EAT \leq 130p×120+(1p)×220130p \times 120 + (1-p) \times 220 \leq 130120p+220220p130120p + 220 - 220p \leq 130100p90-100p \leq -90p0.9p \geq 0.9

即快表命中率至少需要 90%90\%

4. 方法反思:有效访问时间的计算是页式管理的经典考点。关键在于理解:快表命中只需1次内存访问(查快表+访问目标单元,快表访问时间与内存访问时间重叠或单独计算,取决于题目设定),未命中需要2次内存访问(查页表+访问目标单元)。不同教材对快表访问时间的处理略有差异,以题目给定的条件为准。


五、考情分析

  • 考查频次:页式管理在近5年真题中出现频率极高,每年至少1-2道选择题,经常出现在综合大题中。
  • 常见题型:选择题(地址转换计算、页表项判断)、综合题(结合虚拟内存、缺页中断的完整场景)。
  • 分值占比:选择题2-4分,综合题可占5-10分。
  • 命题趋势:近年来更倾向于将页式管理与TLB、多级页表、缺页中断结合考查,单纯的地址转换计算题减少。需要掌握完整的工作流程。基于大纲与命题规律推测

六、易错点提醒

  1. 错误表现:计算页号时用"逻辑地址 / 页大小"得到小数,不知道取整。 错误原因:对页号的定义(整数部分)理解不清。 正确理解/做法:页号 = A/L\lfloor A / L \rfloor(向下取整),页内偏移 = AmodLA \mod L。例如 8450/4096=2.0638450 / 4096 = 2.063,页号是 22 不是 2.0632.063

  2. 错误表现:认为页式管理完全没有碎片问题。 错误原因:忽略了最后一页可能填不满的情况。 正确理解/做法:页式管理消除了外部碎片,但存在内部碎片——进程的最后一页通常不会恰好填满。平均每个进程浪费半页空间。

  3. 错误表现:计算有效访问时间时,将快表访问时间和内存访问时间简单相加。 错误原因:不理解快表是高速缓存,其访问可以与CPU操作并行。 正确理解/做法:快表访问时间通常远小于内存访问时间,且可以与CPU操作并行。具体计算方式以题目给定条件为准,一般公式中快表时间 tt 和内存时间 TT 是相加关系。

  4. 错误表现:在多级页表中,认为每级页表都需要常驻内存。 错误原因:不理解多级页表的核心优势——按需调入。 正确理解/做法:只有顶级页表需要常驻内存,低级页表可以按需调入,这是多级页表节省内存的关键。


七、来源标注

  • 依据2026考研统考408大纲
  • 依据《操作系统概念》(Operating System Concepts, Silberschatz)第9章
  • 依据汤小丹《计算机操作系统》第4版第3章

考研全科复习资料 - 基于2026考研统考大纲