5

私が収集できることから、ブロッキング デバイス ファイルで POSIXO_DIRECTを使用すると、Windows で との両方をopen()組み合わせた場合とまったく同じように機能します。これは私が正しく想定していますか?FILE_FLAG_WRITE_THROUGHFILE_FLAG_NO_BUFFERINGCreateFile()

開ける:

O_DIRECTこのファイルに対する I/O のキャッシュ効果を最小限に抑えます。一般に、これはパフォーマンスを低下させますが、アプリケーションが独自のキャッシュを行う場合など、特別な状況では役立ちます。ファイル I/O は、ユーザー空間バッファーとの間で直接行われます。

ファイルの作成:

FILE_FLAG_WRITE_THROUGHが使用されているがFILE_FLAG_NO_BUFFERING も指定されておらず、システム キャッシュが有効になっている場合、データはシステム キャッシュに書き込まれますが、遅延なくディスクにフラッシュされます。FILE_FLAG_WRITE_THROUGHFILE_FLAG_NO_BUFFERING の両方が指定されているため、システム キャッシュが有効になっていない場合、データは Windows システム キャッシュを経由せずにすぐにディスクにフラッシュされます。オペレーティング システムは、ハード ディスクのローカル ハードウェア キャッシュの永続メディアへのライトスルーも要求します。

4

1 に答える 1

6

はい、Windows システムでこれら 2 つのフラグを使用するとO_DIRECT、POSIX システムと非常によく似た効果があります。これらは 2 つの異なる OS であるため、完全に一致するものはないと予想できます。

ただし、ファイルシステムがどのように機能するかを正確に理解しようとしない限り、これらのオプションの両方から「データをバッファリングせず、できるだけ早くディスクに直接書き込む」という結果になります。

于 2013-04-12T12:47:21.290 に答える