You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

写时复制(COW)如何优化fork()+exec()进程创建流程?

关于fork()+exec()与写时复制(COW)的优化逻辑

你的理解不对,核心误区在于对exec()操作的本质判断——它不是对原有内存页的写操作,而是直接替换整个进程的地址空间映射,完全不会触发COW的内存复制。具体拆解:

  • fork()用COW实现时,父子进程共享所有内存页,内核只是给子进程创建一套新的页表,把所有页表项标记为「只读共享」。这个过程完全不复制内存,开销极低。
  • 子进程调用exec()时,内核会直接卸载当前进程的所有内存映射(包括从父进程共享来的那些页),然后加载新二进制文件的代码段、数据段、堆、栈等全新的内存映射。整个过程中,子进程根本不会去修改原来共享的父进程内存页,自然不会触发COW的复制逻辑。

对比传统无COW的fork():原来的fork()会立刻复制父进程的全部内存页,哪怕之后马上exec()丢弃这些页,这部分复制开销完全是浪费。而COW下的fork()+exec(),fork阶段几乎没内存开销,exec阶段直接丢弃旧映射,全程没有不必要的内存复制,这就是优化的关键。

内容的提问来源于stack exchange,提问作者JenyaKh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 17:46:02