Yusuke TABATA
yusuk****@w5*****
2006年 11月 11日 (土) 16:49:11 JST
田畑です。 一応、Linux系で想定している動作を説明してみますので、 これで移植できることを期待してます ^^; SHINTA wrote: >>munmapの際にメモリの内容をファイルに書き戻すところだと思います。 > munmap() について調べてみたのですが、分からなかったので教えて下さい。 > > 1. msync() でメモリの内容をファイルに書き出せるようですが、munmap() も書 > き出し作業を行うのでしょうか? mmap()を持っているOSのほとんどにおいて、mmap()はファイルのキャッシュを プロセスのアドレス空間に見せる操作として実現されているので、C言語の ポインタ経由で書いた瞬間にファイルに書かれたものとしてみなせます。 (munmap()/msync()とは関係無いはず) msync()が必要になるのは、同じファイルを複数のプロセスからmmap()していて、 あるプロセスが書いた内容を他のプロセスに反映させるのを明示的に 行ないたい時ですが、最近のPOSIX系OSの実装では不要なようです。 anthyではmmap()した領域をアクセスし始める時にmmap()しなおしている はずなので、古いOSでも大丈夫と思ってます。(要確認>私) > 2. anthy_mmap() では mmap() した後に close(fd) でファイルディスクリプタ > を閉じていますが、閉じてしまってもそのファイルに書き出しを行うことはでき > るのでしょうか? 1. の理由で、mmap()した領域の内容はファイルの内容と 一致しており、書き戻す操作は不要です。 -- -- CHAOS AND CHANCE! Yusuke TABATA