1

Linux はメモリ管理に 3 つのレベルのページ テーブルを使用することを知っています。

ページ テーブルの内容について混乱しました。ページ テーブルには次のレベルのページ テーブルのベース アドレスが含まれていますか、それともページ フレーム番号が含まれていますか?

ページフレーム番号が含まれている場合、その特定のページテーブルのベースアドレスはどのように取得されますか?それはどこに保存されますか?

誰かが私にこれを明確にしてくれたら素晴らしいでしょう.

4

1 に答える 1

1

x86(/ 64)について話している場合、すべてのページテーブルエントリ(ターミナル1を除く)には次のページテーブルの物理アドレスが含まれ、ターミナルPTEには実際のコード/データページの物理アドレスが含まれます。

ページテーブルはそれ自体がページとして編成されているため、それらの物理アドレスは当然ページサイズの倍数になります。

完全な物理アドレスをPTEに格納することはほとんど意味がなく、最下位12ビットは常にゼロ(ページサイズが4KBの場合)であるため、PTEには格納されません(PTEで回復されたスペースが使用されます)。カーネル/ユーザー、読み取り専用/書き込み可能、​​実行可能、存在、ダーティ、アクセスなどの制御フラグ用)。このように切り捨てられたアドレスは、ページ番号に他ならないため、一般にページフレーム番号と呼ばれます(アドレス0のページの0から、アドレス4096のページの1までのすべてのページを数える場合など)。

すべての厄介な詳細を含むあなたの質問に対する最終的な答えは、関連するCPUマニュアルにあります。

于 2012-09-03T06:48:20.407 に答える