web-dev-qa-db-ja.com

32ビットWindowsシステムのスレッドプログラムに対するPAEの利点

4GBを超えるRAMを搭載し、PAEが有効になっているシステム(64ビットCPU上)がある場合、スレッド化された32ビットアプリケーションは合計4GB、またはスレッドあたり4GBを使用できますか?

Windows XP 32ビット(7またはXP x64は使用できません)とのみ互換性のあるDAW(デジタルオーディオワークステーション)ソフトウェアを実行しているので、私は尋ねますドライバーが悪いため)、DAWソフトウェア(Sonar X1 Producer)はスレッドアプリです。まもなく4GBから12GBにアップグレードする予定ですが、すべて使用できるようにしたいと思います(すべてを使用できます)。 Win7 x64インストール)。1つのアプリケーションのみを実行するため、4GBを使用するアプリケーションではなく、各スレッドが4GBを使用できる場合にのみ役立ちます(XPインストールの場合)。

4
gjsmo

プロセスは、物理RAMのすべてのバイトを使用できるようになります。オペレーティングシステムがその物理RAMにアクセスできる限り、プロセスが使用できる物理RAM)の量に制限はありません。

ただし、プロセス内のすべてのスレッドの共有アドレス空間は、基本的に4GB未満(実際には2GBまたは3GB)に制限されます。これは、32ビットプロセスでサポートされる最大のアドレス空間だからです。 32ビットプロセスは32ビットポインタを使用し、2 ^ 32 = 4GBです。すべてのスレッドはすべてのアドレス空間を共有します。そうしないと、あるスレッドから別のスレッドにポインタを渡すことができません。

この制限は、PAEに関係なく、また物理メモリの量に関係なく適用されます。通常、32ビットプロセスの場合は2GBのアドレス空間です。 /3GBスイッチで3GBに微調整できます。

繰り返しますが、これにはnothing物理メモリの使用と関係があります-すべてのプロセスは常に物理メモリのすべてのバイトを使用できます。これは厳密にはアドレス空間の制限です。 PAEを使用すると、オペレーティングシステムはより多くの物理メモリを使用できます。アドレス空間の制限は、プロセスが仮想メモリを使用する方法に影響します。

2
David Schwartz

MSDNでは、 物理アドレス拡張 およびその他の大容量メモリアドレス拡張について説明しています。基本的に、32ビットアプリケーションは最大2GBのメモリしかマッピングできません(マシンごとに異なります)。 OSははるかに多くのアクセスが可能ですが、個々のアプリケーションは2GBのアドレス空間に制限されています。 注:2GBの制限は、スレッドごとではなく、32ビットプロセスごとです。

Windows XP Professionalは、アプリケーションが最大3GBのアドレス空間をアドレス指定できる4GT(4ギガバイトチューニング)モードをサポートしています。これは、boot.iniの/ 3GBスイッチを使用して有効にできます。ファイル。

1
Chris Thompson

デフォルトでは、32ビットアプリ。物理的なRAMまたは設定されている 'フラグ'(/ 3G/PAEなど)の量に関係なく、2Gbのアドレス空間にアクセスできます。

アプリ。 .exeヘッダーにLARGEADDRESSAWAREフラグを設定すると、32ビットシステムでは最大合計(すべてのスレッドの合計)3Gb、64ビットシステムでは4Gbのアドレス空間にアクセスできます。

0
steve b