fork()调用使子进程先于父进程被调度
由于内核使用写时复制机制,fork之后父子进程是共享页表描述符的,如果让父进程先执行,那么有很大几率父进程会修改共享页表指向的数据,那么内核此时必须给父进程分配并复制新的页表供父进程修改使用,那么如果子进程被创建之后什么都没干后退出了,那么这个写时复制就是多余的。
如果让子进程先执行,如果子进程什么都没做就退出了,那么就没有什么所谓的写时复制了,避免了不必要的页面复制。
另外如果子进程确实运行了新的程序(我们的shell程序基本上是如此),那谁先谁后就无所谓了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步