I/O で悩む
ディスクアクセスの効率化についていろいろ調べたりしているのですが、複雑すぎてよく分からないというのが正直な感想です。
Windows の Cached I/O と Non-Cached I/O
http://d.hatena.ne.jp/NyaRuRu/20080228/p1
http://d.hatena.ne.jp/NyaRuRu/20080229/p1
http://d.hatena.ne.jp/NyaRuRu/20080306/p1
http://d.hatena.ne.jp/NyaRuRu/20080310/p1
解決策
下に行くほど根本的だが非現実的。
- 今使っているマシンの搭載メモリ量が32bitの壁に達していないならば、搭載メモリを増やす。
- 64bit化して搭載メモリを増やす。
- 今使っているハードディスクの容量に匹敵する容量ののRAMディスクを用意する。
いや、全部非現実的かな……
単にメモリは多ければ多いほど良いですよ、ってだけですね。
構想
64bit環境で数百GBのイメージファイルを丸ごとメモリにマップ。
→そのメモリ上にヒープを構築すれば、比較的単純なコードでファイルシステムを作れる。
→デバイスに直接アクセスするコードを書くのは怖いけれど、これなら野心的なファイルシステムをどんどん自作可能。
既存のインターフェースから使うにはFUSE http://fuse.sourceforge.net/ やDokan http://dokan-dev.net/ でユーザーモードファイルシステムを作りイメージファイルをマウントできるようにする。
ドライバ開発はハードウェアに近いので怖い。
ちなみに完成しても無茶苦茶俺専用仕様になるでしょうから、公開も紹介もしないでしょう。