缺页异常

她轻轻地把鱼儿放在那池清水里,鱼儿摇了摇尾巴,游走了,只剩下她随风摇动的裙摆和水面微微泛起的涟漪

概述

什么是缺页异常

当一个进程试图访问一个地址,但是这个地址对应的内存尚未被加载进系统RAM中,那么将会产生一个pagefault

缺页异常种类

缺页异常一般由如下两种情况触发:

  • 编程错误引起的异常
  • 由于懒分配导致的引用属于进程但是尚未分配物理页框的页

常见场景如下:

  • 映射关系未建立
    • malloc/mmap申请的虚拟空间未分配实际物理页,首次访问触发缺页异常
  • 映射关系已建立
    • 访问的页面被置换入磁盘中
    • fork子进程时,父子进程共享地址空间,写时触发写时拷贝(copy on write)
  • 访问地址空间不合法,用户空间访问内核空间,或者内核空间访问用户空间

缺页异常处理程序

参考文献

0%