TOC PREV NEXT INDEX

Put your logo here!


9.3 I/O階層


I/O階層の実装は、NetCDFファイルのポータブルデータを読み書きするのためのC standard I/O(stdio)ライブラリの実装とよく似ています。よって、標準的なI/Oライブラリを理解すれば、同時にデータをアクセスする複数の処理や、I/Oバッファの使われ方、NetCDFファイルの開け閉めのコストに関する様々な疑問が解決されます。特に、NetCDFファイルに対して一つの書き込み処理が行なわれている間に、別の複数の読み取り処理を行うことも可能です。データの読み書きには、stdio fread()fwrite()への呼び出しより下位のものは使用していません。nc_sync呼び出しはすべてC standard I/Oライブラリのfflush呼び出しと類似しており、他の処理が読み取れるように未記入のバッファデータを書き込んでいきます。nc_syncはまた、ヘッダーの変更(例えば、属性値への変更)を最新のものにします。NC_SHARE_IONBFフラグをsetvbufステータスにした、バッファされていないstdio streamを設定することと同義です。

stdioライブラリの場合と同様に、ファイルの異なる部分への"探索"が生じると、flushが実行されます。従って、書き込み操作の順番はI/O性能に著しい影響を与えます。各記録中にデータが書き込まれたのと同じ順番でデータを読み取ることによってバッファflushを最小限に留めることができます。

NetCDFデータアクセスは、同一のファイルに同時に複数の書き込み処理が行えるようにはなっていません。

I/O階層を別のプラットフォーム固有のI/O階層に置き換えることにより、NetCDFの実装をあるプラットフォームに合わせて調整できます。これによってNetCDFと標準的なI/Oとの相似点、つまりデータ共有の性質・バッファ動作・I/O操作のコストなどが変わる可能性があります。

配布されたNetCDF実装はポータブルであることを目標にしています。場合によっては、よりよいI/O性能のために実装を最適化するようなプラットフォーム固有のポートの方が実用的でしょう。



Quadralay Corporation
http://www.webworks.com
Voice: (512) 719-3399
Fax: (512) 719-3606
sales@webworks.com
TOC PREV NEXT INDEX