Windows のようなデマンド ページ保護モードのオペレーティング システムでは、使用可能な RAM の量は、プロセスが使用できる仮想メモリの量とはまったく関係ありません。制限要因は、ページング ファイルによってバックアップできる仮想メモリの量です。Windows のページング ファイルは、起動時とレジストリ設定で決定されるサイズで開始されます。そこから、プロセスがより多くのメモリを必要とする場合、Windows は必要に応じてページング ファイルのサイズを大きくすることができます。
この環境で 64 ビット プロセスが使用できるメモリの量は?
これは予測できませんが、少なくともページング ファイルで現在使用可能なスペースと同じくらいです。通常、約 13 ギガバイトを取得します。このスペースは飛躍的に拡大する可能性があり、プログラムの 2 回目の実行では、Windows が追いついてページング ファイルを増やしたため、より多くのメモリを消費する可能性があります。これは、Mark Russinovich によるこのブログ投稿で実際に確認できます。
この環境で 32 ビット プロセスが使用できるメモリの量は?
デフォルトでは 2 ギガバイトです。プログラムの EXE ヘッダーのラージ アドレス対応オプション ビットは、4 ギガバイトまで拡張できます。ほとんどの 32 ビット プログラムでは、このオプション ビットがオフになっています。
この環境で 32 ビット プロセスが 2GB の RAM しか使用できない場合...
3 ギガバイトではなく、2 ギガバイトまたは 4 ギガバイトです。もう一度強調すると、RAM とは何の関係もありません。8 ギガの RAM を搭載したマシンでも、LAA である 32 ビット プロセスが4 ギガの RAM を消費する可能性はほとんどありません。RAM は共有リソースであり、すべてのプロセスがその一部を必要とします。4 ギガを消費する 32 ビット プロセスでは、その一部がページ アウトされる可能性が非常に高くなります。