Linux kernel 如果未处理页面错误,MMU的行为是什么?

Linux kernel 如果未处理页面错误,MMU的行为是什么?,linux-kernel,mmu,Linux Kernel,Mmu,我正在执行do_page_fault(x86 arch)例程。假设一个进程试图写入一个被调出的共享页面。然后根据do_page_fault中的执行流程,如果访问是有效的,并且它是一个正常页面(不是巨大的页面),并且执行一直到do_swap_页面(即,没有错误)。执行do_swap_页面后,它将返回 1) 但是,如果掉期本身由于某种原因未得到处理,是否还会出现故障 2) 一般来说,我想知道更多关于MMU的细节,比如,它是否检查pte标志或vm区域标志来引发地址错误?有谁能告诉我一些我能理解MMU如

我正在执行do_page_fault(x86 arch)例程。假设一个进程试图写入一个被调出的共享页面。然后根据do_page_fault中的执行流程,如果访问是有效的,并且它是一个正常页面(不是巨大的页面),并且执行一直到do_swap_页面(即,没有错误)。执行do_swap_页面后,它将返回

1) 但是,如果掉期本身由于某种原因未得到处理,是否还会出现故障

2) 一般来说,我想知道更多关于MMU的细节,比如,它是否检查pte标志或vm区域标志来引发地址错误?有谁能告诉我一些我能理解MMU如何检查内存访问的来源吗

1) 但是,如果掉期本身由于某种原因未得到处理,是否还会出现故障

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

但是,如果在处理上一个错误时触发页面错误,则将触发

2) 一般来说,我想知道更多关于MMU的细节,比如,它是否检查pte标志或vm区域标志来引发地址错误?有谁能告诉我一些我能理解MMU如何检查内存访问的来源吗

是的,检查一下


您可以查看更多信息。

谢谢您的回复。你能详细解释一下你的答案吗?解释一下“一次又一次的页面错误直到正确”和“双重错误”,因为当一个错误再次发生时,它不是双重错误吗?我不明白你的第一点和第二点之间的区别。“一次又一次”意味着页面错误被处理,然后再次发生。但若页面错误正在处理中(在ISR中),则会出现双重错误。