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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux写时拷贝技术(copy-on-write)相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

以上是关于Linux写时拷贝技术(copy-on-write)的主要内容,如果未能解决你的问题,请参考以下文章

死磕 Java 基础 — 谈谈那个写时拷贝技术(copy-on-write)

死磕 Java 基础 — 谈谈那个写时拷贝技术(copy-on-write)

死磕 Java Core — 谈谈那个写时拷贝技术(copy-on-write)

写时拷贝COW(copy-on-write)

string类的写时才拷贝(Copy-On-Write)

Linux写时复制(CopyOnWrite)|写时拷贝|rcu