コンピュータシステムの章VIII例外制御フローの深い理解(2)

プロセスの3つの状態、次のいずれかに常にあります。

実行します。どちらのプロセスがCPU上で実行、または実行されるのを待って、最終的にカーネルスケジューラになります。
停止します。実装プロセスは、(中断)に懸濁し、スケジュールされないであろう。
終了しました。プロセスが停止することはありません。プロセスが原因三つの理由で終了します:1)信号を受信するために、この信号のデフォルトの動作はプロセスを終了することで、メインプログラムから2)のリターンは、3)出口が呼び出されます。
親プロセスはfork関数を呼び出すことによって実行する新しい子プロセスを作成します。
フォーク機能の特長:
二回返され、一度呼び出されます。フォーク機能は、かつて親プロセスと呼ばれますが、二回子供が新たに作成されたプロセスに返された後、親プロセスに戻るために一度戻りました-----。
プロセスが何らかの理由で終了すると、カーネルはシステムからすぐに明確ではありません。(刈り取ら)親プロセスが回復するまでこれとは対照的に、状態が終了したプロセスに維持されます。子プロセスの回復の親プロセスが終了した場合には、子プロセスのカーネルの終了ステータスが親プロセスに渡され、その後、プロセスは、プロセスが存在しない上、この時点から、終了している放棄します。終了まだゾンビプロセス(ゾンビ)と呼ばれるプロセスを回復していません。
プロセスは、その子を待つのwaitpid関数を呼び出すことによって終了または停止することができます。
waitpidの機能の下では、デフォルト(ときのオプション= 0)で終了します(設定待つ)子プロセスがそのコレクションを待ってまで、呼び出しプロセスを中断し、実行しています。プロセスがちょうど終了した呼び出し時にコレクションを待っている場合は、waitpidのはすぐに戻ります。どちらの場合も、waitpidの戻りはPIDにつながる戻ったのwaitpid子プロセスを終了しました。この場合、子プロセスが終了した回収された、カーネルはシステムから離れることの痕跡をすべて削除されます。
プロセスのオブジェクトに信号を送信すると、2つの別個のステップから成ります。
信号を送信します。カーネル・プロセス・コンテキスト・オブジェクトのステータスを更新することによって、先のプロセスに(送達)信号を送ります。ゼロによるカーネルによって検出された1)システムイベント、例えば分割として、またはサブプロセスは終了:送信信号は、次の2つの理由を有することができます。2)キル機能と呼ばれるプロセスは、明示的に先のプロセスにシグナルを送り、カーネルが必要です。プロセスは自分自身にシグナルを送ることができます。
信号を受信しました。オブジェクト・カーネルプロセスはいくつかの方法の送信信号に反応するように強制されるとき、それは信号を受信します。プロセスはこの信号を無視することができ、又は信号処理(シグナルハンドラ)と呼ばれるユーザ・レベル・プログラム機能を実行することにより捕捉された信号の終端です。
 

おすすめ

転載: www.cnblogs.com/zhishuiyushi/p/11794832.html