Linuxの内部プロセス構成(家族関係関連)

Linuxの内部プロセス構成(家族関係関連)

私が理解したところ、プロセス記述子は二重接続リストデータ構造に格納されます。ただし、fork同じプロセスに対して複数のサブプロセスを作成するために使用できます。複数のプロセスが親プロセスを指すので、ツリー構造があると考えることになります。どちらが正しいですか?プロセス記述子はプロセスとは異なりますか?

ベストアンサー1

fork()プロセス記述子をコピーして新しいプロセスを作成します。したがって、両方のプロセスは(少なくとも最初は)いくつかのデータを共有しますが、一度プロセスが開始されると変化記録中にコピーメカニズムにより、変更が実際に変更されたプロセスに限定されます。これはUNIXでプロセスを作成するための標準的なメカニズムです。

もちろん、これはプロセス間でかなり自然な親子関係を生成しますが、カーネルの内部表現とは何の関係もありません。プロセス記述子は、リンクリスト、ツリー、ハッシュテーブル、または他の(やや)適切な構造で実装することができる。実際に必要なのは、親プロセス(および子プロセスも可能)を指すカーネルプロセス記述子に配置することです。これを構造として使用するかどうかの重要な部分は設計決定です。そのような決定を下す際に考慮すべき多くの事項の1つは、例えば、親プロセスが終了したときに何が起こるかである。 UNIXでは、プロセスはinit孤児(およびすべての子プロセス)になります。

おすすめ記事