2016-09-18 8 views
0

OSによるメモリ管理を理解しようとしています。 私が今理解していることは、32ビットシステムでは、各プロセスに仮想アドレス空間に4GBの[2GBユーザー+ 2GBカーネル]のスペースが割り当てられていることです。 私が混乱するのは、すべてのプロセスに固有のこの4GBのスペースです。 3つのプロセスp1、p2、p3を実行しているとすれば、ハードディスクに12 GBのスペースが必要ですか?OSによるメモリ管理

また、32ビットシステムに2GBのRAMが搭載されているとしたら、4GBを必要とするプロセスをどのように処理することができますか? OSによって制約され

答えて

0

[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)が必要です。

+0

ありがとう、それは多くのものをクリアします。 3番目の答えに関して、プロセスが4 GBのスペースを必要としない場合、余分なスペースは他のプロセスで自由に使用できますか? –

+0

仮説的シナリオでは、12GBの容量と4GBのRAMを備えたHDDがあり、それぞれ12GBのプロセスが稼動しており、それぞれ1GBの容量(ユーザーデータ+カーネル、残りの3GBは空き)があります。実行するための十分なメモリ? –

+0

@TanmayBhattacharyaはい。すべてのプロセスには常に4 GiBの仮想メモリがあります。しかし、これらの4 GiBが実際にHDDやRAMのような物理メモリにマッピングされるかどうかは、カーネルによって決定されます。つまり、ページがマップされていない物理メモリーは、他のプロセスが使用するために自由に使用できます。 – Downvoter