XV6 Fork():为什么父级先运行?

时间:2019-11-01 01:01:31

标签: fork parent-child scheduling xv6

在调用fork()之后,为什么在大多数情况下父进程在子进程之前运行?在哪种情况下,子进程将在fork()之后在父进程之前运行?

请向我解释一下。

1 个答案:

答案 0 :(得分:0)

父进程的fork调用与其他任何系统调用一样,在完成后会返回到应用程序代码,该进程将停止运行,并且由于以下原因将被另一个进程(可能是子进程)切换: XV6(以及许多其他OS)使用的抢占式调度性质。 如果父进程将在开始fork系统调用的处理之后以及返回返回应用程序代码的处理开始之前的时间分片时段结束,则子进程将在父进程之前运行(请参见该行导致该进程在“陷阱”功能的结尾)。