メモリに関するコンピュータの基礎

メモリに関するコンピュータの基礎

メインメモリの容量が 2 GB の場合、32 ビット アドレス バスをサポートするプロセッサがアクセスできる最大のプログラムはどれくらいでしょうか?

答え1

32 ビットのアドレス空間があれば、2^32 (4Gi) バイトのメモリをアドレス指定できます。仮想アドレス空間で実行されるプログラムに関する限り、4GiB 相当のアドレス指定とアクセスができない理由は見当たりません。

これは、仮想メモリを使用する OS、おそらく補助的なハードウェア (MMU) など、いくつかのことを前提としています。ただし、最新の 32 ビット CPU と最新の OS であれば、これは問題にならないはずです。最新のものはすべてページングをサポートしているため、物理メモリで現在アクセスしている 4GiB の部分だけが必要です。


一般的な回答は以上です。次は Windows と x86 向けの回答です。

Windows (win2000 時代から?) は仮想メモリとページングを使用します。また、4Gi アドレス範囲を半分に分割することがデフォルトです。上半分はカーネル用、下半分はユーザー プログラム用です。これにより、ユーザー プログラムに 2GiB アドレスの人工的な制限が課せられます。カーネルを特別なモードで起動し、LARGEADDRESSAWARE プログラムを使用する場合は 3GiB になります。

これにより、ユーザー プログラムが制限されます。

次に、メモリ バスを人工的に 36 ビットに拡張する PAE があります。PAE は醜い間に合わせのもので、64 ビット CPU (過去 20 年間で一般的になりました) 以降は必要ありません。

これは「もし~だったら」という「X に答えてください」という投稿になりつつあります。つまり、より具体的な質問があると良いということです。

答え2

理論上は 2GB になりますが、その一部は OS 自体によって予約および/または使用されます。

32ビットプロセスは、意図的に再設計しない限り、64ビットOSで実行した場合でも2GBに制限されることに注意してください。IMAGE_FILE_LARGE_ADDRESS_AWAREを考慮して再設計した場合、制限は次のようになります。MSDNによると、3GB。

関連情報