親プロセス
読み:おやプロセス
外語:parent process
あるプロセスを起動したプロセス。一方、起動されたプロセスを子プロセスという。
概要
UNIXのプロセスは、起動したプロセス/起動されたプロセスという親子関係があり、OSのカーネルが直接起動したものを除く全てのプロセスには親プロセスが存在する。
あるプロセスで、その親プロセスのプロセスIDを知りたい場合は、getppid(2)システムコールを使う。
特徴
UNIX
古典的なUNIXでは、カーネルは起動するとinitプロセスを起動し、initプロセスが様々な初期化を行なう。従って古典的なUNIXでは、すべてのプロセスの祖先はinitである。
従って、カーネルから直接起動されるinitには親プロセスが無く、親プロセスのPID(PPID)は0である。なお、他のカーネルの場合は、仕様が異なることもある。
Linux
Linuxカーネルの場合、起動処理で、2つのカーネルスレッド(kernel_initとkthreadd)が起動される。
kernel_initはinitプロセスを実行する機能を持ち、古典的なUNIXと同様にプロセスIDは1である。
kthreaddはカーネルスレッド生成を行なうカーネルスレッドであり、プロセスIDは2となる。
いずれもカーネルが直接起動するため、この二つのみ、親プロセスが存在しない。
Linuxカーネルからは、カーネルスレッドもプロセスのように見え、カーネルスレッドもユーザー空間のプロセスと同様にスケジューリングされるため、ps(1)コマンドで表示される。ここで表示されるカーネルスレッドは、親プロセスがkthreaddとなる。
再検索