差分

移動先: 案内検索

プロセス管理

6 バイト追加, 2007年10月25日 (木) 11:25
/* プロセスの状況 */
現在80プロセスが動いていて、待機中75、実行中5、終了待ち0、ストップ0です。
 
STATの部分はプロセスの状態を表しています。一文字目がプロセスの状態を示していて、RはRUNNING状態、S はSLEEP状態という意味です。Dの場合は割込みが利かないSLEEP状態、Zはゾンビ状態、Tがストップ状態です。
 
イベント待ちSLEEP状態で入力などの割込みで止まっている場合はSのSLEEP状態として表示されますが、bashやcsh のようなジョブコントロールが可能なシェル上でコマンドを実行し、コントロールZで止めたような場合はストップ状態となりTのストップ状態として表示されます。
 
ほとんどのSLEEP状態は場合は割込みがあればすぐに動き出すINTERRUPTIBLEなタイプです。カーネル中で解除されない限りSLEEP状態を続けるUNITERRUPTIBLEのような状態はデバイスをロックするなど特別な場合に使われるだけで、あまり多くはありません。
 
;調べてみよう:プロセスの状態を表しているSTATの欄をみるとR/S/D/Z/Tの後ろにさらに文字がついていますがこの意味は何でしょうか?
 
πの計算のように数値計算を延々と行うプログラムは別として、ディスクトップで利用しているソフトウェアの多くはユーザからのインタラクション(入力)待ちの状態で止まっているようなものです。
 
たとえばコンパイラがソースコードをコンパイルするプロセスでも実行中、待機中、イベント待ち状態を遷移します。なぜならばコンパイラは、ファイル入出力を発生させるので、その入出力が発生している最中はイベント待ち状態になっています。ファイル入出力に10msかかったとして、その間はCPUは遊んでいる状態になります。10msというは今日のCPUにとっては、長い長い暇な時間で、かなり大量の計算ができます。ですから前のプロセスがCPU専有時間が過ぎたので次のプロセスに順番を与える以外にも、次のプロセスがCPUを使う状態が多数発生します。
匿名利用者