私は、2GBのアドレス空間がWindows OS(およびiirc、VRAM)用に予約されているため、32bit Windowsアプリケーションは2GB RAMに制限されていると読んでいます。 32ビットWinXpで/ 3GBフラグを使用する場合、アドレッシングに使用できるRAMは最大3 GBまでですが、通常はuserva値を調整する必要があります。 Windowsの64ビット版では、PEヘッダーに大きなアドレス認識フラグがあり、4 GB以上のRAMがあると聞きました。アプリケーションが4 GBのアドレス空間をすべて自分のメモリ管理に使用することは可能です。64ビットコンピュータ上の32ビットアプリケーションで、Large Address Awareフラグはどのように機能しますか?
一方、Windows APIを呼び出すと、提供されている32ビットのアドレス空間内のメモリ位置を呼び出す必要があることは間違いありません。したがって、32ビットの大規模なアドレス認識アプリケーションは、64ビット環境で実際にどれだけのRAMを使用できますか?なぜ?
ありがとうございます。
その場合、32ビットWindows XP OSでAWEを使用して、/ 3GBの愚かさの代わりに4GBのRAMを適切に利用できるのですか? –
+1/LARGEADDRESSAWAREで実行する予定の場合、さまざまなソフトウェアに32ビットポインタ> 2GBのバグがあることに注意してください。いくつかのMS API関数(私はVistaでGetCursorPosを見ています!)これらの問題を洗い流し、必要な場合には[トップダウンメモリ割り当て]を使用する方法(http://msdn.microsoft .com/ja-jp/isv/bb190527(l = en-us))。これはレジストリ設定で有効になっています。 –
はい、物理メモリページを仮想アドレス空間に明示的にマッピングする必要があります。これは、古いDOS時代からのVESA銀行の切り替えに似ています。 – MSN