過去のオペレーティングシステムのファイナルからの質問の例、この種の質問を計算するにはどうすればよいですか?
コンピューターには、64ビットの仮想アドレス空間と2048バイトのページがあります。ページテーブルエントリは4バイトかかります。各テーブルはページ内に含まれている必要があるため、マルチレベルのページテーブルが使用されます。いくつのレベルが必要ですか?
これをどのように計算しますか?
ページテーブルはページに収まる必要があるため、ページテーブルのサイズは2048バイトで、各エントリは4バイトです。したがって、テーブルは2048/4 = 512のエントリを保持します。 512エントリをアドレス指定するには、log2(512)= 9ビットが必要です。各ページレベルのエントリをエンコードするために使用できるビットの総数は、64-log2(2048)= 53ビット(アドレス空間のビット数からページオフセットビットを引いたもの)です。したがって、必要なレベルの総数は53/9 = 6(切り上げ)です。
X86-64のデフォルトのページテーブルサイズは4096バイトで、各ページテーブルはページに収まる必要があり、ページテーブルエントリは8バイトです。現在のCPUは、48ビットの仮想アドレス空間のみを実装しています。いくつのページテーブルレベルが必要ですか?