仮想アドレス空間(メモリ管理)
プロセスの仮想アドレス空間は、プロセスが使用できる仮想メモリ アドレスのセットです。 各プロセスのアドレス空間はプライベートであり、共有されない限り他のプロセスからアクセスすることはできません。
仮想アドレスは、メモリ内のオブジェクトの実際の物理的な位置を表すものではありません。代わりに、システムは各プロセスに対して ページ テーブル を維持します。これは、仮想アドレスを対応する物理アドレスに変換するために使用される内部データ構造です。 スレッドがアドレスを参照するたびに、システムは仮想アドレスを物理アドレスに変換します。
32 ビット Windows の仮想アドレス空間のサイズは 4 ギガバイト (GB) で、2 つのパーティションに分かれています。1 つはプロセスが使用するためのもので、もう 1 つはシステム用に予約されています。 64 ビット Windows の仮想アドレス空間の詳細については、「64 ビット Windows の仮想アドレス空間」を参照してください。
仮想メモリの詳細については、次のトピックを参照してください。
32 ビット Windows のデフォルトの仮想アドレス空間
次の表は、各パーティションのデフォルトのメモリ範囲を示しています。
メモリ範囲 | 使用方法 |
---|---|
下位 2GB (0x00000000 ~ 0x7FFFFFFF) | プロセスによって使用されます。 |
上位 2GB (0x80000000 ~ 0xFFFFFFFF) | システムによって使用されます。 |
4GT を使用した 32 ビット Windows の仮想アドレス空間
4ギガバイトチューニング (4GT)が有効になっている場合、各パーティションのメモリ範囲は次のようになります。
メモリ範囲 | 使用方法 |
---|---|
下位 3GB (0x00000000 ~ 0xBFFFFFFF) | プロセスによって使用されます。 |
上位 1GB (0xC0000000 から 0xFFFFFFFF) | システムによって使用されます。 |
4GT を有効にすると、イメージ ヘッダーに IMAGE_FILE_LARGE_ADDRESS_AWARE フラグが設定されているプロセスは、下位 2 GB のメモリを超える追加の 1 GB のメモリにアクセスできるようになります。
32 ビット Windows の仮想アドレス空間の調整
次のコマンドを使用して、プロセスで使用できるパーティションのサイズを 2048 (2 GB) ~ 3072 (3 GB) の間の値に設定するブート エントリ オプションを設定できます。
BCDEdit /set increaseuserva メガバイト
ブート エントリ オプションを設定すると、各パーティションのメモリ範囲は次のようになります。
メモリ範囲 | 使用方法 |
---|---|
下位 (0x00000000 から メガバイト) | プロセスによって使用されます。 |
上位 (メガバイト+1 ~ 0xFFFFFFFF) | システムによって使用されます。 |
Windows Server 2003: boot.ini の /USERVA スイッチを 2048 ~ 3072 の値に設定します。