linux cow(Copy-on-Write)fork为什么很快?
Copy-on-Write是Linux内存管理非常经典的机制。
示例讲解
假设:
1 | Parent Process |
如果父进程有:
1 | Page A |
Linux并不会立即复制所有页面而是:
1 | Parent ──┐ |
两个进程暂时共享同一个物理页,页表设置成只读:
1 | Parent → Page A ──┐ |
如果Child尝试CPU触发Page Fault。
1 | PageA[0] = 100; |
Linux发现:
1 | 这是Copy-on-Write |
于是:
1 | 原Page A |
最终:
1 | Parent → Page A |
这就是:
COW(Copy-on-Write) 它广泛用于
fork()以及其他内存共享场景。