2016-05-02 12 views
0

私はいつもそれを読んで、いつでもプロセッサは一度に1つのプロセスしか実行できません。したがって、唯一のプロセスは状態runningです。 しかし、我々は実行可能なプロセスをいくつか持つことができます。これらは、スケジューラが実行をスケジュールするのを待っているすべてのプロセスです。ユーザアドレスメモリはどのように整理されていますか?

いつでも、これらの実行可能プロセスはすべてユーザーのアドレス空間に存在しますか?または、現在実行されているプロセスがユーザーアドレス空間に存在し、ディスクからRAMに戻すことがスケジュールされている場合にのみ実行されます。この場合、ディスクに入っていても、カーネルはすべての実行可能プロセスのリストにプロセスタスク記述子を保持していますか?私はあなたが混乱していると言うことができると思います。

+0

あなたが何を求めているのかは分かりません。各プロセスには、*別々のアドレス空間があります。 –

+0

あなたは、ユーザーのアドレス空間に割り当てられた3GBの中に、各プロセスが別々のアドレス空間を持つことを意味しますか?私はいつでも私のマシン上で多数の実行中のプロセスを見ることができ、私が実行しているすべてのプロセス(プロセッサの観点から:現在実行中のプロセスとスケジューラが割り当てられるのを待っているプロセス)どのようにしてそれらをすべてユーザのアドレス空間にロードできるか? – ijuio

+0

** **ユーザーアドレススペースはありません。各プロセスには独自の領域があります。 –

答えて

1

CPUが仮想メモリアドレッシングをサポートしている場合、各プロセスにはメモリの一意のビューがあります。同じメモリアドレスから読み込もうとする2つの異なるプロセスは、メモリマップがotherwize(共有メモリの場合、例えばこのように読み込まれたDLLファイルのように)を指示しない限り、物理メモリ内の別の場所にマップします。

CPU仮想メモリはサポートされていませんが、メモリ保護のみがサポートされているため、他のプロセスのメモリが保護され、実行中のプロセスは自分のメモリにしかアクセスできません。

+0

仮想メモリをサポートしていないプロセッサでLinuxを実行できますか? –

+0

はい、http://www.uclinux.org/ –

関連する問題