差分
プロセス管理
,/* プロセスの状態 */
</ref>
ある程度単純化したプロセス状態の基本モデルを考えて説明したいと思います。
* (5) 終了待ち (ZOMBIE) : プロセスの終了処理を待っている状態
* (6) 停止 (STOPPED) : プログラムを一時的に停止させるプログラムを一時的に停止させている状態
* A 実行中→待機中 : 割り当てられたCPUリソースを使ったので、CPUでの実行状態から待機状態になる。この時、CPUリソースが使える状態になれば、すぐに実行状態に戻れる。
* B 待機中→実行中 : すぐにでも実行を行える状態で待っている。すぐにでも実行を行える状態で待っていて、CPUが割り当てられればすぐに実行中になる。
* C 実行中→イベント待ち : 入力などのイベントのために待ち状態になっている。
* イベント待ち→待機中 : 入力のようなイベントがあったので待機中になっている。
さて先程例に出したπの計算をしている同時に3つ動かしているプログラムは、ほとんどの場合、「実行中→待機中」と「待機中→実行中」をいったり来たりしているはずです。さて先程例に出したπの計算をしている同時に3つ動かしているプログラムは、ほとんどの場合、遷移AとBをいったり来たりしているはずです。たまにIOのためにイベント待ちの状態になりますが、それよりもはるかにCPUを使いπの計算している時間の方が多いはずです。待機中たまにIOのためにイベント待ちの状態になりますが、それよりもはるかにCPUを使いπの計算している時間の方が多いはずです。待機中(READY状態)のプロセス数を示すロードアベレージは1.0を越えて徐々に増えていき最後には3.0を越えるはずです。一方で例えばエディタのようなインタラクティブなプログラムを考えてみます。そうなると、ユーザが実際に使っている時間のほとんどは入力を待っている待機中です。ロードアベレージは1.0以下で限りなく0.0に近くなるでしょう。
匿名利用者