generated at
プロセスの状態




参考


OSの実装によって異なるが大まかには以下のような感じ
psコマンドで確認できる


大まかにはこんな感じ
created
fork()などを用いて生成された状態
wating にされるのを待つ
waiting
走行可能な待ち状態
いつでも running に移行できる
各プロセスは実行優先度を持っており、優先度が高いものから実行される
running
CPU上で実行中
割り当てられたタイムスライスを使い切ると waiting に移行する
blocked
IOなどの処理中のブロック状態
処理中なので running に移行できるわけではない
terminated
終了状態
終了ステータスを読まれるのを待っている状態
一時的にゾンビプロセスになっている状態とも言える




ざっくり3分割すると
created
running
実際はここがもう少し細分化される
running, waiting, blocked
terminated



親プロセス目線
fork()で子プロセスを複製
wait()を発行し、子プロセスの処理が完了するのを待つ
子プロセスが終了したら、その実行結果を取得し、子プロセスの後始末を行う
リソースの解放など



子プロセス目線
親から複製されて生まれる
exec()で、プログラムを読み込み、そのプログラムを実行するためのプロセスになる
終わったらexit()を発行し、ゾンビプロセスになる


実行中のプロセスを休止中に切り返る
休止中のプロセスを実行可能状態へ変更する