Windowsでは、通常の状況では、32ビットプロセスは2GBのRAM(またはboot.iniファイルの特別なスイッチを使用して3GB)にしかアクセスできません。64ビットオペレーティングシステムで32ビットプロセスを実行する場合、使用可能なメモリはどれくらいですか?これを変更できる特別なスイッチや設定はありますか?
回答:
デフォルトでは2GB。アプリケーションが大規模なアドレス空間を認識している場合(/ LARGEADDRESSAWAREにリンクされている場合)、4 GBを取得します(3 GBではありません。http://msdn.microsoft.com/en-us/library/aa366778.aspxを参照してください)。
多くのアプリケーションはポインタのトップビットがゼロであることに依存しているため、これらはまだ2GBに制限されています。
since many application depends on the top bit of pointers to be zero
は、プロセスのアドレス空間をトラバースするときに、アドレス指定スキームの32番目のビットが考慮または使用されないことを意味します。
/ LARGEADDRESSAWAREとリンクする場合、4GBからシステムで使用されているものを差し引いたもの。
さまざまな32ビットアプリケーションがある場合、wow64サブシステムはそれらを4Gを超えるメモリ内のどこにでもマップできるため、十分なメモリを備えた64ビットウィンドウでは、さらに多くの32ビットアプリケーションを実行できるという事実に誰も触れていないようです。ネイティブ32ビットシステムよりも。
64ビットOSでの単一の32ビットプロセスは2Gbに制限されています。ただし、IMAGE_FILE_LARGE_ADDRESS_AWARE
ビットが設定されたEXEファイルにコンパイルされた場合、2Gbではなく4GBの制限があります。https: //msdn.microsoft.com/en-us/library/aa366778(VS.85).aspxを参照してください。
特別なブートフラグ、3 GB、/3GB
スイッチ、または/userva
すべて32ビットオペレーティングシステムについて耳にすることは、64ビットWindowsには適用されません。
詳細については、https://msdn.microsoft.com/en-us/library/aa366778(v = vs.85).aspxを参照してください。
32ビットオペレーティングシステムについては、その考えに反して、32ビットオペレーティングシステムの物理的な制限は4GBではありません。たとえば、Microsoft Windows Server 200832ビットなどの32ビットサーバーオペレーティングシステムは、最大64GBにアクセスできます。(Windows Server 2008 EnterpriseおよびDatacenterエディション)–Pentium ProでIntelによって最初に導入され、後にAthlonプロセッサでAMDによって導入されたPhysical Address Extension(PAE)によって、3つのレベルのページテーブル階層を定義します。 32ビットではなく64ビットのテーブルエントリを使用して、これらのCPUが4ギガバイトを超える物理アドレス空間に直接アクセスできるようにします。したがって、理論的には、32ビットOSは理論上2 ^ 64バイト、つまり17,179,869,184ギガバイトにアクセスできますが、セグメントは4GBに制限されています。ただし、マーケティング上の理由により、Microsoftは、サーバー以外のオペレーティングシステムでアクセス可能な最大メモリをわずか4 GB、さらには3GBに制限しています。したがって、単一のプロセスが32ビットOSで4GB以上にアクセスできます。たとえば、MicrosoftSQLサーバーがその一例です。
64ビットWindowsでの32ビットプロセスには、共有カーネルの仮想アドレス空間(システム空間とも呼ばれます)を使用する点で、64ビットプロセスと比較して不利な点はありません。64ビットWindowsでは、64ビットまたは32ビットを問わず、すべてのプロセスが同じ64ビットシステムスペースを共有します。
事実を考えると、システムのスペースは、すべてのプロセス間で共有されている上、32ビットWindows、(スレッド、セマフォ、ファイルなどのように)ハンドルを大量に作成するプロセスのカーネルオブジェクトによって、システムの容量を消費しても、メモリが不足することができますが合計で使用可能なメモリがたくさんある場合。対照的に、64ビットWindowsでは、カーネルスペースは64ビットであり、4GBに制限されません。32ビットアプリケーションによって行われたすべてのシステムコールは、ユーザーモードでネイティブ64ビット呼び出しに変換されます。
制限は2gまたは3gbではなく、32ビットの場合は4gbです。
人々がその3GBを考える理由は、実際に4GBのシステムRAMがある場合にOSが3GBを無料で表示するためです。
その合計RAMは4GBです。したがって、32ビットOSで表示されるRAMの合計の一部としてカウントされる1GBのビデオカードがある場合。
4Gig not 3 not 2 got it?