流程
1、从磁盘中读取文件内容拷贝到内核缓冲区(DMA搬运)
2、将内核缓冲区的数据,拷贝到application应用程序的buffer(CPU完成)
3、将application应用程序buffer中的数据copy到socket网络发送缓冲区(属于操作系统内核的缓冲区)(cpu完成)
4、将socket buffer的数据,copy到网卡,由网卡进行网络传输(DMA搬运)
没有任何技术优化的4次拷贝
物理<->内存
CPU负责将数据从磁盘搬运到内核空间的Page Cache中
CPU负责将数据控内核空间的Socket缓冲区搬运到网卡中
内存内部拷贝
CPU负责将数据从内核空间的PageCache搬运到用户空间的缓冲区
CPU负责将数据从用户空间的缓冲区搬运到内核空间的Socket缓冲区
缺陷
存在冗余的上下文切换和数据拷贝,多了很多不必要的开销,会严重影响系统性能