如果您想要一个类似于官方答案的图表,请尝试停止思考事情是如何并发运行的,而是专注于进程的世代(父母、孩子、孙辈等)。
一开始,只有一个进程p0,要进行三个分叉。当做这三个叉子时,它创建p1了两个叉子走,p2一个叉子走p3,没有叉子。然后p0退出(仅p1,p2并p3保持)。
我们可以扔掉,p3因为它没有叉子,只剩下p1和p2)。
然后进程p1执行它的第二个分叉生产p4,只剩下一个分叉,然后执行第三个分叉制造p5,没有剩下一个分叉。p1现在完成并退出(p2,p4并p5保持)。
类似于p3,p5可以被扔掉,因为它没有叉子了。这留下p2和p4。
同样,p2只剩下一个叉子,所以它创建p6时没有叉子。然后由于没有叉子p2而p6退出,离开p4。
进程p4只剩下一个叉子,因此它创建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)请记住,这里定义的开始时间是进程开始存在的时间——进程执行实际有用工作的顺序也取决于调度的变幻莫测。