プロセスの状態
参考
/mrsekut-book-477419607X/068
/mrsekut-book-4774154644/060 (第3章 プロセスの制御)
プロセス - Wikipedia
#WIP
OSの実装によって異なるが大まかには以下のような感じ
psコマンドで確認できる
大まかにはこんな感じ
created
fork()などを用いて生成された状態
watingにされるのを待つ
waiting
走行可能な待ち状態
いつでもrunningに移行できる
各プロセスは実行優先度を持っており、優先度が高いものから実行される
e.g. UNIX V6のproc構造体#62ed16b819827000003f0987
running
CPU上で実行中
割り当てられたタイムスライスを使い切るとwaitingに移行する
blocked
IOなどの処理中のブロック状態
処理中なのでrunningに移行できるわけではない
terminated
終了状態
終了ステータスを読まれるのを待っている状態
一時的にゾンビプロセスになっている状態とも言える
ざっくり3分割すると
created
running
実際はここがもう少し細分化される
running, waiting, blocked
terminated
親プロセス目線
fork()で子プロセスを複製
wait()を発行し、子プロセスの処理が完了するのを待つ
子プロセスが終了したら、その実行結果を取得し、子プロセスの後始末を行う
リソースの解放など
子プロセス目線
親から複製されて生まれる
exec()で、プログラムを読み込み、そのプログラムを実行するためのプロセスになる
終わったらexit()を発行し、ゾンビプロセスになる
sleep()
実行中のプロセスを休止中に切り返る
/mrsekut-book-4774154644/074
wakeup()
休止中のプロセスを実行可能状態へ変更する
/mrsekut-book-4774154644/091