***COW技术简介 ***
cow意思是写时复制,在对页表进程读操作时,不会产生异常,对页表进程写操作时,会触发page fault异常,通常这种机制的产生是通过对页表设置read-only.在linux fork()函数中,依照父进程复制子进程,进行资源复制时,依照cow技术原则,子进程对父进程的资源读操作时共享父进程资源,写操作时,则复制相应的要写的内存区域,这样最直观的好处是减少了内存消耗.有一个问题,一个父进程可以创建多个子进程,那么对于cow技术,也是相应的进程对写的操作的内存区域进行相应的复制操作(我的猜测,实际需查明博客).
学习博客园华山大师兄的博文:
写时复制技术的定义是:创建新进程不分配物理空间,只分配和父进程相同的虚拟内存空间.公用物理内存空间.不论是父进程还是子进程对物理内存空间进行改动时,会复制相应的内存区域.
在fork之后,exec之前,两个进程使用的是相同的物理内存区,虚拟内存都映射到相同的物理内存区.若没有exec会给子进程的堆栈段,数据段分配物理空间,代码段则使用父进程的物理内存空间.若是因为exec()函数,会给子进程的代码段分配物理内存.(exec函数的作用是加载新的程序到子进程,代替原来的程序,则相应的代码段,数据段,堆栈段也要重新分配物理内存.)