mmap这个函数是和page cache有密切关系的函数之一。
他将一个文件映射到一块内存区域当中。mmap的特点是按需调页。最开始只申请vma,并不调真正的页。当对某些页进行引用的时候,会引起一个缺页中断,再将页面调入到内存当中,这样避免了对内存的浪费。
优点是:
操作文件就像操作内存一样,适合于对较大文件的读写。
缺点是:
文件如果很小,比如是小于4k的,比如60bytes,由于在内存当中的组织都是按页组织的,将文件调入到内存当中是一个页4k,这样其他的4096-60=4036 bytes的内存空间就会浪费掉了。
而且文件无法完成拓展,因为mmap到内存的时候,你所能够操作的范围就确定了,无法增加文件的长度。
如果系统频繁的使用mmap操作,而且每次mmap的size都不同,那么就会使得内存可能缺少足够的连续的内存空间。
当mmap的文件是page size的整数倍的时候,使用mmap调用看起来是最合适的,不会造成浪费。
相关热门文章
给主人留下些什么吧!~~
评论热议