OSメモ(4)
ページディレクトリ
32bitアドレスの場合、ページングは、以下の順番
- リニアアドレスの上位 10 bitと CR3 レジスタから、PDE(ページディレクトリエントリ)を取得
- ページディレクトリエントリからページテーブルのアドレスを取得
- リニアアドレスの中位 10 bitとページテーブルのアドレスからページフレームの物理アドレスを取得
- 算出した物理アドレスに、リニアアドレスの下位 12 bit を加えて、物理アドレスにアクセス
という感じみたいだ。
64bitアドレスの場合は、前段に、ページマップレベル 4 とページディレクトリポインタと呼ばれる変換テーブルが追加されて計算されるみたいだ。
64bitの場合、変換テーブルのインデックス値は、9 bit で区切られているから、それぞれの変換テーブルは、512個のエントリを持つことができる。
PED(ページディレクトリエントリ)の 7 bit 目をセットすると、ページテーブルを指さなくなり、ページフレームのサイズが、2 MB(211)になる。
なお、PDEとPTEは、TLBというキャッシュに登録されるらしい。