Linuxカーネルは何レベルのページテーブルを使用しますか? 4または5?

Linuxカーネルは何レベルのページテーブルを使用しますか? 4または5?

これ記事によると、Linuxは3段階のページテーブルを使用しています。

しかし本ではプロのLinuxカーネルアーキテクチャ3.3.1章では、Linuxが5レベルのページテーブルを使用していると述べています。

返品、これこの記事では、「一方、4.11-rc2の5段階のページテーブルのマージ(マージウィンドウの外側)はほとんど興味がありませんでした」と述べています。

私の質問は、カーネルが実際にいくつかのページテーブルレベルを使用していることです。履歴が変更された場合、どのバージョンですか?

答え1

問題は、これがカーネルバージョンとプロセッサアーキテクチャによって異なることです(ハードウェアで指定された数のページテーブルをサポートする必要があるため)。 PAEなしの32ビットx86では2レベルです。 PAEを含む32ビットx86には3つのレベルがあります。 64ビットx86では通常4レベルですが、5レベルのサポートは最近マージされました(ただし、実際には最高級のIntelサーバープロセッサのみがこの機能をサポートし、その後は非常に最近のプロセッサのみをサポートします)。 64ビットSPARCでは最初から5レベルだったようですが、64ビットs390とPPCも5レベルを使用しているようですがよくわかりません。

答え2

Linuxカーネルコードをチェックし、Austinの答えと異なるものを得ました。

アーチ/x86/Kconfig

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

関連情報