内存映射文件

来源:互联网 发布:网络军事节目排行榜 编辑:程序博客网 时间:2024/06/07 03:53

1 什么是内存映射?

内存映射文件是由一个文件到一块内存的映射。使用内存映射文件处理存储于磁盘上的文件时,将不必再对文件执行I/O操作,使得内存映射文件在处理大数据量的文件时能起到相当重要的作用。

2 内存映射实现方法

    2.1 linux提供的两个内存映射函数是:

        mmap()和munmap()

        void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset);

        int munmap(void *start, size_t length);  

    2.2 windows提供的内存映射函数:

        HANDLE CreateFileMapping(HANDLE hFile,LPSECURITY_ATTRIBUTES lpFileMappingAttributes,DWORD flProtect,DWORD dwMaximumSizeHigh,DWORD dwMaximumSizeLow,LPCTSTR lpName);

        由于内存映射文件的物理存储器实际是存储于磁盘上的一个文件,而不是从系统的页文件中分配的内存,所以系统不会主动为其保留地址空间区域,也不会自动将文件的存储空间映射到该区域。DWORD型的参数dwMaximumSizeHigh和dwMaximumSizeLow也是相当重要的,指定了文件的最大字节数,由于这两个参数共64位,因此所支持的最大文件长度为16EB,几乎可以满足任何大数据量文件处理场合的要求。‍

 3 内存映射文件的最大大小是多少?

        映射文件的大小和用户的地址空间没有直接的联系,从使用上说,可以支持无限大。