用户空间缓冲区和内存映射文件之间的 DMA
DMA between User Space Buffer and Memory Mapped File
memcpy 通过用户空间 DMA:是否有可能通过 Linux 中的用户空间 DMA 实现 memcpy? 我知道有一些方法可以通过 DMA 将内核缓冲区复制到用户空间缓冲区,但想通过用户空间中的 DMA 将其扩展到 memcpy ? 有什么想法吗?
DMA 在物理内存和内存映射设备上运行,而大多数用户空间应用程序在虚拟内存上运行。这带来了两个问题:
- 将虚拟内存映射到物理内存:您必须确保它被刷新、分页、锁定缓存,以便它不能再次分页,并且它不太可能是连续的 - 它将以小块的形式分散在物理内存中 物理内存
- 访问的安全性:这使用户空间应用程序可以访问整个物理内存,非常适合嗅探密码和加密密钥
在现代处理器上,memcpy() 在软件和硬件方面都可能非常高效,直到您一次复制 10 兆字节,之后您需要仔细考虑缓存和虚拟内存。简而言之,我不会打扰。
相关文章:
- 如何在cpp文件之间切换窗口?在Qt中
- 共享库 (.so) 没有扩展名的 Linux 可执行文件之间的区别?
- 在.cpp文件之间传递结构声明,而不使用全局头文件
- 内联函数的函数本地静态对象是否在共享对象文件之间共享?
- 在.cpp文件之间传递全局字符串变量?
- 在两个.cpp文件之间定义全局类/结构指针
- CSV文件之间的差异,使用getline()产生不同的结果
- 包括两个文件 C++ 之间的冲突
- 为什么 .cpp 文件和 .h 文件之间有区别?
- 在头文件和 .cc 文件之间建立关系
- CPP项目中.fdf和.h文件之间的差异
- 在 c++ 中将结构的每个成员写入文件和将结构对象直接写入文件之间有什么区别吗?
- SOL2/C++ - Lua初学者,是否可以在Lua文件之间传递Lua表
- C++ 静态成员变量 - 文件之间的访问
- pimpl和定义类别的.cpp文件之间的区别
- 我的编译行和我的生成文件之间的区别可能导致错误
- 预编译的头文件和预编译的二进制文件之间的区别是什么
- C 在与.o链接和.A文件之间有所不同:不同的行为,原因
- CBP文件和CPP文件之间有什么区别
- 在自动生成的文件之间生成依赖关系