ファイルのある領域から別の領域にデータを移動する必要があります。現在、私はバイトを読み、それを書き戻しています。しかし、可能であれば、DMA転送を高速化するのがいいかと思います。私はC#にいるが、安全ではない、p/invoke関数が受け入れられる。DMAを使用したファイル内データコピー
2
A
答えて
3
普通のファイルストリームを使用してあるファイルから別のファイルにコピーすることによって '事故によって' DMAを実行していません。 DMAは、いくつかの場所でバックグラウンドで使用されています(たとえば、FileStreamを使用してディスクからRAMに転送するなど)が、C#で直接ファイルからファイルへのストリームのコピーを処理できません。
DMA自体はかなり複雑で低レベル言語のネイティブです。私はthis documentを指しています。すべてのコード例はCとasmにありますので、C#には直接適用できません。
DMAは、マザーボード上の別のチップであるあなた(プログラマ)はI/Oボード間のデータ転送 の負荷を軽減することができます(通常はインテル8237チップ があります)。 DMAは実際には「ダイレクトメモリアクセス」の略です。 DMAの使用例は、バックグラウンドで サンプルを再生するSound Blasterの能力です。 CPUは、サウンドカードとDMAを設定します。 DMAに「go」と指示すると、RAMからのデータを単にシャッフルして というカードにします。これはオフCPUで行われるため、CPUはデータ転送中に の他の処理を実行できます。
DMAは、ポートによってアクセスされるチャネルシステムを使用します。通常、これを行うにはasmを使用します。たぶんあなたは有用な情報hereまたはhereを見つけることができます。
代わりに、OSに転送を処理させることもできます。単にFile.Copyを使用します。
関連する問題
- 1. STM32F103マイクロコントローラ(Cortex-M3)を使用したDMA開始アドレスの再プログラミング
- 2. STM32F302異なるサイズとチャンネルのDMAを使用したAdc
- 3. DMAを使用したバイトI/O、利点は何ですか?
- 4. squirrelmailデータコピー
- 5. ザイリンクスのZynqベースのプラットフォームでAXI-DMA IPを使用するPCM DMAエンジン
- 6. streamposを使用したファイル内のナビゲーション?
- 7. DMA循環モードを使用してSPIダミーバイトを書き込む
- 8. イーサネットドライバ - DMAを使用しないでください?
- 9. DMAを使用してPCIeと通信する
- 10. stm32f407xxをターミナルログとして使用するDMA USART Tx
- 11. DMA、割り込みを使用したプロセッサ/マイクロコントローラのプログラミングの書籍
- 12. hdfsからcsvファイルを使用してハイブでテーブルを作成すると、ハイブで別のデータコピー
- 13. RedshiftからElasticSearchへのデータコピー
- 14. ローカルデータベースからリモートデータベースへのデータコピー
- 15. stm32 SPI + DMA
- 16. DMA転送データレート
- 17. STM32F4 DMA UART
- 18. DMAを使用してVisual Boy Advance(VBA)に画像をロードする
- 19. デュアルレギュラー同時モードで2つのDMA ADCチャネルの使用STM32
- 20. DMAを使用してLinuxデバイスドライバからハードドライブに書き込む方法
- 21. STM32F0 DMA「入力オーバーフロー」
- 22. 同時DMAユーザメモリに
- 23. LinuxカーネルのコンテキストでDMAマッピングとDMAエンジンとは何ですか?
- 24. 単純な.htaccessファイルを使用した内部サーバーエラー(500)
- 25. Jythonを使用した標準PythonモジュールのImportError(JARファイル内)
- 26. アセンブリを使用した* .warファイル内のプロパティファイルの除外
- 27. シェルスクリプトを使用したファイル内の値の置換
- 28. ラクダを使用したフォルダ内のファイル数の制限
- 29. hadoop mapreduceを使用したファイル内の相互単語
- 30. hugepageメモリから取得したメモリの物理アドレスをDMAに使用できますか?
可能な場合、memcpyは自動的にDMA転送を行いますか?もしそうなら、おそらくメモリマップされたファイルを使用してmemcpy(またはmemmove)を呼び出すことができます。 – Fantius
または私は既にDMA転送をしていると思いますが、それはわかりません。この場合でも、私は1つではなく2つの転送を行う必要があります - データを読み込んでそれを書き込むことです。 1つの転送にする方法はありますか? – Fantius