仮想メモリをサポートせずに複数のプロセスをサポートできますか?

仮想メモリをサポートせずに複数のプロセスをサポートできますか?

仮想メモリをサポートせずに複数のプロセスをサポートできますか?それなら、もう少し知りたいです。

答え1

ハードウェアサポートがなくても(いいえメモリ管理ユニット)、すべてのポインタは物理アドレスを表します。しかし、一般に、MMUを介して提供されるいくつかの主な機能は失われます。

  • ポインタは常にRAMの特定の位置を指すため、交換はできません(または非常に限られた方法でのみ実行できます)。通常、MMUが指定された仮想アドレスの物理ページを見つけることができない場合、MMUは例外をスローし、オペレーティングシステムによって提供される例外ハンドラがスワップからページを取得します。
  • ポインタはチェックなしで逆参照されるため、各プロセスは他のプロセスのメモリとカーネルメモリにアクセスできます。一般に、MMU が指定された仮想アドレスの物理ページを見つけることができない場合、例外が発生し、オペレーティング システムによって提供される例外ハンドラが間違ったアクセスを試みるプロセスを終了します。
  • 同じポインタは異なるプロセスで同じ意味を持つため、簡単に実装できません。クロス。通常、これが行うことは、forkプロセスの物理メモリをコピーし、同じ仮想アドレスから新しい物理アドレスにマッピングされる新しい仮想メモリを作成することです。

一部のUnixファミリーオペレーティングシステムは、MMUなしでシステムで実行できます。

¹現代のユニスでは、通常これが行われます。怠惰(記録中にコピー)、これは物理ページが見つからないときにMMUに依存して例外を発生させます。

答え2

もちろん、上記のように、メモリ保護などの問題になる可能性があるいくつかの制限があります。例えばμClinuxhttp://www.uclinux.org/仮想メモリを実装せずに複数のプロセスをサポートします。一部のCPU(少なくともAnalog Devices Blackfinなど)はMPU(メモリ保護デバイス)を提供します。http://docs.blackfin.uclinux.org/doku.php?id=bfin:mpu。これにより、仮想メモリが少ないオペレーティングシステムでもメモリを分割できます。

答え3

どのように定義するかによって異なります。プロセスそして記憶の面で。

仮想メモリの機能の1つはパーティション化です。分割せずに複数のプロセスを実行することは可能ですが、これは同じアドレス空間を共有するプロセスではなく、複数のスレッドを実行するのと似ています。

関連情報