概念
- 什么是零拷贝
- DMA拷贝 从硬盘读取到内核
- CPU拷贝 从内核到socket buffer
- 零拷贝就是没有CPU拷贝 从操作系统来看 没有一份数据是相同的
- 传统IO
- mmap 内存映射
- 将文件映射到内核缓冲区 用户空间可以共享内核空间的数据
- 3次拷贝 3次内核与用户态切换
- sendFile
- linux 1.2
- linux 2.4 DMA拷贝 -> 内核缓冲区-> 协议栈 无CPU拷贝
- 又很少一部分从内核缓冲区->socket buffer 例如length offset啥的
- 2次切换 2次拷贝