mmap 一定比普通读写快吗?
2017-06-14 本文已影响232人
不一样的卡梅利多
原理 : 文件磁盘地址映射到内存中 ,是文件地址映射。不是文件内容映射。通过缺页中断将文件内容加载到内存中。缺页中断一次加载 4K 的倍数
磁盘 -->内存 通过缺页中断触发 数据传递
方式1 read
磁盘 -->--cpu缓存---cpu寄存器->内核0{缓存}--内核1--->应用程序内存
方式1 mmap
磁盘 -->--cpu缓存---cpu寄存器--->应用程序内存
方式2 DMA 不经过 CPU
磁盘-->内存0{内核缓存}--内存1--->应用程序内存
方式2 mmap
磁盘--->应用程序内存
mmap 比 普通read ,write 快的原因。少一次从内存复制数据,适用于大文件读写
普通read 比mmap 块的原因,一般先从缓存中获取数据,如果没有才从磁盘加载数据
所以 :
mmap 一般适于用大文件读写
普通read 适用与一般文件读取
这两种方式都有存在的必要