>>853
>>854
レスどうもありがとうございます。大変勉強になります。
理論値よりもだいぶ遅かったので、DMA できていない事が原因なのかなと
思いこんでいたのですが、別の原因で遅くなっているのかもしれませんね。

>O_DIRECTがなくても、ディスクとOSキャッシュのメモリとの間の転送はDMAが使われる。

OSキャッシュという概念がよくわかっておらず恐縮ですが、
O_DIRECTがなくても、DMAは必ず行われ、CPU の2次キャッシュや3次キャッシュは
汚染されないという理解でよろしいでしょうか?

とりあえず、
1.ディスクキャッシュを使用せず
2.非同期 I/O を用いる
という方法が考えうる最速の方法という事でしょうか?
可能であれば、cygwin でwindows/linux のマルチプラットフォームに対応したいと
考えていましたが、各々の OS で固有の API を使うしかないという事のようですね。