私の質問は、「ページテーブルはどこに保存されているか:物理メモリ(RAM)に、またはユーザースペースのデータ構造として」です。
PS:これまでに理解したこと:プロセスメモリレイアウトにはいくつかのセグメント(コード/データ/ヒープ/スタックなど)があります。現在、セグメンテーションは使用されていないため、ページングが使用され、各セグメントには多くの固定サイズのページがあります。各セグメントには、対応する仮想アドレス空間(VAD)もあります。これらはプライマリページテーブルを指し、セカンダリページテーブルを指し、最後にディスク内のページフレームを指すpteを指します(??これが正しいことを願っています)。したがって、VADがユーザースペースにある場合、ページテーブルもユーザースペースにあるのでしょうか、それともRAM?
ページテーブルは、カーネルの内部データ構造を介してカーネルによって処理されます。ただし、アーキテクチャによって、これらのテーブルの形式のほとんどが決まります。ユーザーランドはそれらにアクセスできません。
ウィキからの引用- ページテーブル
仮想アドレス空間内のすべての仮想ページのマッピングを含むページテーブル構造を作成すると、無駄になる可能性があることが言及されました。 しかし、ページテーブルを仮想メモリに配置し、仮想メモリシステムにページテーブルのメモリを管理させることで、過剰なスペースの問題を回避できます。
ただし、この線形ページテーブル構造の部分は、重要な部分を探す循環ページフォールトを防ぐために、常に物理メモリに常駐する必要があります。ページテーブルに存在しないページテーブル、ページテーブルに存在しないページテーブルなど。