Мне нужно переместить некоторые данные из одной области файла в другую. В настоящее время я читаю байты и записываю их обратно. Но мне интересно, будет ли выполнение DMA-передачи быстрее, если это возможно. Я нахожусь на C#, но допустимы небезопасные и функции p/invoke.Копирование данных в файле с использованием DMA
ответ
Вы, насколько я могу судить, не делают DMA «случайно», используя обычные файловые потоки для копирования из одного файла в другой. DMA используется в фоновом режиме в некоторых местах (например, для переноса с диска на RAM с помощью FileStreams), но он не может обрабатывать прямую копию потока файлов в файл на C#.
DMA сам по себе довольно сложный и родной для языков низкого уровня. Я имею в виду this document. Все примеры кода находятся в C и asm, поэтому он не применим непосредственно к C#.
ДМА еще один чип на материнской плате (как правило, это Intel 8237 чипа), что позволяет (программист), чтобы разгрузить переводы данных между платами ввода/вывода. DMA фактически означает «Прямой доступ к памяти». Примером использования DMA может быть способность Sound Blaster воспроизводить образцы в фоновом режиме. ЦП устанавливает звуковую карту и DMA. Когда DMA сообщается «идти», он просто перекопает данные из ОЗУ в . Так как это делается вне CPU, CPU может делать другие вещи во время передачи данных.
DMA использует систему каналов, доступ к которой осуществляется портами. Как правило, вы должны использовать asm для этого. Возможно, вы можете найти полезную информацию here или here.
Альтернативой может быть разрешение ОС на передачу: просто используйте File.Copy.
- 1. Скорость передачи данных DMA
- 2. Копирование данных с использованием SSIS
- 3. Реалистичная скорость передачи данных по шине PCI с использованием DMA?
- 4. Извлечение и копирование данных в файле excel
- 5. Для транзакции DMA требуется копирование в буфер каждый раз?
- 6. копирование файлов с использованием cp в файле dockfile сбой
- 7. DMA в FILE с использованием структуры в программировании на С ++
- 8. C: Копирование данных указателя с использованием = (равно)
- 9. Копирование базы данных с использованием Mysql
- 10. Копирование файлов с использованием учетных данных Windows
- 11. Резервное копирование базы данных с использованием JPA
- 12. DMA copy in splice()
- 13. Использование статических структур данных для DMA
- 14. Копирование данных с сайта sharepoint в Excel с использованием VBA
- 15. Связанный список копирование данных-копирование
- 16. Копирование файлов данных по сети с использованием Java очень медленно
- 17. копирование связанных данных с использованием CTE в течение одного SP?
- 18. Копирование данных между двумя таблицами в PostgreSQL с использованием dblink.sql
- 19. резервное копирование базы данных mysql в php с использованием mysqldump
- 20. Копирование данных из одной таблицы в другую с использованием параметров
- 21. Копирование всех ключей в базе данных Redis с использованием MIGRATE
- 22. Копирование в/из данных Dbase с использованием Access
- 23. Копирование/Вставка данных с использованием ссылок на ячейки (VBA)
- 24. Как получить доступ к форме данных передачи данных в памяти на ARM9 s3c2440 с DMA или без DMA
- 25. Операция DMA memcpy в Linux
- 26. Копирование данных с/на рабочий лист Excel с использованием макроса
- 27. Копирование данных между таблицами с использованием таблицы create с выбором
- 28. Копирование строк в столбцы с использованием VBA
- 29. обеспечить память с возможностью DMA
- 30. Книги для программирования процессоров/микроконцеллеров с использованием DMA, прерываний
Может ли memcpy автоматически передавать DMA, если это возможно? Если да, возможно, я могу использовать файлы с отображением памяти и вызывать memcpy (или memmove). – Fantius
Или я, вероятно, уже делаю передачи DMA, и я просто этого не знаю? Даже если это так, я должен делать две передачи вместо одной - читать данные, а затем писать. Есть ли способ сделать это одним переводом? – Fantius