ページテーブルエントリを作成する際の挙動・メモリレイアウトについて #19
-
概要自分の認識が合っているか確認させて頂きたいのですが、 開発環境No response ソースコードのURLNo response |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 4 replies
-
ページテーブルを辿る処理についてはどちらも正しいです 💯 なぜエントリが物理ページの先頭アドレスではなく、物理ページ番号を持っているのかは(おそらく)エントリ中のビット数の節約です。先頭アドレスをページの固定長を割ったより小さな数値を持っておけば良いので、節約できたところに他の情報(有効ビット・書き込み可ビットなど)を埋め込めます。 「おそらく」とはぐらかしたのは、CPUの設計次第で「物理アドレスをもつページテーブルエントリ」というのも実現できるはずだからです。ただ、x86-64含め基本的には物理ページ番号を持っていることが一般的だと思います。 |
Beta Was this translation helpful? Give feedback.
ページテーブルを辿る処理についてはどちらも正しいです 💯
PTE_PADDR
は物理ページ番号から物理メモリアドレスへの変換をするマクロです。なぜエントリが物理ページの先頭アドレスではなく、物理ページ番号を持っているのかは(おそらく)エントリ中のビット数の節約です。先頭アドレスをページの固定長を割ったより小さな数値を持っておけば良いので、節約できたところに他の情報(有効ビット・書き込み可ビットなど)を埋め込めます。
「おそらく」とはぐらかしたのは、CPUの設計次第で「物理アドレスをもつページテーブルエントリ」というのも実現できるはずだからです。ただ、x86-64含め基本的には物理ページ番号を持っていることが一般的だと思います。