2

我需要将一些数据从文件的一个区域移动到另一个区域。目前,我正在读取字节并将它们写回。但我想知道如果可能的话,进行 DMA 传输是否会更快。我在 C# 中,但不安全和 p/invoke 函数是可以接受的。

4

1 回答 1

4

据我所知,您不是通过使用通常的文件流从一个文件复制到另一个文件来“偶然”进行 DMA 的。DMA 在某些地方在后台使用(例如通过使用 FileStreams 从磁盘传输到 RAM),但它不能处理 C# 中的直接文件到文件流复制。

DMA 本身非常复杂,并且原生于低级语言。我指的是这个文件。所有代码示例都在 C 和 asm 中,因此它不直接适用于 C#。

DMA 是主板上的另一个芯片(通常是 Intel 8237 芯片),它允许您(程序员)卸载 I/O 板之间的数据传输。DMA 实际上代表“直接内存访问”。使用 DMA 的一个例子是 Sound Blaster 在后台播放样本的能力。CPU 设置声卡和 DMA。当 DMA 被告知“开始”时,它只是将数据从 RAM 铲到卡上。由于这是在 CPU 外完成的,因此 CPU 可以在传输数据时做其他事情。

另一种方法是让操作系统处理传输:只需使用 File.Copy。

于 2012-02-09T10:53:07.713 回答