我想更深入地了解它,如果我的一些假设是错的,请让我知道。假设虚拟地址有3个PMN表: PML3、PML2、PML1。指向第一个表的指针是CR3 (物理地址),表中的每个条目都指向PML2表的开头或null。再检查一遍,这里的指针是物理的(指向每个PML2表的物理地址,对吗?类似地,每个PML3的入口点指向PML1表的开头。这点是指向物理地址吗?(有些-为什么我认为我在某个地方听说只有第一个表指向物理地址,而所有其他表指向虚拟地址,但这对我来说没有意义)我是不是把它和其他东西搞混了?是否所有PMH表中的所有点都指向物理地址?
发布于 2020-07-13 05:49:10
是的,在大多数由硬件遍历的嵌套页表的ISA中,所有级别都使用物理地址作为指针,以避免需要virt->phys另一个虚拟地址的陷阱22。
例如,在x86上,How does x86 paging work?和Why in 64bit the virtual address are 4 bits short (48bit long) compared with the physical address (52 bit long)?具有多级PDE/PTE的示意图。
我认为一些ISA可能做了其他事情,比如特殊的固定TLB条目,你可以把页表指针放在那个虚拟地址范围内吗?(例如,MIPS使用软件TLB处理,因此页面遍历必须由软件完成,因此加载要经过virt->phys转换的通常路径。我认为,TLB未命中处理程序必须确保不会通过仅使用固定转换区域中的地址而导致另一次TLB未命中。或者类似的东西。)
https://stackoverflow.com/questions/62865428
复制相似问题