0%

《操作系统》COW机制

COW机制介绍

COW机制就是Copy On Write机制

有点类似于懒加载,意思就是写的时候才复制

linux的fork系统调用就使用了COW机制

如果按传统的做法,fork会直接将父进程的数据拷贝到子进程中,拷贝完之后,父进程和子进程之间的数据段和堆栈是相互独立的。

很多情况下,创建子进程时复制过去的数据对子进程是没用的(因为子进程执行exec(),原有的数据会被清空),这个时候白白浪费复制数据的时间

而使用了COW机制,fork创建出的子进程,与父进程共享内存空间

也就是说,如果子进程不对内存空间进行写入操作的话,内存空间中的数据并不会复制给子进程,这样创建子进程的速度就很快了!(不用复制,直接引用父进程的物理空间)。

COW机制原理

fork()之后,kernel把父进程中所有的内存页的权限都设为read-only,然后子进程的地址空间指向父进程。

当父子进程都只读内存时,相安无事。

当其中某个进程写内存时,CPU硬件检测到内存页是read-only的,于是触发页异常中断(page-fault),陷入kernel的一个中断例程。

中断例程中,kernel就会把触发的异常的页复制一份,于是父子进程各自持有独立的一份。




微信关注我,及时接收最新技术文章