mmapのこと

MobaSiFでは、mmapを使ってテンプレートファイルをプロセス間で共用するようにしている、ということなのですが、mmapというのを初めて聞いたので調べました。
調べた結果、自分なりの理解の仕方は下記のような感じ。

  • linuxシステムコール
  • ファイルをメモリにマッピングして、読み書きする
  • 複数のプロセスがmmapで同じファイルにアクセスしたら、同じメモリ空間にマッピングされているファイルを読みにいく。メモリ共有。
  • メモリにあるファイルの変更を、HDDにあるファイルに反映するには、msync()を実行すればコミットされる

このことから想像すると、MobaSiFでは、テンプレートファイルはメモリにマッピングされていて、プロセスはそこを読んでいるって事かな。マッピングされるタイミングは、テンプレートコンパイル時?ソースを読んで確認していきます。