最後に1024ページを計算する方法を教えてください。
2 の累乗を扱っていることを思い出してください。
4 MB = 4,194,304 バイト
4KB = 4096 バイト
4 MB / 4 KB
= 4,194,304 Bytes / 4096 Bytes
= 1024バイト
この点で、エントリあたり 4 バイトとは何ですか?
すべての2^32アドレス空間を参照するには 32 ビットが必要です。1 バイトあたり 8 ビット32 bits
= 4バイト。
たとえば、最初のアドレスは 0 で、最後のアドレスは 4294967295 または (2^32 - 1) です。
Entry | Page Memory Location
------------------------------------------
1 | 0
2 | 4096
3 | 8192
... | ...
2^20 | 4294963200 -> (2^32 - 1) - 4096
テーブル内の各エントリは、メモリ内のどこかにある 1 ページを指しています。この例では、ゼロから始まるとしましょう。2^20 のエントリがあり、メモリ アドレスのスパン全体 (2^32) をカバーします。各エントリは 4096 バイトなので、すべてのページをカバーするには 2^20 エントリしか必要ありません。
4K は 4*1024 バイトを意味しますか?
はい、各ページが 4096 バイト (4*1024) であることを意味します。
彼らは4バイト(1ワードあたり)を考慮していますか、または4バイトは、各ワードが4バイトと言うサイズの4 * 1024ワードを持っていることを意味しますか?
32 ビット プロセッサでは小さくなりますが、通常、1 ワードは 32 ビットまたは 4 バイトです。
追加コメント
ページ サイズが 4K であると言う場合、それは、それぞれ 4 バイトの 1024 エントリ、またはそれぞれ 1 バイトの 1024*4 エントリ、または他に何かあることを意味します。
ページは何でも保持できます。これは、この例では 4096 バイトのデータのコンテナーです。ページ テーブルには、ページを指すエントリが保持されます。Davidが述べたように、ページテーブルはメモリに保存されるため、ページにも保存されます。
説明が間違っていると誰かが言っていました。正しいものは次のとおりです。2^32 アドレス空間と 4K (2^12) ページ サイズの場合、テーブルには 2^20 ページが残ります。エントリあたり 4 バイトの場合、これは4 GBのページ テーブルに相当し、大きすぎて連続したメモリに適切に保持できません。(そして、各プロセス スイッチでメモリのスワップ インとスワップ アウトを行います。) 4K ページ サイズでは、合計テーブルを保持するだけで 1024 k ページ (=1M ページ) かかることに注意してください。彼は正しいですか、それとも間違っていますか?
彼は間違っています。ページテーブルに実際に各ページのデータが含まれていれば、彼は正しいでしょう。4096 バイトのページと 2^20 のエントリを使用すると、4,294,967,296 バイト (4 GB) になりますが、エントリのサイズはわずか 4 バイトです。これを 2^20 エントリで乗算すると、4,194,304 バイト (4 MB) になります。