プロセスライフサイクルに関する質問

プロセスライフサイクルに関する質問

私は自分自身について尋ねることができましたwait(2)そして_exit(2)プロセスライフサイクル中のシステムコール。

システムコールに関する私の質問wait(2)は...親プロセスがそれをカーネルに送りますか?それともカーネルはそれを親プロセスに公開しますか?また、[ _exit(2)]子プロセスから親プロセスへのシステムコールの問題ですか?それとも、子プロセスは_exit(2)カーネルに[]を発行しますか?

答えを見つけるためにグーグルもしてYouTubeの映像も見ましたが…具体的な内容は見たことがありません。

ベストアンサー1

システムコールは常にプロセスによってカーネルに行われます。

したがって、具体的な質問に答えてください。

  1. 親プロセスはwaitカーネルを呼び出します。
  2. 子プロセスはexitカーネルを呼び出します。

以下は、何が起こるのかを簡略化したものです。

プロセスが呼び出されると、exitカーネルはreturn code内部プロセステーブルに引数()を格納し、プロセスに関連する他のすべてのリソース(割り当てられたメモリ、開かれたファイル記述子)を破壊し、プロセスをマークしますzombie

親プロセスがカーネルを呼び出すと、カーネルはその状態waitにある子プロセスがあることを確認します。zombieそのreturn code場合は、内部プロセステーブルから保存された内容を取得し、テーブルのスロットを解放してからシステムコールwaitから返し、return code子プロセスが状態にない場合、zombieカーネルは子プロセスが表示されるまで親プロセスをブロックします。電話exit

任意のプロセスによって呼び出されると、exit残りのすべての子プロセスはreparentedPID 1のプロセスを指すため、最初のプロセスを除くすべてのプロセスには常に親プロセスがあります。

PID 1は、実行中のすべて(ネットワークサービス、シリアル回線の受信機、GUIログインプログラム)を起動し、カーネルwaitプロセステーブルがゾンビでいっぱいにならないように、呼び出しの無限ループに入ります。

一つあるたくさん私は仕事を少し簡素化し、プロセス番号1以外でプロセスをリセットするようにカーネルに要求することができます。代理死神、呼び出しにはさまざまな形式がありますwait(wait、waitid、waitpid、wait3、wait4(マニュアルページ)、相互作用するシステムコール、割り当てられたリソースを破壊することはどういう意味ですか?

おすすめ記事