公式の回答に似たグラフが必要な場合は、物事がどのように同時に実行されるかを考えるのをやめ、代わりにプロセスの世代 (親、子、孫など) に集中してください。
最初は 1 つのプロセスがありp0、3 つのフォークがあります。これらの 3 つのフォークを実行すると、残りのフォークp1が 2 つ、残りのフォークp2が 1 つになり、p3残りのフォークがなくなります。次にp0終了します ( のみp1、p2およびp3残ります)。
フォークが残っていないので、と)p3だけを残して捨てることができます。p1p2
次に、プロセスは 1 つのフォークを残しp1て 2 番目のフォーク生成p4を実行し、次にフォークを残さずに 3 番目のフォーク作成p5を実行します。p1これで完了し、終了します ( p2、p4およびp5残ります)。
と同様にp3、p5フォークが残っていないため、投げることができます。これはp2と を残しp4ます。
同様に、p2フォークが 1 つ残っていたので、フォークが残っていない状態で作成p6されます。次に、フォークが残っていないため、p2との両方がp6終了し、 を残しp4ます。
プロセスp4にはフォークが 1 つ残っていたため、フォークなしで作成p7され、両方とも終了します。
プロセスがいつ開始されるかではなく、親子関係に基づいた深さでチャートを描くことによって (ただし、開始時間(a)はプロセスが特定の深さで水平方向に存在する場所を制御します。たとえば、 および を参照p1しp2てくださいp3)、図は与えられたものと一致するはずです。
したがって、次のように考えてください。
Sequence within generation -------->
G
e ______p00______
n / | \
e p01 p02 p03
r / \ |
a p04 p05 p06
t |
i p07
o
n
|
V
(a)ここで定義されている開始時刻は、プロセスが存在するときであることに注意してください。プロセスが実際の有用な作業を実行する順序は、スケジューリングの気まぐれにも依存します。