、page-size
の4KB
とpage-entry
サイズの4B
32ビットマシンがあれば今、私は、階層ページテーブル構造ではOS階層ページテーブル
にメモリ管理を勉強しています。
アドレスは私が20 - 12
を知っ10-10-12
に分けビットである理由、12
ビットは4Kバイトでoffset
値です -
> 2^12しかし、20ビットは10-10
がそれであるになる理由11-9または12-8に不可能ですか?
、page-size
の4KB
とpage-entry
サイズの4B
32ビットマシンがあれば今、私は、階層ページテーブル構造ではOS階層ページテーブル
にメモリ管理を勉強しています。
アドレスは私が20 - 12
を知っ10-10-12
に分けビットである理由、12
ビットは4Kバイトでoffset
値です -
> 2^12しかし、20ビットは10-10
がそれであるになる理由11-9または12-8に不可能ですか?
2つのレベルのページテーブルを使用しているためです。 20-12
は1レベルのページテーブルのみを使用し、メモリを消費します。
最初の10ビット(0-9)
は、PGDIR
の対応するエントリです。そのエントリはページテーブルを指します。このページテーブルでは、2番目の10ビットに対応するエントリにアクセスします。 (10-19)
。
動機:
は、1つのプロセスを維持するために必要なすべてのページテーブルを格納するためのオーバーヘッドを考慮してください。
#pages * size_entry
= 2^20 * 4 = 4MB
これはかなりです!
しかし、追加の1024ページテーブルを指し示す1024個のエントリを持つ第1レベルのページテーブルを使用するとどうなりますか?前のように1024 * 1024 = 1Mのエントリです。
今、メモリオーバーヘッドは何ですか? 1K×4 + 1×4 = 4KB + 4B~ = 4KB