gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:11:29 26 4
gpt4 key购买 nike

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

最佳答案

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

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

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

关于c++ - 用户空间缓冲区和内存映射文件之间的 DMA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22910768/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com