免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4699 | 回复: 8

为何把fork的实现写得再好都没有vfork高效? [复制链接]

论坛徽章:
0
发表于 2006-03-21 08:46 |显示全部楼层
这是【FreeBSD操作系统设计与实现】的习题5.5,原文如下:

5.5 Explain why the vfork system call will always be more efficient than a clever implementation of the fork system call.

论坛徽章:
0
发表于 2006-03-22 15:30 |显示全部楼层
先来段引自【APUE】的掌故:
vfork函数始于2.9BSD。有些人认为这个函数是个瑕疵,但本书所涉及的所有平台都支持它。事实上,BSD的开发者在4.4BSD版本中把它去掉了,但所有衍生自4.4BSD的开源BSD分支又都重新在它们各自的版本中提供了vfork。


虽然在fork实现中采用copy-on-write会极大地提高效率,但只要还有拷贝,就没有完全不拷贝来得快,这就是vfork。如果说fork是“花开两朵,各表一枝”,那vfork就是“借尸还魂,魂走尸还”。但问题就在于这个“还”回来的东西可能已经物是人非了。

论坛徽章:
1
寅虎
日期:2013-09-29 23:15:15
发表于 2006-03-22 15:35 |显示全部楼层
呵~正在看APUE,
先记住.

论坛徽章:
0
发表于 2006-03-22 22:10 |显示全部楼层
vfork 是什么?APUE 又是什么?
vfork 共享代码段?
APUE 是 Advanced Program in Unix Env?
vfork 有 thread 高效吗?

论坛徽章:
0
发表于 2006-03-23 08:00 |显示全部楼层
原帖由 liangyi571 于 2006-3-22 22:10 发表
vfork 是什么?APUE 又是什么?
vfork 共享代码段?
APUE 是 Advanced Program in Unix Env?
vfork 有 thread 高效吗?


vfork共享整个地址空间。
但vfork一般用于注定马上要通过exec分道扬镳的场合,和thread的应用场合不一样吧?

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
发表于 2006-03-23 13:47 |显示全部楼层
http://www.netbsd.org/Documentation/kernel/vfork.html
NetBSD Documentation: Why implement traditional vfork()
我还没看,嘿嘿。

论坛徽章:
0
发表于 2006-03-29 16:14 |显示全部楼层
在FreeBSD下devel/Linuxthreads──先前从Linux那引入的内核线程,就是通过vfork()函数来实现的
现在使用KSE,如果你说的是这个线程的话,就是问诸葛亮和孔明哪个更聪明。

论坛徽章:
0
发表于 2006-03-29 19:11 |显示全部楼层
原帖由 DarkBlueSea 于 2006-3-29 16:14 发表
在FreeBSD下devel/Linuxthreads──先前从Linux那引入的内核线程,就是通过vfork()函数来实现的
现在使用KSE,如果你说的是这个线程的话,就是问诸葛亮和孔明哪个更聪明。

不是rfork麽?难道是我记错了。。。。

论坛徽章:
0
发表于 2006-03-29 20:58 |显示全部楼层
楼上的兄弟是对的
我记错了,那里调用的是rfork
刚才又看了一下kern_fork,其实rfork和vfork都是调用fork1实现的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP