如果没有处理页面错误,MMU的行为是什么?

时间:2014-08-05 13:33:56

标签: linux-kernel mmu

我正在经历do_page_fault(x86 arch)例程。假设进程尝试写入已换出的共享页面。然后根据do_page_fault中的执行流程,如果访问是有效的并且它是正常页面(不是大页面)并且执行让我们说直到do_swap_page(即没有错误)。执行do_swap_page后,它将返回。

1)但是如果由于某种原因没有处理掉交换本身会再次出现错误吗?

2)一般来说,我想了解更多关于MMU的细节 - 是否检查pte标志或vm区域标志以提高地址错误?任何人都可以指出我可以理解MMU如何检查内存访问的来源。

1 个答案:

答案 0 :(得分:1)

  

1)但是如果由于某种原因没有处理掉交换本身会再次出现错误吗?

是。将一次又一次地生成故障(ISR成功完成),直到页面到位。 MMU不会跟踪先前对此页面的访问是否产生中断。

但是,如果在处理上一个故障时触发了页面错误,则会触发double fault

  

2)一般来说,我想了解更多关于MMU的细节 - 是否检查pte标志或vm区域标志以提高地址错误?任何人都可以指出我可以理解MMU如何检查内存访问的来源。

是的,检查。

您可以查看OSDev了解详情。