Linux零拷贝技术,看完这篇文章就懂了( 三 )


Fbuf 的思想是每个进程都维护着一个缓冲区池 , 这个缓冲区池能被同时映射到程序地址空间和内核地址空间 , 内核和用户共享这个缓冲区池 , 这样就避免了拷贝 。

Linux零拷贝技术,看完这篇文章就懂了

文章插图
缺陷:
1)管理共享缓冲区池需要应用程序、网络软件、以及设备驱动程序之间的紧密合作
2)改写 API  , 尚处于试验阶段 。
 
高性能网络 I/O 框架——netmapNetmap 基于共享内存的思想 , 是一个高性能收发原始数据包的框架 , 由Luigi Rizzo 等人开发完成 , 其包含了内核模块以及用户态库函数 。其目标是 , 不修改现有操作系统软件以及不需要特殊硬件支持 , 实现用户态和网卡之间数据包的高性能传递 。
Linux零拷贝技术,看完这篇文章就懂了

文章插图
在 Netmap 框架下 , 内核拥有数据包池 , 发送环接收环上的数据包不需要动态申请 , 有数据到达网卡时 , 当有数据到达后 , 直接从数据包池中取出一个数据包 , 然后将数据放入此数据包中 , 再将数据包的描述符放入接收环中 。内核中的数据包池 , 通过 mmap 技术映射到用户空间 。用户态程序最终通过 netmap_if 获取接收发送环 netmap_ring , 进行数据包的获取发送 。
 
总结1、零拷贝本质上体现了一种优化的思想
2、直接 I/O , mmap , sendfile , DMA sendfile , splice , 缓冲区共享 , 写时复制……
作者:卡巴拉的树来源:https://www.cnblogs.com/bakari/p/11275735.html

【Linux零拷贝技术,看完这篇文章就懂了】


推荐阅读