码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2017-09-09 22:27:09      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:示意图   for   区别   复制   image   物理   linu   copy   改变   

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

技术分享

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

技术分享

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

技术分享

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

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

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

标签:示意图   for   区别   复制   image   物理   linu   copy   改变   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!