web-dev-qa-db-ja.com

マルチレベルページテーブル-階層ページング

過去のオペレーティングシステムのファイナルからの質問の例、この種の質問を計算するにはどうすればよいですか?

コンピューターには、64ビットの仮想アドレス空間と20​​48バイトのページがあります。ページテーブルエントリは4バイトかかります。各テーブルはページ内に含まれている必要があるため、マルチレベルのページテーブルが使用されます。いくつのレベルが必要ですか?

これをどのように計算しますか?

19
Bobby S

ページテーブルはページに収まる必要があるため、ページテーブルのサイズは2048バイトで、各エントリは4バイトです。したがって、テーブルは2048/4 = 512のエントリを保持します。 512エントリをアドレス指定するには、log2(512)= 9ビットが必要です。各ページレベルのエントリをエンコードするために使用できるビットの総数は、64-log2(2048)= 53ビット(アドレス空間のビット数からページオフセットビットを引いたもの)です。したがって、必要なレベルの総数は53/9 = 6(切り上げ)です。

X86-64のデフォルトのページテーブルサイズは4096バイトで、各ページテーブルはページに収まる必要があり、ページテーブルエントリは8バイトです。現在のCPUは、48ビットの仮想アドレス空間のみを実装しています。いくつのページテーブルレベルが必要ですか?

25
bsantos
  • 論理アドレスビット= 64、
  • ページ数は= 2 ^ 64/2048 = 2 ^ 64/2 ^ 11 = 2 ^ 53になります
  • ページテーブルのエントリサインがあるページ= 4バイト、
  • 1ページのエントリ数は= 2048/4 => 512、
  • ビット1つのエントリを表すには= Log(512)= 9ビット、
  • ページのビットは= 53ビットです
  • したがって、レベル数= 53/9 => 6レベルページテーブル
6
Jay Singh