目次
プロセスアドレス空間は、仮想アドレス(もしくはリニアアドレス)なので、物理アドレスではないです。
また mmap でメモリーマッピングをする際には、当然ながらハードディスクをマウントしたファイルシステムにもアクセスする必要があります。
Linux では Virtual File System (VFS) というカーネル内のレイヤーを通してマウントしている(ファイルシステム)デバイスであるハードディスク等にアクセスします。
VFS を構成するオブジェクトはカーネル好き以外は理解する必要はないですが、一応まとめておきます。
これを図にすると以下のような感じになりますね。
読者のようなソフトウェア開発者が mmap を使う際には、ファイルよりも、ファイルを開いて作ったファイル記述子からメモリー領域( memory region )へのマッピングしか意識することはないでしょう。
ここら辺の理解は mmap を使うためには必須ではないですが、抑えておくとデバッグが捗ると思います。
Copyright 2018-2019, by Masaki Komatsu