一文读懂零拷贝技术|splice使用

💡 原文中文,约2400字,阅读约需6分钟。
📝

内容提要

本文介绍了使用splice()系统调用实现零拷贝技术,避免将文件内容拷贝到用户态缓存。通过创建管道作为中转,可以直接将文件页缓存的数据复制到Socket缓冲区,减少一次拷贝数据的操作。使用splice()方式传输文件性能较高,但处理逻辑较复杂,实际测试性能差异不大。

🎯

关键要点

  • 服务端发送文件时通常使用read()/write()函数,涉及多次数据拷贝。
  • 使用splice()系统调用可以实现零拷贝技术,直接将文件页缓存数据复制到Socket缓冲区。
  • 零拷贝技术避免了将数据从内核态拷贝到用户态的过程。
  • 使用splice()发送文件时需要创建管道作为中转,减少了数据拷贝的步骤。
  • 虽然splice()方式在原理上性能更高,但实际测试中两者性能差异不大,因splice()处理逻辑更复杂。
➡️

继续阅读