缺页故障

缺页故障(Page Fault)属于同步异常中的故障(Fault)类型,是虚拟内存系统实现按需分页的核心机制。

触发条件:当程序访问一个虚拟地址时,若该地址的页表条目显示页面不在物理内存中(有效位为0),MMU(内存管理单元)会触发电缺页故障。

处理流程

  1. CPU暂停当前指令的执行,跳转到内核的缺页故障处理程序。
  2. 内核检查该虚拟地址是否合法(是否在进程的地址空间内)。
  3. 若合法且页面确实不在内存中,内核从磁盘读取该页面到物理内存。
  4. 更新页表,使页表条目指向新的物理页帧并设置有效位。
  5. 缺页处理程序返回,CPU重新执行导致缺页的那条指令。
  6. 此时页面已在内存中,指令正常执行。

关键特性:缺页故障是可修复的故障。修复后程序从故障点重新执行,而不是从下一条指令继续。这让程序完全感知不到缺页的发生(透明性)。

若访问的是非法地址(如空指针解引用),则缺页处理程序无法修复,转为终止(段错误)。

链接到