mmapのこと
MobaSiFでは、mmapを使ってテンプレートファイルをプロセス間で共用するようにしている、ということなのですが、mmapというのを初めて聞いたので調べました。
調べた結果、自分なりの理解の仕方は下記のような感じ。
- linuxのシステムコール
- ファイルをメモリにマッピングして、読み書きする
- 複数のプロセスがmmapで同じファイルにアクセスしたら、同じメモリ空間にマッピングされているファイルを読みにいく。メモリ共有。
- メモリにあるファイルの変更を、HDDにあるファイルに反映するには、msync()を実行すればコミットされる
このことから想像すると、MobaSiFでは、テンプレートファイルはメモリにマッピングされていて、プロセスはそこを読んでいるって事かな。マッピングされるタイミングは、テンプレートコンパイル時?ソースを読んで確認していきます。