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