假设一个两级页面表,假设程序分配了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(注册的异常处理程序。处理程序将要做的事情取决于此异常的类型。结果可能是加载所需的页面或终止程序。