差分

移動先: 案内検索

プロセス管理

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