ファイル マッピング

ファイル マッピング は、ファイルの内容とプロセスの仮想アドレス空間の一部との関連付けです。 この関連付けを維持するために、 ファイル マッピング オブジェクト ( セクション オブジェクトとも呼ばれます) が作成されます。 ファイル ビューは、プロセスがファイルの内容にアクセスするために使用する仮想アドレス空間の部分です。 ファイル マッピングを使用すると、プロセスでランダムな入力と出力 (I/O) とシーケンシャル I/O の両方を使用できます。 また、このプロセスは、ファイル全体をメモリにマップすることなく、データベースなどの大きなデータ ファイルを効率的に処理できます。 また、複数のプロセスでメモリ マップファイルを使用してデータを共有することもできます。

動的に割り当てられたメモリの場合と同様に、ポインターを使用してファイル ビューからの読み取りとファイル ビューへの書き込みを処理します。 ファイル マッピングを使用すると、ファイルはディスク上に存在するが、ファイル ビューはメモリ内に存在するため、効率が向上します。 プロセスでは、 VirtualProtect 関数を使用してファイル ビューを操作することもできます。

次の図は、ディスク上のファイル、ファイル マッピング オブジェクト、ファイル ビューの関係を示しています。

ディスク上のファイル、ファイル マッピング オブジェクト、およびファイル ビューの間のリレーションシップ。

ディスク上のファイルには、メモリにマップする任意のファイルを指定することも、システム ページ ファイルにすることもできます。 ファイル マッピング オブジェクトは、ファイルのすべてまたは一部のみで構成できます。 ディスク上のファイルによってバックアップされます。 つまり、システムがファイル マッピング オブジェクトのページをスワップアウトすると、ファイル マッピング オブジェクトに加えられた変更がファイルに書き込まれます。 ファイル マッピング オブジェクトのページがスワップインされると、ファイルから復元されます。

ファイル ビューは、ファイル マッピング オブジェクトのすべてまたは一部のみで構成できます。 プロセスは、ファイル ビューを介してファイルを操作します。 プロセスでは、1 つのファイル マッピング オブジェクトに対して複数のビューを作成できます。 各プロセスによって作成されたファイル ビューは、そのプロセスの仮想アドレス空間に存在します。 現在のファイル ビュー以外のファイルの一部からのデータがプロセスに必要な場合は、現在のファイル ビューのマップを解除してから、新しいファイル ビューを作成できます。

複数のプロセスで同じファイル マッピング オブジェクトを使用してローカル ファイルのビューを作成する場合、データは一貫しています。 つまり、ビューにはディスク上のファイルの同じコピーが含まれます。 複数のプロセス間でメモリを共有する場合は、リモート コンピューターにファイルを配置できません。

詳細については、次のトピックを参照してください。