Skip to content

Lec 20 虚拟内存

说明:本课程的虚拟内存内容已完整整理在 Lec 18 虚拟内存(涵盖虚拟内存总览、虚拟/物理地址、分段与分页、页表与页表项 PTE、按需分页 demand paging、页面置换、缺页异常、MMU 与 TLB、上下文切换、虚拟地址空间组织等)。本页仅作占位与索引,避免重复,请前往 Lec 18 阅读。

速览(详见 Lec 18

  • 目标:让每个进程拥有一个大、私有、独占的存储空间假象,实现保护、抽象与“共享内存”。
  • 虚拟地址 → 物理地址:两种翻译方式——分段(segmentation)(base+bound,简单但有内存碎片问题)与分页(paging)(定长页 ~4KB,用页表映射,避免碎片,是主流)。
  • 页表项 PTE:resident(驻留位)、PPN/DPN、protection/dirty 等。
  • 按需分页(demand paging):把主存当作磁盘的“缓存”(swap space),可运行大于主存的程序;缺页(resident=0)触发缺页异常,由 OS 软件处理(选页换出、脏页写回、读入新页)。
  • 缓存 vs 按需分页对比:页(4KB)远大于缓存块(~32B),缺页率极低(<0.001%)但缺页代价极高(数百万周期),故页表设计成全相联、缺页主要用软件处理。
  • 加速翻译:页表放主存会使每次访存翻倍,故用 TLB(Translation Lookaside Buffer) 缓存最近的地址翻译。
  • 上下文切换:切换进程时更换页表基址(及刷新/标记 TLB)。