Linux fork之后,到底是子进程先运行还是父进程先运行【转】
转自: https://blog.csdn.net/dog250/article/details/105756168 大约10年前,我写过两篇关于Linux内核CFS调度器的文章: https://blog.csdn.net/dog250/article/details/5302865 https://blog.csdn.net/dog250/article/details/5302864 我觉得这两篇文章是垃圾,但我又不删,留着给自己喷吧! 不就是一个内核参数 kernel.sched_child_runs_first 吗?在今天看来,验证它是否起作用实在太简单了。 首先解释一下 为什么要子进程先运行 。 因为fork的行为造成了后续的COW(copy on write),一般而言子进程会调用exec而替换掉需要COW的地址空间,子进程先运行可以避免不必要的COW开销。 那么对于CFS调度器而言,kernel.sched_child_runs_first是否有作用呢?我们试一下便知道,依然使用那两篇垃圾文章中的例子: #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main(int argc,char *argv[]) { int v = atoi(argv