详解零拷贝

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资源

       零拷贝没有额外的数据流

         磁盘==> kernel buffer ==>网卡  

 6  零拷贝的注意事项

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值