1. 内存管理基础:物理地址与虚拟地址概念、MMU的作用、分页机制原理

内存管理是操作系统内核最核心的子系统之一,它决定了进程如何安全、高效地访问物理内存。理解物理地址与虚拟地址的分离、MMU的地址转换机制以及分页原理,是掌握页表项(PTE)权限控制与安全配置的基石。

1.1 物理地址与虚拟地址

在早期的单任务系统中,程序直接访问物理内存地址。这种方式存在严重的安全与稳定性问题:一个程序可以任意读写其他程序甚至操作系统的内存区域。现代操作系统引入了虚拟地址(Virtual Address, VA)与物理地址(Physical Address, PA)的分离机制。

概念 定义 特点
物理地址 (PA) 硬件总线上的真实内存单元编号,由内存控制器直接寻址。 唯一、有限、直接对应DRAM颗粒。
虚拟地址 (VA) CPU程序指令中使用的地址,由操作系统为每个进程独立分配。 每个进程拥有独立的虚拟地址空间,大小受CPU位数限制(如64位系统可达16EB)。
核心价值:虚拟地址为每个进程提供了“独占”整个内存空间的假象,同时通过地址转换机制实现进程间隔离与权限控制。
虚拟地址与物理地址映射关系 虚拟地址 → 物理地址映射关系 进程A 虚拟地址空间 VA: 0x0000_1000 VA: 0x0000_2000 VA: 0x0000_3000 ... VA: 0x7FFF_FFFF 进程B 虚拟地址空间 VA: 0x0000_1000 VA: 0x0000_2000 VA: 0x0000_3000 ... VA: 0x7FFF_FFFF 物理内存 PA: 0x0000_0000 PA: 0x0000_1000 PA: 0x0000_2000 PA: 0x0000_3000 ... 不同进程的相同虚拟地址(如0x0000_1000)通过MMU映射到不同的物理地址,实现隔离。

1.2 MMU的作用

内存管理单元(Memory Management Unit, MMU)是CPU内部负责地址转换的硬件模块。它位于CPU核心与内存总线之间,是虚拟地址到物理地址转换的执行者。

  • 地址转换:将CPU发出的虚拟地址实时转换为物理地址,再发送给内存控制器。
  • 权限检查:在转换过程中,检查当前访问是否违反页表项(PTE)中定义的权限(读/写/执行/用户/内核)。
  • 缓存管理:管理TLB(Translation Lookaside Buffer,页表缓存),加速地址转换。
  • 异常触发:当虚拟地址未映射或权限不足时,触发缺页异常(Page Fault)或保护异常。
关键理解:MMU是硬件层面的“安全门禁”,每次内存访问都必须经过它的转换与检查。操作系统通过配置页表项(PTE)来定义门禁规则。
MMU地址转换流程 MMU 地址转换与权限检查流程 CPU 核心 发出 VA MMU 查页表 → 权限检查 TLB 加速 物理内存 返回数据 缺页/权限异常 MMU 在转换地址的同时完成权限校验,非法访问直接触发异常,不访问物理内存。

1.3 分页机制原理

分页(Paging)是现代操作系统最主流的内存管理方案。它将虚拟地址空间和物理内存都划分为固定大小的块:虚拟地址空间的块称为页(Page),物理内存的块称为页框(Page Frame)。

1.3.1 基本概念

术语 大小(典型) 说明
页 (Page) 4KB / 2MB / 1GB 虚拟地址空间的最小映射单位。
页框 (Page Frame) 4KB / 2MB / 1GB 物理内存的最小分配单位,与页大小对应。
页表 (Page Table) 由多个PTE组成 存储虚拟页到物理页框的映射关系及权限信息。
页表项 (PTE) 8字节(64位系统) 描述单个虚拟页的映射、权限、状态。

1.3.2 虚拟地址分解

在分页机制下,CPU发出的虚拟地址被MMU分解为两部分:

  • 虚拟页号(VPN):用于索引页表,找到对应的PTE。
  • 页内偏移(Offset):直接作为物理地址的低位,无需转换。

对于多级页表(如x86_64的4级页表),VPN进一步拆分为多个索引层级(PML4、PDPT、PD、PT),逐级查找。

分页优势:消除外部碎片、支持按需调页(Demand Paging)、实现虚拟内存交换、简化物理内存分配。
分页机制地址转换结构 分页机制:虚拟地址 → 物理地址转换结构 虚拟地址 (VA) [ 虚拟页号 (VPN) ] + [ 页内偏移 (Offset) ] 页全局目录 PML4 (索引1) 页上级目录 PDPT (索引2) 页中间目录 PD (索引3) 页表 PT (索引4) 页表项 (PTE) 物理页框号 + 权限位 物理页框 (Page Frame) PA = 页框基址 + 偏移 多级页表通过逐级索引减少页表占用内存,PTE 中存储物理页框号与权限控制位。

1.4 分页机制的关键优势

  1. 进程隔离:每个进程拥有独立的页表,一个进程无法访问另一个进程的物理内存。
  2. 按需调页:只有真正访问到的虚拟页才分配物理页框,节省内存。
  3. 共享内存:多个进程的页表项可以指向同一个物理页框,实现高效数据共享。
  4. 权限粒度控制:每个PTE独立设置读、写、执行、用户/内核权限,实现细粒度安全策略。
  5. 虚拟内存支持:物理内存不足时,可将不活跃的页换出到磁盘,扩展可用内存空间。