1分钟读懂【零拷贝】
  CdN5z36buD8j 2023年12月22日 14 0

一、概念

指在计算机执行操作时,CPU不需要先将数据从一个内存区域复制到另一个内存区域,从而减少上下文切换以及 CPU 的拷贝。所有的数据都是通过 DMA 直接内存访问技术来进行传输的。

二、作用

是在数据从网络设备到用户程序空间传递的过程中,减少数据拷贝次数,减少系统调用,实现 CPU 的零参与,彻底消除 CPU 在这方面的负载。

三、技术

实现零拷贝用到的最主要技术是 DMA直接内存访问 和 mmap内存映射文件。

3.1 DMA

  • 定义: DMA 是一种计算机系统中的技术,它允许外设直接访问系统内存,而无需经过中央处理器(CPU)的干预。
  • 用途: 主要用于高速数据传输,例如从磁盘到内存,从网络适配器到内存等。它可以提高数据传输效率,减轻 CPU 的负担。
  • 关系: DMA 通常用于设备之间的数据传输,而不是直接访问文件系统中的数据。DMA 是一种用于直接传输数据的硬件机制。


1分钟读懂【零拷贝】_Linux

从图中可以看到,零拷贝技术就是把cpu在这其中拷贝的工作去掉了,不需要在内核态和用户态之间数据传输,直接由dma操作把磁盘数据读取到内核页缓冲区中,再由内核页缓冲区发送到网络中去,实现了cpu的零拷贝。

3.2 mmap

  • 定义: mmap 是一种将文件内容映射到内存的机制。它允许应用程序直接在内存中操作文件数据,而无需通过 read 和 write 等系统调用。
  • 用途: 主要用于文件 I/O 操作,允许应用程序像访问内存一样访问文件。修改内存映射的数据将自动反映到底层文件。
  • 关系: mmap 是一种文件 I/O 操作的方式,适用于需要频繁访问文件数据的场景,但它不是 DMA 的直接替代品。在一些情况下,DMA 可能与内存映射结合使用,例如在网络数据包的接收中,可以使用 DMA 将网络数据直接传输到内存,然后通过 MMAP 将内存映射到用户空间,以便应用程序访问数据。

1分钟读懂【零拷贝】_后端_02

从图中可以看到,读写文件都需要经过 页缓存,所以 mmap 映射的正是文件的 页缓存,而非磁盘中的文件本身。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月22日 0

暂无评论

推荐阅读
CdN5z36buD8j