原来 Mmap 这么简单,
本文转载自微信公众号「Linux内核那些事」,作者songsong001 。转载本文请联系Linux内核那些事公众号。
一、传统的读写文件
一般来说,修改一个文件的内容需要如下3个步骤:
把文件内容读入到内存中。
修改内存中的内容。
把内存的数据写入到文件中。
过程如图 1 所示:
如果使用代码来实现上面的过程,代码如下:
read(fd, buf, 1024); // 读取文件的内容到buf
... // 修改buf的内容
write(fd, buf, 1024); // 把buf的内容写入到文件
从图 1 中可以看出,页缓存(page cache) 是读写文件时的中间层,内核使用 页缓存 与文件的数据块关联起来。所以应用程序读写文件时,实际操作的是 页缓存。
二、使用 mmap 读写文件
从传统读写文件的过程中,我们可以发现有个地方可以优化:如果