linux - 页面映射布局

标签 linux paging memory-mapping

我对 X86-64 架构中的 4 级页面布局感到困惑。在 Linux 源代码实现中,他们使用: PGD(页面全局目录) --> PUD(页面上层目录) --> PMD(页面中层目录) --> PTE

然而,我还发现了另一种 X86 架构的四级页面布局: PML4(L4) --> PDP(L3) --> PD(L2) --> PTE(L1)

那么,有没有人知道这两种页面布局的区别呢?我可以将 PML4 视为与 PGD 相同的组件吗?如果是这样,CR3 (PDBR) 实际上包含 PGD 的地址,对吗?

如有详细解答,将不胜感激!提前致谢!

最佳答案

我在这里回答我自己的问题:

多级页表结构在现代架构中非常普遍。 描述4级分页布局的通用术语是:PGD-PUD-PMD-PTE,这是一个广泛使用的通用术语。 Linux系统源码其实也是用这些术语来定义分页结构。

但是,英特尔使用自己的术语:PML4(L4) - PDP(L3) - PD(L2) - PTE(L1)

这两者的思路是一样的!

关于linux - 页面映射布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42307673/

相关文章:

windows - 如何在Windows进程之间传输敏感数据?

linux - 以 root 身份运行 buildroot。在环境变量中设置 FORCE_UNSAFE_CONFIGURE=1 后仍然错误

linux - Bash for 循环会跳过关联数组中的元素

linux - Ansible 中全局修改的 $PATH 无法按常规 Linux shell 的预期工作

c# - 如何实现asp :DataList in . NET 2.0的分页?

linux - 虚拟到物理内存映射如何工作

java - 为什么 FileChannel 的性能比 MemoryMappedBuffer 更好?

c - 如何在当前语言环境下使用 strerror_l?

c# - 如何创建 Azure.AsyncPageable 进行模拟?

linux - 具有私有(private)匿名映射的 ENOMEM 的 munmap() 失败