全部博文(385)
分类: C/C++
2006-11-10 17:25:46
chinaunix网友2008-02-13 21:52:21
我觉得搞技术的人应该多问问技术背后的历史。 为什么会有vfork,因为以前的fork很傻,当它创建一个子进程时,将会创建一个新的地址空间,并且拷贝父进程的资源,而往往在子进程中会执行exec调用,这样,前面的拷贝工作就是白费力气了,这种情况下,聪明的人就想出了vfork,它产生的子进程刚开始暂时与父进程共享地址空间(其实就是线程的概念了),因为这时候子进程在父进程的地址空间中运行,所以子进程不能进行写操作,并且在儿子“ 霸占”着老子的房子时候,要委屈老子一下了,让他在外面歇着(阻塞),一旦儿子执行了exec或者exit后,相当于儿子买了自己的房子了,这时候就相当于分家了。 其实,现在的fork已经很聪明了,诸如write on copy以及子进程先运行,vfork原来的优势已经没有了,所以希望以后vfork会消失,走向统一!
chinaunix网友2008-02-13 21:52:21
我觉得搞技术的人应该多问问技术背后的历史。 为什么会有vfork,因为以前的fork很傻,当它创建一个子进程时,将会创建一个新的地址空间,并且拷贝父进程的资源,而往往在子进程中会执行exec调用,这样,前面的拷贝工作就是白费力气了,这种情况下,聪明的人就想出了vfork,它产生的子进程刚开始暂时与父进程共享地址空间(其实就是线程的概念了),因为这时候子进程在父进程的地址空间中运行,所以子进程不能进行写操作,并且在儿子“ 霸占”着老子的房子时候,要委屈老子一下了,让他在外面歇着(阻塞),一旦儿子执行了exec或者exit后,相当于儿子买了自己的房子了,这时候就相当于分家了。 其实,现在的fork已经很聪明了,诸如write on copy以及子进程先运行,vfork原来的优势已经没有了,所以希望以后vfork会消失,走向统一!