详解零拷贝

1 背景

1) 服务器上的一个文件,如何通过接口下载到文件,这中间经历多少个客观存在的硬件设备

我以客观存在的组件为支撑,描述非零拷贝和零拷贝的数据流

2) 本篇文章会尽量避免繁琐难懂的话术和词汇,来阐述

2 分层图

  详解零拷贝

3 非零拷贝的数据流图

一条数据从磁盘到通过网络传输出去的数据流图

  详解零拷贝 

4 零拷贝的数据流图

      详解零拷贝

 

5 零拷贝的 "零"在哪里

   非零拷贝的数据流,一份数据需要进行如下几次拷贝

      1)  磁盘的数据拷贝 ==>Kernel buffer

      2)  Kurne buffer拷贝 ===> application buffer

      3) application buffer ==>  socket kernel buffer

      4)  socket kernel  === >网卡

      5)  网卡 ===>终端

   数据在拷贝时 会占用CPU资源

       零拷贝没有额外的数据流

         磁盘==>socket kernel ==>网卡  

 6  零拷贝的注意事项

    零靠贝实现需要借助内核来实现,举个例子

   Linux 2.4+ 内核通过 sendfile 系统调用,提供了零拷贝。  

上一篇:MariaDB 配置示例文件


下一篇:Sublime Text的使用代码块安装的模块