mmap的优点与原理,网上较多,这里主要根据收集的资料自己总结的几点理解:
1、理解上要区分用户空间、内核空间、硬盘三者间的联系
2、传统IO:read/write->发送IO请求->从硬盘拷贝数据到内核->内核拷贝到用户内存:二次拷贝。
3、一开始就建立好映射用户、内核、硬盘三者之间的映射关系
1.映射的那部分数据不在内核空间时,触发缺页异常,将数据从硬盘拷贝到内核空间
2.1次拷贝:不需要再从内核空间拷贝到用户空间,通过shared的方式进行内核空间的访问
4、占用少量的用户内存,使用系统内存,操作系统管理系统内存的开启与释放
5、与内存分页使用的缺页中断机制相同,占用一部分的用户内存存储虚拟内存到到磁盘的映射关系,映射部分数据却不在物理内存中同样产生缺页中断
6、除了节省了内存空间和用户空间之间的一次传输之外,mmap()还能够通过减少所需使用的内存来提升性,当使用read()或write()时,数据将被保存在两个缓冲区中:一个位于用户空间,另一个位于内核空间。当使用mmap()时,内核空间和用户空间会共享同一个缓冲区
7、适合对于大文件的重复随机存储与访问