[2GBのユーザー+ 2GBのカーネル]
。 PAEが有効になっていないx86 32ビットシステムでは、仮想アドレス空間は4 GiBです(GiBは1024 MiBを表し、GB usually denotes 1000 MBに注意してください)。
私が混乱しているのは、すべてのプロセスに固有のこの4GBのスペースです。
はい、すべてのプロセスには独自の4 GiB仮想アドレス空間があります。
3つのプロセスp1、p2、p3が実行されているとすれば、ハードディスクには1235GBの領域が必要ですか?
いいえ3つのプロセスで、最大12 GiBのストレージを占有することができます。プライマリまたはセカンダリストレージがカーネルに残されているかどうか(もちろんプライマリが優先されます)。したがって、すべてのプロセスが本当に起こりそうにない4 GiBの全範囲を占有している場合は、3つのプロセスすべてを含めるためには、プライマリメモリサイズ+セカンダリストレージスペースが少なくとも12 GiBになる必要があります。また
かの方法、それは4ギガバイトを必要とするプロセスを処理 に管理しますが、私は32ビットシステム上で2GBのRAMを持っていると言う?[ページングファイル経由]?
はい、あります。あなたは正しいことを意味しますが、 "ページングファイル"は単なる実装の詳細です。これはWindowsで使用されますが、Linuxでは代わりに別のスワップパーティションを使用します。したがって、技術的には正しくなるためには、プロセスの残りの2 GiBを格納するためには「2次記憶装置(たとえばHDD)が必要です。
ありがとう、それは多くのものをクリアします。 3番目の答えに関して、プロセスが4 GBのスペースを必要としない場合、余分なスペースは他のプロセスで自由に使用できますか? –
仮説的シナリオでは、12GBの容量と4GBのRAMを備えたHDDがあり、それぞれ12GBのプロセスが稼動しており、それぞれ1GBの容量(ユーザーデータ+カーネル、残りの3GBは空き)があります。実行するための十分なメモリ? –
@TanmayBhattacharyaはい。すべてのプロセスには常に4 GiBの仮想メモリがあります。しかし、これらの4 GiBが実際にHDDやRAMのような物理メモリにマッピングされるかどうかは、カーネルによって決定されます。つまり、ページがマップされていない物理メモリーは、他のプロセスが使用するために自由に使用できます。 – Downvoter