定义

零拷贝 (Zero-copy) 是一种避免在内存不同区域之间,特别是内核态与用户态之间进行 CPU 冗余数据拷贝的计算机操作技术。

直观理解

传统 I/O 操作在读取和发送数据时,需要频繁地将数据在内核缓冲区和用户缓冲区之间来回搬运,这不仅耗费 CPU 资源,还会引发多次上下文切换。零拷贝的本质是让数据“抄近道”,直接在内核空间内完成传输(或由 DMA 控制器代劳),从而解放 CPU,大幅提升高并发文件传输和网络通信的性能。

关键点

  • 消除 CPU 拷贝:减少甚至完全避免依赖 CPU 将数据从一个存储区复制到另一个存储区(注:并非指系统底层完全没有数据拷贝)。
  • 减少上下文切换:通过合并或减少系统调用,降低用户进程与系统内核之间模式切换所带来的开销。
  • 常见实现机制:在 Linux 中,典型实现包括 mmap()(内存映射)和 sendfile()(直接在内核中传递文件描述符)。

参考资料