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