MMU/内核如何知道PTE有效



假设一个两级页面表,假设程序分配了2页(8KB(

  GPD      PD1     PD2      PD3 
+-----+ +------+ +------+ +------+
+  1  + +  22  + +------+ +------+
+  0  + +  62  + +------+ +------+
+  0  + +  0   + +------+ +------+
+-----+ +------+ +------+ +------+

MMU/内核如何知道程序何时尝试访问PD1的第三个条目或喜欢GPD的2,3条目?它是否以某种价值来初始化未使用的PTE来区分未使用的PTE?(例如0或其他(

我在这里读过,PTE标志中没有有效的位或其他内容

有一个名为 pte_none的函数。它可以测试PTE是否为空。如果PTE无效,其值将为零,并且该函数pte_none将返回true。

如果页表条目为零,则present bit也为零,因此不存在从虚拟地址到物理地址的映射。如果程序想访问此无效的虚拟地址,MMU将检查present bit并提出一个称为页面故障的异常,然后CPU将执行一个由Intern Ruption Decubtor Table(IDT(注册的异常处理程序。处理程序将要做的事情取决于此异常的类型。结果可能是加载所需的页面或终止程序。

最新更新