Lec 20虚拟内存
Lec 20 虚拟内存
TL;DR
- 虚拟内存目标:为各进程提供独立且受保护的扁平线性地址空间,解耦程序逻辑地址与物理 DRAM 分布。
- 分页映射机制:通过定长页(4KB)与多级页表实现虚拟页号(VPN)到物理页号(PPN)的离散映射与访问权限校验。
- 硬件加速翻译:引入快表(TLB)缓存热点页表项(PTE),规避多级页表造成的 DRAM 连续访存惩罚。
虚拟内存架构与核心机制速览
说明:本课程的虚拟内存微架构与系统软硬件协同设计已完整整理在 Lec 18 虚拟内存(涵盖虚拟内存总览、虚拟/物理地址划分、分段与分页对比、页表与页表项 PTE、按需分页 demand paging、页面置换、缺页异常、MMU 与 TLB、上下文切换与地址空间保护等)。本页作为课程大纲索引,核心要点归纳如下:
- 目标与抽象:让每个进程拥有一个大、私有、独占的存储空间假象,实现进程间故障隔离与安全的内存共享。
- 虚拟地址 → 物理地址:分段(segmentation)易产生外部碎片;定长分页(paging)通过页表建立映射,消除了外部碎片,是现代处理器的标准范式。
- 页表项 PTE:包含 resident(驻留位)、PPN(物理页号)、protection(R/W/X 权限)、dirty(脏位)等元数据。
- 按需分页(demand paging):将主存视为磁盘交换区的缓存;访问未驻留页触发硬件缺页异常,交由操作系统内核处理换页。
- 缓存 vs 按需分页:页(4KB)远大于缓存块(~64B),缺页开销长达数百万周期,因此页表采用全相联映射并由操作系统软件策略处理置换。
- TLB 硬件加速:页表遍历带来数倍访存开销,MMU 内嵌 TLB 缓存最新翻译结果,未命中时触发硬件页表遍历器(PTW)或软件陷阱。
- 上下文切换:切换进程时由特权级指令原子更新页表基址寄存器(如 satp/CR3),并选择性刷新或按 ASID 标识 TLB。
我的理解
虚拟内存的本质在于构建了软件与物理硬件之间的“间接寻址层(Indirection Layer)”。这一抽象虽然消除了物理内存连续分配的碎片痛点,但将单次访存转换为“TLB 查询 (可能)多级页表遍历 物理数据访存”的复杂路径。因此,TLB 命中率与页表遍历器(PTW)的延迟直接决定了处理器的 IPC 上限。