質問: 32ビットプロセスに2 gb ram=制限があるのはなぜですか? 32ビットosの32ビットプロセスに2 gbの制限があるのはなぜですか。ブログの投稿 チャットの質問:32ビットおよび64ビットプロセスのメモリ制限 によると、制限は3 gbに拡張できますが、疑問は残ります。物理的な制限は4 gbですが、2 gbまたは3 gbはwindowsでハードコードされているだけですか? 32ビットプロセスの4 gbが64ビットosにあるのはなぜですか。注:この質問は重複としてマークされていますが、参照されている質問は、32ビットアドレス空間の4 gbの制限に関するものです。これは[〜#〜]ではありません[〜#〜]私が求めていることです。 32ビットプラットフォームであっても、windowsがプロセスを2 gbに制限する理由を具体的に質問します。受け入れられた回答はそれについて言及していますが、その理由を説明していません。
回答: windows internalsの本によると、それは設計上の決定でした。 4 gbの仮想メモリ空間全体を2つの部分に分割しました。 2 gbカーネルモード仮想アドレススペース(ドライバーメモリウィンドウなど) 2 gbのユーザーモード仮想アドレス空間(ユーザー空間プログラム用のメモリ) 次に、非推奨/3gbスイッチ(カーネル1:3ユーザーを変更し、絶対オフセットで割り当てるドライバーで厄介なバグが発生する可能性があります)、 [〜#〜] pae [〜#〜] そして1つあったと思いますより多くのapiを使用すると、非ページメモリを割り当て、それをプログラムのアドレス空間に動的にウィンドウできます(ただし、現在のところ、その名前を思い出せません)。