MAP_ANONYMOUS と 2 つのフラグ MAP_SHARED / MAP_PRIVATE を組み合わせると 4 種類のマッピングパターンが使えるようになります。
-
プライベートファイルマッピング
-
ファイルのデータでマッピングを初期化するのに用います。単に読み込んでそのデータを使うのに適しています。
-
プライベートアノニマスマッピング
-
mmap() で割り当てるメモリー領域が他のプロセスから見えない、独立的な処理で構わない場合に用います。
-
共有ファイルマッピング
-
fork() によって生成したプロセスから、ファイルマッピングに加えた変更が見えるようになっています。変更したデータはファイルに反映されます。
-
共有アノニマスマッピング
-
fork() によって生成したプロセスから、メモリーマッピングに加えた変更が見えるようになります。複数のプロセスで使うメモリー領域に適しています。
まあこれ読んでも即理解とはならないでしょうから、各パターンの比較による脳内練習の意味も含めて各パターンの実装をして見ましょう。