38. wait の処理順序2: ゾンビ状態の発生とシグナル送出
1. ゾンビ子プロセスがなければ、休眠状態となる。
2. 子プロセスがexit() を実行してゾンビ状態となり、子プロセス終了シグナルを親に投げる。
wait()
S
R
S
子プロセス終了シグナル
Z
exit()によりゾンビ状態へ
39. wait の処理順序3: 親プロセスの目覚めと子プロセス解放
1. ゾンビ子プロセスがなければ、休眠状態となる。
2. 子プロセスがexit() を実行してゾンビ状態となり、子プロセス終了シグナルを親に投げる。
3. wait()していた親プロセスは目覚め、ゾンビ状態の子プロセスのプロセス表項目を解放する。
●
●
子プロセスのCPU使用量を親プロセスに加える
子プロセスのプロセス表の項目を解放する
wait()
R
R
S
Z
40. wait の処理順序4: wait()が応答を返す
1. ゾンビ子プロセスがなければ、休眠状態となる。
2. 子プロセスがexit() を実行してゾンビ状態となり、子プロセス終了シグナルを親に投げる。
3. wait()していた親プロセスは目覚め、ゾンビ状態の子プロセスのプロセス表項目を解放する。
4. 子プロセスIDと、子プロセスの終了状態コードをwait() 呼び出し元に返す。
pid = wait(stat_addr);
999
0
wait()
R
R
S
Z
pid: 999, exit status: 0