ファイル マッピング
ファイル マッピング は、ファイルの内容とプロセスの仮想アドレス空間の一部との関連付けです。 システムは、この関連付けを維持するために ファイル マッピング オブジェクト ( セクション オブジェクトとも呼ばれます) を作成します。 ファイル ビューは、プロセスがファイルの内容にアクセスするために使用する仮想アドレス空間の部分です。 ファイル マッピングを使用すると、プロセスはランダムな入力と出力 (I/O) とシーケンシャル I/O の両方を使用できます。 また、ファイル全体をメモリにマップすることなく、データベースなどの大きなデータ ファイルでプロセスを効率的に動作させることができます。 また、複数のプロセスでメモリ マップファイルを使用してデータを共有することもできます。
動的に割り当てられたメモリと同様に、ポインターを使用してファイル ビューの読み取りと書き込みを処理します。 ファイル マッピングを使用すると、ファイルはディスク上に存在するが、ファイル ビューはメモリ内に存在するため、効率が向上します。 プロセスは、 VirtualProtect 関数を使用してファイル ビューを操作することもできます。
次の図は、ディスク上のファイル、ファイル マッピング オブジェクト、およびファイル ビューの関係を示しています。

ディスク上のファイルには、メモリにマップする任意のファイルを指定することも、システム ページ ファイルにすることもできます。 ファイル マッピング オブジェクトは、ファイルのすべてまたは一部のみで構成できます。 ディスク上のファイルによってバックアップされます。 つまり、システムがファイル マッピング オブジェクトのページをスワップアウトすると、ファイル マッピング オブジェクトに加えられた変更がファイルに書き込まれます。 ファイル マッピング オブジェクトのページがスワップされると、ファイルから復元されます。
ファイル ビューは、ファイル マッピング オブジェクトのすべてまたは一部のみで構成できます。 プロセスは、ファイル ビューを介してファイルを操作します。 プロセスは、1 つのファイル マッピング オブジェクトに対して複数のビューを作成できます。 各プロセスによって作成されたファイル ビューは、そのプロセスの仮想アドレス空間に存在します。 プロセスで、現在のファイル ビュー以外のファイルの一部からのデータが必要な場合は、現在のファイル ビューのマップを解除してから、新しいファイル ビューを作成できます。
複数のプロセスが同じファイル マッピング オブジェクトを使用してローカル ファイルのビューを作成する場合、データは一貫性があります。 つまり、ビューにはディスク上のファイルの同じコピーが含まれます。 複数のプロセス間でメモリを共有する場合、ファイルはリモート コンピューター上に存在できません。
詳細については、次のトピックを参照してください。
- ファイル マッピング オブジェクトの作成
- ファイル ビューの作成
- ファイルとメモリの共有
- ファイル ビューからの読み取りと書き込み
- ファイル マッピング オブジェクトを閉じる
- ファイル マッピングのセキュリティとアクセス権
- ファイル マッピングの使用