既定では、Windows はディスクから読み取られ、ディスクに書き込まれるファイル データをキャッシュします。 つまり、読み取り操作では、物理ディスクからではなく、システム メモリ内の領域 (システム ファイル キャッシュと呼ばれます) からファイル データを読み取ります。 これに対応して、書き込み操作はディスクではなくシステム ファイル キャッシュにファイル データを書き込み、この種類のキャッシュをライトバック キャッシュと呼びます。 キャッシュはファイル オブジェクトごとに管理されます。 キャッシュは、Windows の実行中に継続的に動作するキャッシュ マネージャーの指示の下で行われます。
システム ファイル キャッシュ内のファイル データは、オペレーティング システムによって決定される間隔でディスクに書き込まれます。 フラッシュされたページは、システム キャッシュ ワーキング セット (FILE_FLAG_RANDOM_ACCESSが設定されていて、ファイル ハンドルが閉じられなかった場合) またはスタンバイ リスト (使用可能なメモリの一部になる場合) に保持されます。
ファイルへのデータの書き込みを遅延させ、キャッシュがフラッシュされるまでキャッシュに保持するポリシーは遅延書き込みと呼ばれ、キャッシュ マネージャーによって決定された時間間隔でトリガーされます。 ファイル データのブロックがフラッシュされる時間は、キャッシュに格納された時間と、データが読み取り操作で最後にアクセスされてからの時間に部分的に基づきます。 これにより、頻繁に読み取られたファイル データは、システム ファイル キャッシュ内で最大時間アクセス可能な状態を維持できます。
このファイル データ キャッシュ プロセスを次の図に示します。
前の図の実線矢印に示すように、256 KB のデータ領域は、ファイル読み取り操作中にキャッシュ マネージャーによって最初に要求されたときに、システム アドレス空間の 256 KB のキャッシュ スロットに読み込まれます。 その後、ユーザー モード プロセスによって、このスロット内のデータが独自のアドレス空間にコピーされます。 プロセスがデータ アクセスを完了すると、プロセス アドレス空間とシステム キャッシュの間の点線の矢印で示されているように、変更されたデータがシステム キャッシュ内の同じスロットに書き戻されます。 キャッシュ マネージャーは、データが一定の時間不要になると判断すると、システム キャッシュとディスクの間の点線の矢印で示すように、変更されたデータをディスク上のファイルに書き戻します。
このセクションでは: