web-dev-qa-db-ja.com

ページテーブルはどこに保存されますか

私の質問は、「ページテーブルはどこに保存されているか:物理メモリ(RAM)に、またはユーザースペースのデータ構造として」です。

PS:これまでに理解したこと:プロセスメモリレイアウトにはいくつかのセグメント(コード/データ/ヒープ/スタックなど)があります。現在、セグメンテーションは使用されていないため、ページングが使用され、各セグメントには多くの固定サイズのページがあります。各セグメントには、対応する仮想アドレス空間(VAD)もあります。これらはプライマリページテーブルを指し、セカンダリページテーブルを指し、最後にディスク内のページフレームを指すpteを指します(??これが正しいことを願っています)。したがって、VADがユーザースペースにある場合、ページテーブルもユーザースペースにあるのでしょうか、それともRAM?

9
RootPhoenix

ページテーブルは、カーネルの内部データ構造を介してカーネルによって処理されます。ただし、アーキテクチャによって、これらのテーブルの形式のほとんどが決まります。ユーザーランドはそれらにアクセスできません。

5
vonbrand

ウィキからの引用- ページテーブル

仮想アドレス空間内のすべての仮想ページのマッピングを含むページテーブル構造を作成すると、無駄になる可能性があることが言及されました。 しかし、ページテーブルを仮想メモリに配置し、仮想メモリシステムにページテーブルのメモリを管理させることで、過剰なスペースの問題を回避できます。

ただし、この線形ページテーブル構造の部分は、重要な部分を探す循環ページフォールトを防ぐために、常に物理メモリに常駐する必要があります。ページテーブルに存在しないページテーブル、ページテーブルに存在しないページテーブルなど。

4
Anderson