如何深入理解零拷贝技术( 二 )


总结下sendfile的具体过程如下:
 

  1. 通过 DMA 将磁盘上的数据拷贝到内核缓冲区里;
  2. 缓冲区描述符和数据长度传到 socket 缓冲区 , 这样网卡的 SG-DMA 控制器就可以直接将内核缓存中的数据拷贝到网卡的缓冲区里 , 此过程不需要将数据从操作系统内核缓冲区拷贝到 socket 缓冲区中 , 这样就减少了一次数据拷贝;
 
此种方式对比之前的 , 真正意义上去除了CPU拷贝 , CPU 可以去执行其他的业务计算任务 , 同时和 DMA 的 I/O 任务并行 , 极大地提升系统性能 。
但他的劣势也很明显 , 强依赖于硬件的支持




推荐阅读