使用DMA的文件内数据复制

问题描述 投票:2回答:1

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

c# file dma
1个回答
3
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.