标签:kernel socket buffer 网卡 详解 数据流 拷贝
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 系统调用,提供了零拷贝。
标签:kernel,socket,buffer,网卡,详解,数据流,拷贝 来源: https://blog.csdn.net/an13654067079/article/details/122256767
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。