fork()调用使子进程先于父进程被调度

由于内核使用写时复制机制,fork之后父子进程是共享页表描述符的,如果让父进程先执行,那么有很大几率父进程会修改共享页表指向的数据,那么内核此时必须给父进程分配并复制新的页表供父进程修改使用,那么如果子进程被创建之后什么都没干后退出了,那么这个写时复制就是多余的。

如果让子进程先执行,如果子进程什么都没做就退出了,那么就没有什么所谓的写时复制了,避免了不必要的页面复制。

另外如果子进程确实运行了新的程序(我们的shell程序基本上是如此),那谁先谁后就无所谓了。

posted @ 2013-08-04 13:45  WendellYih  阅读(1695)  评论(0编辑  收藏  举报