操作系统第 3 章:内存管理总览
这一页只负责导航,不装内容。每个节号点进去就是那一节的完整讲义。
第 3 章只回答一个问题:程序里写的地址,和它在内存条上实际待的位置,怎么对上。
主线是一条被问题推着走的演进链:
要求连续 → 外部碎片(3.1.2)→ 不要求连续,改用固定大小的页(3.1.3)→ 但不便共享保护 → 按逻辑分段(3.1.4)→ 外部碎片又回来了 → 两者叠加(3.1.5)→ 内存还是不够 → 干脆只装一部分(3.2)
每一节都是在解决上一节留下的问题。按这条链读,不需要背。
章节导航
3.1 内存管理概念 ✅
| 节 | 页面 | 一句话 |
|---|---|---|
| 3.1.1 | 内存管理的基本原理和要求 | 地址在编译时/装入时/访存时被固定,对应三种装入方式 |
| 3.1.2 | 连续分配管理方式 | 首次适应综合最好;索引搜索的本质是免去遍历 |
| 3.1.3 | 基本分页存储管理 | TLB 存完整映射,命中率不需相乘;两个计算模板 |
| 3.1.4 | 基本分段存储管理 | 分页靠拼接、分段靠加法;一维 vs 二维 |
| 3.1.5 | 段页式存储管理 | 段可变长体现为页数不同;TLB:段号 + 段内页号 → 页框号 |
3.2 虚拟内存管理 ✅
| 节 | 页面 | 一句话 |
|---|---|---|
| 3.2.1 | 虚拟内存的基本概念 | 只能基于非连续分配;容量受”寻址范围”与”内外存之和”较小者限制 |
| 3.2.2 | 请求分页管理方式 | 缺页中断是故障,处理后重新执行原指令 |
| 3.2.3 | 页框分配 | ”固定分配全局置换”不存在(定义互相矛盾) |
| 3.2.4 | 页面置换算法 | 改进型 Clock:把 (A,M) 当二进制数,从小到大 |
| 3.2.5 | 抖动和工作集 | 抖动是正反馈;先找瓶颈再谈优化 |
| 3.2.6 | 页框回收 | 配合 PBA 后 FIFO 性能可接近 LRU |
| 3.2.7 | 内存映射文件 | 建立映射时不搬数据;文件映射页 vs 匿名页 |
| 3.2.8 | 虚拟存储器性能影响因素 | 缺页代价约为访存的 10⁵ 倍;程序写法影响可能最大 |
本章高频边界
| 边界 | 判据 | 在哪 |
|---|---|---|
| 静态重定位 vs 动态重定位 | 地址在装入时改完,还是每次访存实时算 | 3.1.1 |
| 谁需要地址变换机构 | 位置是否永久固定 | 3.1.1 |
| 内部碎片 vs 外部碎片 | 这块空间是否已归属某进程 | 3.1.2 |
| 顺序搜索 vs 索引搜索 | 要不要遍历 | 3.1.2 |
| 伙伴算法 vs 离散分配 | 物理页框连续性 vs 进程逻辑离散,不同层 | 3.1.2 |
| TLB 命中率是否相乘 | 不相乘,TLB 存完整映射 | 3.1.3 |
| 分页 vs 分段 | 六条对比;一维 vs 二维 | 3.1.4 |
| 段可变长 vs 页框固定 | 可变长体现为页数不同 | 3.1.5 |
| 虚拟内存 vs 对换 | 页粒度 vs 进程粒度 | 3.2.1 |
| 缺页中断 vs 一般中断 | 处理后重新执行原指令 | 3.2.2 |
| 分配策略 vs 置换策略 | 驻留集变不变 vs 从哪选;两个正交维度 | 3.2.3 |
| 命中时是否更新记录 | FIFO 不更新,LRU/Clock 必须更新 | 3.2.4 |
| Belady 异常 | 只有 FIFO 会;LRU/OPT 是栈算法 | 3.2.4 |
| 抖动 vs 缺页率高 | 看 CPU 利用率的走向 | 3.2.5 |
| 工作集 vs 驻留集 | 需求 vs 供给 | 3.2.5 |
| TLB 缺失 vs 缺页 | 判据是存在位 P;代价差 10⁵ 倍 | 3.2.8 |
计算模板
本章两类计算题,模板都在 3.1.3:
| 题型 | 步骤 |
|---|---|
| 需要几级页表 | ① 页内偏移位数 ② 页号总位数 ③ 一页装几个表项 = 每级消化位数 ④ 向上取整相除 |
| 平均访存次数 | ① 命中 1 次、未命中 |
| 页置换手算 | ① 画表,一列一次访问 ② 逐列判”在不在→满没满→淘汰谁” ③ 数缺页;注意命中时是否更新记录 |
| 有效访问时间 EAT |
复习顺序
- 3.1.1:把”编译→链接→装入”和三种装入方式立住。这一节是全章的地基,动态重定位是后面一切的前提。
- 3.1.2:碎片概念在这里成型。重点是内部/外部碎片的判据和首次适应为什么反而最好。
- 3.1.3:本章计算题主战场。先掌握两个模板,再理解 TLB 为什么不能按级数相乘。
- 3.1.4:分段。六条对比表要能默写,尤其一维 vs 二维。
- 3.1.5:段页式。理解”段可变长体现为页数不同”这一句,其余是推论。
- 3.2.1:立住局部性原理与三个特征。“只能基于非连续分配”是高频真题。
- 3.2.2 → 3.2.3:缺页怎么处理、页框该分多少。注意缺页中断是”故障”、处理后重新执行原指令。
- 3.2.4:本节计算题主战场。先掌握手算三步法,再记五个算法; 改进型 Clock 用”(A,M) 当二进制数”记,A 是高位因为价值优先于代价。
- 3.2.5:抖动。理解正反馈机制,则所有措施题都能自己判断。
- 3.2.6 → 3.2.8:收尾。3.2.8 的”按行 vs 按列遍历差 1024 倍”值得记一辈子。
链接
- 📖 名词库:第 3 章名词库
- 📜 原始提问档案:第 3 章 原始提问档案(本地资料)(38 条,按节号归位)
- ⬅️ 上一章:第 2 章:进程与线程
- 🏗️ 重构施工文档:OS + 计组 笔记体系重构计划(本地资料)