107 分页存储:把内存切成"等大的格子"
连续分配最大的问题是外部碎片——空闲空间被切碎,凑不出足够大的一块给新进程。
分页存储的思路很暴力:既然凑不出连续的,那就干脆不要求连续了!
基本思想
把物理内存和程序都切成固定大小的小块:
- 物理内存切成等大小的页框(页帧/物理块),通常 4KB 一个
- 程序的逻辑地址空间也切成等大小的页,大小与页框一致
程序的每一页可以放到任意一个空闲页框里,不需要连续。
比喻:停车场不再按车队长度给连续车位,而是每个车位都是标准大小,你的车(程序)被拆成一辆辆小车(页),随便停在空车位(页框)上,只要记录好每辆小车停在哪个车位就行。
页表:地址翻译的"地图"
每个进程有一张页表(Page Table),记录"逻辑页号 → 物理页框号"的映射关系。
示例(页框大小 4KB):
| 页号(逻辑) | 页框号(物理) |
|---|---|
| 0 | 5 |
| 1 |