在 32 位操作系统中,从虚拟内存到物理内存的转换是这样完成的:
但是在 64 位中它是这样完成的:
这真的很奇怪吗?为什么 32 位的第一层是 PDE,而 64 位的第一层不是?加上 64 位为什么除了最后一个都不是 PDE。 (由于 PTE 持有一些与物理内存相关的标志,所以为什么要重复 3 次相同的信息)?
答案 0 :(得分:0)
intel 文档中有这样的 64 位条目:
PML4-Entry -> [anon., Pg. Dir. Ptr.] -> Pg. Dir-Entry ->
-> Page Tbl.-Entry -> phys. Address.
最后两个(表格和目录)每个人都可以同意,但在上层就不太清楚了。
所以你的第二个数字以不具体的方式使用 PTE
。 PSE
可能是一个更笼统的术语:
CR3 的格式和分页结构条目与 4 级分页 和 5 级分页
(SDM 第 3 卷中图 4-11 的标题;还包含 PDPTE
、PML4E
和 PML5E
作为缺失名称)
PTE 唯一的独特之处似乎是 PAT。除PML4和PML5外,其他级别也有细微差别。
一个PDPTE
(级别3)可以容纳一个PD-Address,也可以容纳一个1GB的页面;然后需要“物理”标志(对于 PAT,使用不同的位)。
PDE
和直接 2MB 页面框架相同。
这给出了三组分页结构:
PML5, PML4: for hierarchical access
PDPT, PD: for hier. and (or) direct mapping
PT: for mapping
物理布局是统一的,但语义在不同级别之间略有变化。甚至 CR3
也可以保存 PML4 或 PML5 表地址。