Linux内核使用多少级页表? 4还是5?

Linux内核使用多少级页表? 4还是5?

文章说Linux使用三级页表。

然而,书中专业Linux内核架构,在3.3.1章节中,说Linux使用五级页表。

还,文章说“相反,4.11-rc2 的五级页表(合并窗口之外)的合并几乎没有引起人们的注意。”

我的问题是内核实际使用多少个页表级别?如果历史有改变,是哪个版本?

答案1

问题是,这取决于内核版本和处理器体系结构(因为您必须在硬件中支持给定数量的页表)。在没有 PAE 的 32 位 x86 上,它是 2 个级别。在具有 PAE 的 32 位 x86 上,它有 3 个级别。在 64 位 x86 上,通常为 4 个级别,但最近合并了对 5 个级别的支持(但是,只有真正高端的 Intel 服务器处理器支持此功能,而且只有最近的处理器)。在64位SPARC上,我认为从一开始就已经是5个级别了,我认为64位s390和PPC也使用5个级别,但我不确定。

答案2

我检查了 linux 内核代码,得到了与 Austin 的答案不同的东西。

arch/x86/Kconfig

  config PGTABLE_LEVELS
        int
        default 5 if X86_5LEVEL
        default 4 if X86_64
        default 3 if X86_PAE
        default 2

相关内容