首页 > 其他分享 >零拷贝

零拷贝

时间:2022-09-25 20:11:53浏览次数:46  
标签:socket buffer CPU 内核 拷贝 cpu

零拷贝 不是值得不拷贝,而是0次cpu 拷贝。

 

传统拷贝一个文件并且通过网络IO发送一个文件的发送端文件拷贝过程需要经过

   DMA拷贝->cpu拷贝->cpu拷贝-DMA拷贝  第一次 DAM拷贝是磁盘到内核buffer,第二次是内核buffer到用户buffer,第三次是用户buffer到socket buffer ,第4次是 socketbuffer 到 协议引擎

  MMAP 可以减少 内核buffer 到 用户buffer 的 CPU拷贝,直接是内核buffer->socket buffer

  sendFile(linux2.4) 可以减少 内核buffer->socket buffer 的过程,只做一些简单信息的CPU 拷贝,实现了0次 CPU 拷贝。

 

NIO 的  transferTo,transferFrom 都是调用的操作系统零拷贝的相关函数(sendFile),在linux 里面没有限制,在window上面有8M每次的限制超过8次需要分段拷贝

标签:socket,buffer,CPU,内核,拷贝,cpu
From: https://www.cnblogs.com/cxygg/p/16728671.html

相关文章