今のところの理解 int fd; char * addr; fd = open("/Users/amachang/hoge", O_RDONLY); addr = mmap(0, size, PROT_READ|PROT_WRITE, MAP_FILE|MAP_PRIVATE, fd, 0); close(fd); こんな感じでやると、 hoge っていうファイルと addr から始まるメモリがちょうどスワップファイルとページの関係になる。 つまり、実際はファイルとメモリの番地は関連付けられただけで、アクセスするとページフォルト割り込みが発生してその都度読みにいく。 他のプロセスが既にこのファイルを mmap してたら同じ物理アドレスを指す仮想アドレスが帰ってくる。(仮想アドレスは違うけど、物理アドレスは同じ) MAP_PRIVATE が指定されている場合、プロセスがメモリの内容を変更する