爱喝冬瓜汤的萝卜

导航

统计

零拷贝

在业务场景中,我们的数据会存放在多种空间中,也需要在多种空间中传输来实现系统的功能以及保证系统的安全性.
数据存放的空间有:内核缓冲区,用户空间,磁盘,网络缓冲区.
其中网络缓冲区,磁盘的数据是有设备驱动来实现的.其中设备和内核缓冲区的访问可以使用cpu来发送指令也可以适用DMA技术帮助实现数据的传输.

1.最开始的传输方式

1.磁盘 --cpu--> 内核缓冲区
2.内核缓冲区 --cpu --> 用户空间
3.用户空间 --cpu--> socket缓冲区
4.socket缓冲区 --cpu --> 网络缓冲区

2.引入DMA的方式

在第一种方式中,其中将内核态的数据外设进行交互的时候,为了节省cpu的时间开发了DMA管理设备,来负责数据的传输.
这样能有效减少数据的传输.

3.内存映射(mmp原语)

在第一步中,因为数据并不需要在用户态进行处理,这个时候可以让用户态和内核态共享空间.这样能够节省一步将数据从内核态拷贝到用户态这一步.

4. 零拷贝(send原语)



零拷贝技术需要网卡的支持.一种扩展的DMA技术.
可以节省方案三种的从内核缓冲区拷贝到socket缓冲区中.
这样数据的搬运的过程只使用了DMA的原语,cpu只负责给DMA发送原语就好.

posted on   爱喝冬瓜汤的萝卜  阅读(34)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
点击右上角即可分享
微信分享提示