web-dev-qa-db-ja.com

Win732ビットカーネルはLargeAddressAwareプログラムを実行している状態でも2GBを使用できますか?

私は現在、6GBのRAMを搭載したWindows7 Professional32ビットを実行しています。

私はPAEパッチを使用して、35GBを超えるRAMを32ビットWindowsで使用できるようにします。同様の議論がここで行われました: Windows 7でPAEを有効にするにはどうすればよいですか( 32ビット)3.5 GBを超えるRAMをサポートしますか?

Win7 SP1のパッチへのリンクはここにあります: https://wj32.wordpress.com/2011/02/23/pae-patch-updated-for-windows-7-sp1/

とにかく、簡単に言えば、私はパッチをインストールしていますが、Skyrimをプレイしたことがある人が知っているかもしれない場合、Skyrimの最新バージョン(1.3.10)ではデフォルトでLarge AddressAwareフラグが有効になっています。 32ビットWindowsでは3GBのメモリ、64ビットWindowsでは4GBのメモリ。もちろん、これを利用するには、BCDエントリ(userva = 3072)でユーザー環境変数を設定して、アプリケーションが32ビットWindowsで3GB全体を使用できるようにする必要があります。

質問は次のとおりです。私の友人からの私の理解によると、32ビットのWindowsカーネルはそれ自体で最大2GBのメモリしかアドレス指定できません。 PAEパッチを有効にし、SkyrimなどのLAA対応アプリケーションを使用すると、32ビットWindowsカーネルは、使用可能な追加メモリを適切に利用する際に問題が発生します(たとえば、次の理由で1GBしかアドレス指定できません)。元の4GBの制限)または、カーネルが必要な最大2GBを使用できるように、Windowsはそれ自体に十分なメモリを適切に割り当てることができますか?元の構成では6GBあることを忘れないでください。

私の知る限り、アプリケーションがPAEで動作するように設計されていなくても、1つのアプリケーションが「制限」に達する前に最大2 GBを使用できるため、理論的には、最大3つのアプリケーションで最大2GBを使用できます。それぞれ(Windowsがメモリを消費していないふりをしているが、理論上のシナリオにすぎない)、Windowsはメモリ空間のどこにこれらのアプリケーションがあるかを処理しているので、私はまだ問題ありません。

私が間違っている場合は、遠慮なく訂正してください。私はプログラマーではありませんが、この構成を使用してどのような天井や壁に遭遇する可能性があるのか​​知りたいです。

2
White Phoenix

物理メモリの制限と仮想メモリの制限はまったく関係ありません。一方は他方とは何の関係もありません。 PAEは、物理メモリの4GBの制限を取り除きます。仮想メモリに関連する3GB/LAAの問題については何の関係もありません。

ただし、厄介な問題が1つあります。 3GBモードを有効にすると、カーネルで使用できるアドレス空間は1GBのみになります。物理メモリと非ページプール全体の使用状況とマッピングを追跡するエントリを含む特定のシステムエントリは、そのアドレス空間に存在する必要があります。そのため、OSのアドレス空間が制限されている可能性があります。これは、特にハイエンドのビデオカードなど、他のものが大量のアドレススペースを消費する場合に、32ビットオペレーティングシステムで問題を引き起こす可能性があります。

これがあなたに影響を及ぼしている場合、最初の症状は、奇妙なエラーでネットワークが不思議に失敗することです。たとえば、これ Microsoftスレッド を参照してください。

/ 3GBを使用していると言ったことはありません。それがなくても、LAAプロセスは2GBに制限されています。

私の知る限り、アプリケーションがPAEで動作するように設計されていなくても、1つのアプリケーションが「制限」に達する前に最大2 GBを使用できるため、理論的には、最大3つのアプリケーションで最大2GBを使用できます。それぞれ(Windowsがメモリを消費していないふりをしているが、理論上のシナリオにすぎない)、Windowsはメモリ空間のどこにこれらのアプリケーションがあるかを処理しているので、私はまだ問題ありません。

いいえ!2GBの制限は仮想メモリにあります。 6GBの物理メモリがあります。それぞれ2GBを使用して50のプロセスを持つことができ、それらの50のプロセスのそれぞれのプロセスごとの制限を除いて制限に達することはありません。

4
David Schwartz

32ビットのWindowsカーネルは、それ自体で最大2GBのメモリしかアドレス指定できません。

はい-カーネルは、プログラムの4 GBの仮想アドレス空間から上位2 GBを超えることはありません(または、1 GBを超える場合は、あなたは/3GBフラグであり、プログラムはラージアドレス対応です)。したがって、各アプリには、仮想メモリの下位2 GB(後者の場合は3 GB)が保証されます。

PAEを使用すると、カーネルは最大64 GBの物理メモリを使用できます。ただし、各プログラムには4GBの仮想アドレス空間があります。 64ビットシステムにアップグレードする以外の方法でこれを回避することはできません。

私の知る限り、アプリケーションがPAEで動作するように設計されていなくても、1つのアプリケーションが「制限」に達する前に最大2 GBを使用できるため、理論的には、最大3つのアプリケーションで最大2GBを使用できます。それぞれ(Windowsがメモリを消費していないふりをしているが、理論上のシナリオにすぎない)、Windowsはメモリ空間のどこにこれらのアプリケーションがあるかを処理しているので、私はまだ問題ありません。

うん。

アプリケーションが2GBを超える物理メモリを必要とする場合は、 [〜#〜] awe [〜#〜] を使用する必要があります。 =、しかし私はゲームがこれを行うことを真剣に疑っています(それをプログラムするのは簡単ではありません)。

2
user541686