用户空间缓冲区和内存映射文件之间的 DMA

DMA between User Space Buffer and Memory Mapped File

本文关键字:文件 之间 DMA 映射 内存 空间 缓冲区 用户      更新时间:2023-10-16

memcpy 通过用户空间 DMA:是否有可能通过 Linux 中的用户空间 DMA 实现 memcpy? 我知道有一些方法可以通过 DMA 将内核缓冲区复制到用户空间缓冲区,但想通过用户空间中的 DMA 将其扩展到 memcpy ? 有什么想法吗?

DMA 在物理内存和内存映射设备上运行,而大多数用户空间应用程序在虚拟内存上运行。这带来了两个问题:

  • 将虚拟内存映射到物理内存:您必须确保它被刷新、分页、锁定缓存,以便它不能再次分页,并且它不太可能是连续的 - 它将以小块的形式分散在物理内存中
  • 物理内存
  • 访问的安全性:这使用户空间应用程序可以访问整个物理内存,非常适合嗅探密码和加密密钥

在现代处理器上,memcpy() 在软件和硬件方面都可能非常高效,直到您一次复制 10 兆字节,之后您需要仔细考虑缓存和虚拟内存。简而言之,我不会打扰。