缺页导致页面出错 (缺页异常)
缺页异常处理程序选择一个牺牲页 (此例中就是 VP 4)
导致缺页的指令重新启动:页面命中

关键点:当有不命中发生时才换页面的这种策略称之为:页面调度
所谓牺牲页,就是把磁盘内的虚拟内存混存到物理内存再读取的时候,顶替掉的那个
这里先来找 vp3 有效位为 0,说明缺页,于是出发缺页异常处理程序,去磁盘中找到 vp3 靠背到物理内存中来再读
物理内存此时已满,通过某种算法,顶替掉了其中的 vp4,牺牲它,换成 vp3

地址翻译:缺页异常

  1. 处理器将虚拟地址发送给 MMU
  2. 2-3) MMU 使用内存中的页表生成PTE地址
  3. 有效位为零, 因此 MMU 触发缺页异常
  4. 缺页处理程序确定物理内存中牺牲页 (若页面被修改,则换出到磁盘)
  5. 缺页处理程序调入新的页面,并更新内存中的PTE
  6. 缺页处理程序返回到原来进程,再次执行缺页的指令

linux 缺页处理

  • 段错误
    • 访问一个不存在的页面
  • 正常缺页
  • 保护异常
    • 例如,违反许可,写一个只读的页面(Linux 报告 Segmentation fault)