1. 零拷贝背景
- 网络传输持久性日志块
- Java Nio channel.transforTo()方法
- Linux sendfile系统调用
2. 文件传输到网路的公共数据路径
- 操作系统将数据从磁盘读入到内核空间的页缓存
- 应用程序将数据从内核空间读入到用户空间缓存中
- 应用程序将数据写回到内核空间到socket缓存中
- 操作系统将数据从socket缓冲区复制都网卡缓冲区,以便将数据经网络发出
3. 零拷贝过程
- 操作系统将数据从磁盘去入到内核空间的页缓存
- 将数据的位置和长度的信息的描述符增加至内核空间(socket缓冲区)
- 操作系统将数据从内核拷贝到网卡缓冲区,以便将数据经网络发出
零拷贝是:内核空间和用户空间的交互为零