首页 > 系统服务 > 详细

Linux写时拷贝技术(copy-on-write)

时间:2017-09-09 22:01:08      阅读:338      评论:0      收藏:0      [点我收藏+]

1.传统的fork()函数
创建一个子进程,子进程和父进程共享正文段,复制数据段,堆,栈到子进程
示意图如下:

技术分享

2.Linux的fork()函数-写时复制(copy-on-write)
创建一个子进程,内核只为子进程创建虚拟空间,不分配物理内存,和父进程共享物理空间,
当父进程中有更改相应段的行为发生时,才为子进程分配物理空间。
示意图如下:

技术分享

3.vfork()函数
创建一个子进程,共享父进程的一切。
示意图如下:

技术分享

4.传统fork与copy-on-write区别

传统的fork函数直接把所有资源复制给新的进程,效率很低下。
写时拷贝在需要写入时,数据才会被复制,没有数据写入时,fork()的开销实际只是复制父进程的页表以及给子进程创建唯一的进程描述符。有数据要写入前,会将将要改变的数据页复制给子进程。

Linux写时拷贝技术(copy-on-write)

原文:http://www.cnblogs.com/shijingjing07/p/7499441.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!