首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

各位前辈,当代码执行一个系统调用fork()后,为什么如果共享页设置了写时拷贝位,在父进程之前调度子进程将具有优越性?内核怎么能使子进

2012-03-19 
各位前辈,当代码执行一个系统调用fork()后,为什么如果共享页设置了写时拷贝位,在父进程之前调度子进程将具

各位前辈,当代码执行一个系统调用fork()后,为什么如果共享页设置了写时拷贝位,在父进程之前调度子进程将具有优越性?内核如何能使子进
各位前辈,当代码执行一个系统调用fork()后,为什么如果共享页设置了写时拷贝位,在父进程之前调度子进程将具有优越性?内核如何能使子进程先运行?

谢谢各位的帮助!!!!

[解决办法]
父进程调用fork后,进入系统调用 从系统调用返回前可能会接受调度。所以。父子进程谁先返回到用户空间是不确定的,不过,一般来说。父进程在可执行队列的前边,所以先运行的可能较大,如果想要让子进程先返回到用户空间,可以在进入系统调用的时候。设置标志位VFORK
这样,父进程在调用后会进入睡眠,直到子进程退出或者调用exeve()
[解决办法]
因为子进程通常在fork之后会执行execv,加载另外一个镜像,而抛弃原来和父进程共享的内存。而父进程如果先执行,其会修改共享内存的内容从而造成不必要的复制操作。

通过将子进程放在队列的前面做到。

热点排行