当前位置: 技术问答>linux和unix
各位前辈,当代码执行一个系统调用fork()后,为什么如果共享页设置了写时拷贝位,在父进程之前调度子进程将具有优越性?内核如何能使子进
来源: 互联网 发布时间:2016-01-20
本文导语: 各位前辈,当代码执行一个系统调用fork()后,为什么如果共享页设置了写时拷贝位,在父进程之前调度子进程将具有优越性?内核如何能使子进程先运行? 谢谢各位的帮助!!!! | 父进程...
各位前辈,当代码执行一个系统调用fork()后,为什么如果共享页设置了写时拷贝位,在父进程之前调度子进程将具有优越性?内核如何能使子进程先运行?
谢谢各位的帮助!!!!
谢谢各位的帮助!!!!
|
父进程调用fork后,进入系统调用 从系统调用返回前可能会接受调度。所以。父子进程谁先返回到用户空间是不确定的,不过,一般来说。父进程在可执行队列的前边,所以先运行的可能较大,如果想要让子进程先返回到用户空间,可以在进入系统调用的时候。设置标志位VFORK
这样,父进程在调用后会进入睡眠,直到子进程退出或者调用exeve()
这样,父进程在调用后会进入睡眠,直到子进程退出或者调用exeve()
|
因为子进程通常在fork之后会执行execv,加载另外一个镜像,而抛弃原来和父进程共享的内存。而父进程如果先执行,其会修改共享内存的内容从而造成不必要的复制操作。
通过将子进程放在队列的前面做到。
通过将子进程放在队列的前面做到。