主题
概念卡片:内存管理与虚拟内存
一句话机制:内存管理负责内存分配回收 + 逻辑地址到物理地址的转换;虚拟内存基于局部性原理,为每个进程定义一个连续虚拟地址空间,把内存当外存缓存,让进程可用内存「看起来」超过物理内存。
内存管理机制
| 机制 | 分配方式 | 特点 |
|---|---|---|
| 块式管理 | 连续分配 | 分固定大小块,一个块一个进程,产生大量内部碎片 |
| 页式管理 | 非连续 | 页大小固定,页表映射逻辑↔物理,利用率高、碎片少 |
| 段式管理 | 非连续 | 段有逻辑意义(代码段/数据段/栈段),段表映射 |
分页 vs 分段:
| 分页 | 分段 | |
|---|---|---|
| 大小 | 固定(OS 决定) | 不固定(看程序) |
| 意义 | 无逻辑意义 | 逻辑信息单位 |
| 共同点 | 都离散存储、提高利用率、减少碎片 | 同左 |
快表与多级页表
- 快表(TLB):页表的高速缓存,存部分页表项。命中则只需访问一次快表 + 一次主存(未命中要两次主存)。
- 多级页表:避免把全部页表一直放内存,是「时间换空间」的典型。
虚拟内存
- 本质:定义连续虚拟地址空间 + 内存外存两级存储;不只是「用硬盘扩展内存」。
- 原理:局部性原理——时间局部性(循环重复访问)、空间局部性(顺序存储/执行)。
- 实现:建立在离散分配上,三种方式(请求分页/请求分段/请求段页式),依赖缺页中断 + 页面置换。
- 地址转换:CPU 用虚拟寻址,靠 MMU 把虚拟地址译成物理地址。
页面置换算法
| 算法 | 淘汰规则 | 备注 |
|---|---|---|
| OPT 最佳 | 以后永不使用/最久不用的页 | 无法实现,作衡量基准 |
| FIFO | 最先进入的页 | 简单 |
| LRU | 最近最久未使用 | 最常用 |
| LFU | 使用次数最少 |
不变量(必须成立的约束)
- 虚拟内存必须建立在离散分配基础上。
- 访问不在内存的页触发缺页中断,由 OS 调入;内存满则按置换算法淘汰一页。
- 逻辑地址由 OS 决定,物理地址是内存单元真实地址,转换靠 MMU + 页表/快表。
常见误解
- 以为「虚拟内存 = 拿硬盘当内存」→ 更本质是定义连续虚拟地址空间,只是恰好借助外存。
- 以为「快表是页表的一部分」→ 快表是独立的页表高速缓存(TLB)。
- 以为「OPT 算法能实现」→ 无法预知未来,只能作理论基准。
关联
- 进程线程:概念卡片:进程与线程
- 总览:操作系统技术栈总览