子プロセス

子プロセスとは、コンピュータのプロセス管理に関わる用語で、ほかのプロセスから呼び出されたプロセスのことを言う。チャイルドプロセスとも言い、呼出元のプロセスのことを親プロセスあるいはペアレントプロセスと呼ぶ。
マルチタスクのオペレーティングシステムに関してはプロセス管理の記事に詳しく述べられている。
 や でも子プロセスと呼ばれるものが実装されていた。本稿ではこれについても述べる。
MS-DOS の子プロセス.
 のアプリケーションソフトウェアの中には、それ自身をメモリの中に読み込んだまま、他のアプリケーションを起動する機能を有しているものがあった。（主に MS-DOSのシェルである COMMAND.COM）
この場合、ペアレントプロセスとなる呼出元のアプリケーションはメモリ上に存在しているが実行は完全に停止している。子プロセスとして起動したCOMMAND.COM は、起動時に読み込まれたシェルとしての COMMAND.COM とは別のメモリ空間に存在し、親プロセスへは codice_1 コマンドで復帰することが出来た。主な用途としては、ワードプロセッサや表計算ソフトなどではフロッピーディスクのフォーマットを行うため、またテキストエディタなどでは前述のディスクフォーマットのためのほかに、アセンブラやコンパイラなどの起動に使用された。
のアプリケーションや外部コマンドもシェルとしての COMMAND.COM の子プロセスとみなすことが出来る。
系システム.
子プロセス.
子プロセスは、他のプロセス（親プロセス）によって生成されたプロセスである。
子プロセスは親プロセスから多くの属性（例えばオープン中ファイル）を継承する。 では、子プロセスは（codice_2を使って）親のコピーとして生成される。子プロセスはその後（codice_3を使って）指定されたプログラムで自分自身をオーバーレイすることができる。
プロセスは多くの子プロセスを生成できるが、あるプロセスから見た親プロセスはひとつである。ただし、最初に生成されるプロセスには親がいない。 ではこの最初のプロセスが init であり、カーネルがブート直後に起動し、システムシャットダウン時まで決して終了しない。
親プロセス.
親プロセスは、1つ以上の子プロセスを生成したプロセスである。
 では、0番のプロセス（スワッパー）以外は他のプロセスが codice_2 システムコールで生成したものである。codice_2 を呼び出したプロセスが、それによって生成されたプロセスから見た親プロセスである。プロセスにはひとつの親プロセスがあるが、子プロセスは多数存在することもある。
カーネルは、プロセスをプロセス識別子 (PID)で識別する。0番のプロセスはシステムブート時に生成される特別なプロセスで、子プロセス（1番のプロセス）を生成した後はスワッパー・プロセスとなる（ や SVR4.2MP ではマルチスレッド化され、カーネル内の各種定期処理をこなす）。1番のプロセスは init であり、システム内の他のプロセスの先祖になる。
孤児プロセス.
孤児プロセスは、親プロセスが先に終了してしまったプロセスを意味する。
 系オペレーティングシステムでは、孤児プロセスは即座に init プロセスを里親とされる。この操作をリペアレンティング（再育成）と呼び、自動的に行われる。技術的には init プロセスが親となっても、本来の親プロセスが既に終了していることから「孤児プロセス」と呼ばれ続ける。
遠隔手続き呼出し (RPC) において、クライアントが要求をサーバに送った後でクラッシュしたとき、サーバ側に残ってしまったプロセスを孤児プロセスと呼ぶ。この孤児プロセスはサーバの資源を無駄に占め、場合によってはサーバ全体の不調の原因となる。この対処方法として以下のものがある。