Skip to content

概念卡片:内存管理与虚拟内存

一句话机制:内存管理负责内存分配回收 + 逻辑地址到物理地址的转换;虚拟内存基于局部性原理,为每个进程定义一个连续虚拟地址空间,把内存当外存缓存,让进程可用内存「看起来」超过物理内存。

内存管理机制

机制分配方式特点
块式管理连续分配分固定大小块,一个块一个进程,产生大量内部碎片
页式管理非连续页大小固定,页表映射逻辑↔物理,利用率高、碎片少
段式管理非连续段有逻辑意义(代码段/数据段/栈段),段表映射

分页 vs 分段

分页分段
大小固定(OS 决定)不固定(看程序)
意义无逻辑意义逻辑信息单位
共同点都离散存储、提高利用率、减少碎片同左

快表与多级页表

  • 快表(TLB):页表的高速缓存,存部分页表项。命中则只需访问一次快表 + 一次主存(未命中要两次主存)。
  • 多级页表:避免把全部页表一直放内存,是「时间换空间」的典型。

虚拟内存

  • 本质:定义连续虚拟地址空间 + 内存外存两级存储;不只是「用硬盘扩展内存」。
  • 原理:局部性原理——时间局部性(循环重复访问)、空间局部性(顺序存储/执行)。
  • 实现:建立在离散分配上,三种方式(请求分页/请求分段/请求段页式),依赖缺页中断 + 页面置换
  • 地址转换:CPU 用虚拟寻址,靠 MMU 把虚拟地址译成物理地址。

页面置换算法

算法淘汰规则备注
OPT 最佳以后永不使用/最久不用的页无法实现,作衡量基准
FIFO最先进入的页简单
LRU最近最久未使用最常用
LFU使用次数最少

不变量(必须成立的约束)

  • 虚拟内存必须建立在离散分配基础上。
  • 访问不在内存的页触发缺页中断,由 OS 调入;内存满则按置换算法淘汰一页。
  • 逻辑地址由 OS 决定,物理地址是内存单元真实地址,转换靠 MMU + 页表/快表。

常见误解

  • 以为「虚拟内存 = 拿硬盘当内存」→ 更本质是定义连续虚拟地址空间,只是恰好借助外存。
  • 以为「快表是页表的一部分」→ 快表是独立的页表高速缓存(TLB)。
  • 以为「OPT 算法能实现」→ 无法预知未来,只能作理论基准。

关联

最近更新