公众号: Linux内核那些事
零拷贝技术mmapmmap
一、传统的读写文件
一般来说,修改一个文件的内容需要如下3个步骤:
- 把文件内容读入到内存中。
- 修改内存中的内容。
- 把内存的数据写入到文件中。
过程如图 1 所示:
如果使用代码来实现上面的过程,代码如下:
页缓存(page cache)页缓存页缓存
二、使用 mmap 读写文件
页缓存页缓存
mmap
mmap
页缓存mmap页缓存mmap页缓存页缓存
mmap页缓存mmap
msyncmunmap
三、mmap的使用方式
mmapmmap
mmap
addrlengthprotPROT_EXECPROT_READPROT_WRITEPROT_NONEflagsMAP_FIXEDMAP_SHAREDMAP_PRIVATEMAP_LOCKEDfdoffset
mmapmmap
openmmap
addrlengthprotPROT_WRITEflagsMAP_SHAREDfdoffset
mmap
四、总结
mmapmmap
mmapmmapmsync