我需要将一些数据从文件的一个区域移动到另一个区域。目前,我正在读取字节并将其写回。但我想知道如果可能的话,进行DMA传输会更快。我在C#中,但不安全和p/invoke函数是可以接受的。使用DMA的文件内数据复制
2
A
回答
3
据我所知,您可以通过使用通常的文件流将文件从一个文件复制到另一个文件来执行DMA'意外',而不是,而不是。 DMA在某些地方的后台使用(例如使用FileStreams从磁盘传输到RAM),但它无法处理C#中的直接文件到文件流复制。
DMA本身非常复杂,并且是低级语言的原生语言。我指的是this document。所有的代码示例都是C和asm,所以它不直接适用于C#。
DMA是你的主板上的另一个芯片(通常是英特尔8237芯片 ),允许您(程序员)来卸载I/O板之间的数据传输 。 DMA实际上代表'直接内存访问'。 DMA使用的一个例子是Sound Blaster在后台播放 样本的能力。 CPU设置声卡和DMA。 当DMA被告知'去'时,它只是将数据从RAM中取出到卡片的 。由于这是在CPU外完成的,因此CPU可以在传输数据时执行其他操作 。
DMA使用由端口访问的通道系统。通常,您会使用asm来执行此操作。也许你可以找到一些有用的信息here或here。
另一种方法是让操作系统处理传输:只需使用File.Copy。
相关问题
- 1. DMA复制在拼接()
- 2. 将sqlite数据库从文件复制到:内存使用C#
- 3. 使用VBScript复制文件夹内容
- 4. 如何使用VBScript从数据库复制到文本文件?
- 5. 如何使用python复制文件中的特定数据?
- 6. 使用具有权限的robocopy复制配置文件数据
- 7. 复制二进制文件的内容
- 8. 使用SSIS复制数据
- 9. 复制数据库文件夹到数据库文件夹
- 10. 使用Python复制文件
- 11. 使用bash复制文件
- 12. 使用SSH复制文件
- 13. 使用FileUtils.copyFile复制文件
- 14. 使用Cordova复制文件
- 15. 使用maven复制文件
- 16. 复制db4o文件不会复制其中的数据
- 17. Android studio复制数据库文件到内部存储
- 18. 将文件夹内容复制到Access数据库中
- 19. 用Ansible复制文件夹内容
- 20. 使用MSI文件复制文件
- 21. 使用新文件名复制文件
- 22. 如何使用CMD复制命令复制多个文件夹的内容?
- 23. 使用COPY命令将数据从JSON文件复制到Redshift
- 24. 如何使用FTP或HTTP来复制数据库文件
- 25. 复制MYSQL数据库文件夹
- 26. 从csv文件复制数据
- 27. hybris - 复制数据文件夹
- 28. 复制Android数据库文件为空
- 29. C++复制文件。数据短缺
- 30. 在Go包中复制数据文件?
如果memcpy能够自动执行DMA传输吗?如果是这样,也许我可以使用内存映射文件并调用memcpy(或memmove)。 – Fantius 2009-06-10 13:33:16