零拷贝
高速缓存PageCache
- 在内存中有一个分区用来缓存热点数据
- 有预读功能
- 读写速度比磁盘快
- 应用与内核态缓存区,如下文内核态缓存区
DMA技术
- 在进行I/O设备(如:磁盘)和内存进行数据传输时,由DMA负责数据搬运,而不需要CPU参与
传统文件传输
- 系统调用:read(file, tmp_buf, len)、write(socket, tmp_buf, len)
- 4次上下文切换:read两次+write两次
- 4次数据拷贝:2次DMA拷贝 + 2次CPU拷贝
零拷贝技术
- 零拷贝:数据传输过程中,仅由DMA参与数据拷贝,CPU不参与
- 系统调用:sendfile(int out_fd, int in_fd, off_t *offset, size_t count)
- 2次上下文切换:sendfile两次
- 2次数据拷贝:2次DMA拷贝
大文件传输
参考
- 原来 8 张图,就可以搞懂「零拷贝」了:https://www.cnblogs.com/xiaolincoding/p/13719610.html
This post is licensed under CC BY 4.0 by the author.