flowchart TD
A["多道程序:多进程同时驻留"] --> B["连续分配<br/>单一 / 固定分区 / 动态分区"]
B --> C["碎片问题<br/>外部碎片 → 紧凑(要重定位)"]
C --> D["离散分配:分页<br/>固定大小、无外部碎片"]
C --> E["离散分配:分段<br/>按逻辑单位、便共享保护"]
D & E --> F["段页式:先分段再分页"]
D --> G["页表太大 → 多级页表"]
D --> H["部分装入成为可能<br/>→ 请求分页(虚拟内存)"]
H --> I["缺页 → 置换算法"]
I --> J["置换过于频繁 → 抖动"]
J --> K["工作集模型<br/>驻留集 ≥ 工作集"]
核心概念:
| 概念 | 要点 | 易考点 |
|---|---|---|
| 逻辑/物理地址 | 编译产生逻辑地址,运行时经重定位映射为物理地址 | 静态重定位(装入时一次改完)vs 动态重定位(重定位寄存器,运行时可移动) |
| 内部碎片 | 分给进程的块内部用不完(固定分区、分页的最后一页) | 分页有内部碎片(≤ 一页)、无外部碎片 |
| 外部碎片 | 空闲区总量够但不连续装不下(动态分区、分段) | 紧凑可消除但要动态重定位支持 |
| 页 vs 段 | 页:定长、信息的物理划分、用户不可见;段:变长、逻辑单位(代码/数据/栈)、用户可见 | 分段地址是二维的(段号+段内偏移),分页是一维 |
| 页表项 | 页框号 + 有效位 + 访问位 A + 修改位 M + 保护位 | A/M 为置换算法服务(改进 Clock 四类) |
| 虚拟内存 | 基于局部性,只装入部分页面即可运行;特征:多次性、对换性、虚拟性 | 容量 = min(内存+外存,地址位数决定的最大空间) |
| 驻留集 / 工作集 | 分给进程的页框集合 / 窗口 内实际访问的页面集合 | 工作集 > 驻留集 → 抖动(2016 年 29 题考窗口法求工作集) |
| 抖动 thrashing | 页面频繁换入换出,CPU 利用率骤降 | 对策:撤销部分进程(2011 年 29 题) |