仮想アドレス空間 (メモリ管理)

プロセスの仮想アドレス空間は、使用できる仮想メモリ アドレスのセットです。 各プロセスのアドレス空間はプライベートであり、他のプロセスが共有されていない限りアクセスできません。

仮想アドレスは、メモリ内のオブジェクトの実際の物理的な場所を表すものではありません。代わりに、システムはプロセスごとに ページ テーブル を保持します。これは、仮想アドレスを対応する物理アドレスに変換するために使用される内部データ構造です。 スレッドがアドレスを参照するたびに、システムは仮想アドレスを物理アドレスに変換します。

32 ビット Windows の仮想アドレス空間のサイズは 4 ギガバイト (GB) で、2 つのパーティションに分割されます。1 つはプロセスで使用し、もう 1 つはシステムで使用するために予約されています。 64 ビット Windows の仮想アドレス空間の詳細については、「 64 ビット Windows の仮想アドレス空間」を参照してください。

仮想メモリの詳細については、次のトピックを参照してください。

32 ビット Windows の既定の仮想アドレス空間

次の表は、各パーティションの既定のメモリ範囲を示しています。

メモリ範囲 使用法
低い 2 GB (0x00000000から0x7FFFFFFF) プロセスによって使用されます。
高い 2 GB (0x80000000から0xFFFFFFFF) システムによって使用されます。

 

4GT を使用した 32 ビット Windows の仮想アドレス空間

4 ギガバイトのチューニング (4GT) が有効になっている場合、各パーティションのメモリ範囲は次のようになります。

メモリ範囲 使用法
低い 3 GB (0x00000000から0xBFFFFFFF) プロセスによって使用されます。
高い 1 GB (0xC0000000から0xFFFFFFFF) システムによって使用されます。

 

4GT が有効になると、イメージ ヘッダーに IMAGE_FILE_LARGE_ADDRESS_AWARE フラグが設定されているプロセスは、2 GB を超える追加の 1 GB のメモリにアクセスできます。

32 ビット Windows の仮想アドレス空間の調整

次のコマンドを使用すると、プロセスで使用できるパーティションのサイズを 2048 (2 GB) から 3072 (3 GB) の間の値に構成するブート エントリ オプションを設定できます。

BCDEdit /setincreaseuservaメガバイト

ブート エントリ オプションを設定すると、各パーティションのメモリ範囲は次のようになります。

メモリ範囲 使用法
Low (0x00000000 からメガバイト) プロセスによって使用されます。
High (メガバイト +1 ~ 0xFFFFFFFF) システムによって使用されます。

 

Windows Server 2003: boot.iniの /USERVA スイッチを 2048 ~ 3072 の値に設定します。