,mmap 具有如下的特点:,mmap内存映射的实现过程,总的来说可以分为三个阶段:,2.1进程启动映射过程,并在虚拟地址空间中为映射创建虚拟映射区域;,2.2调用内核空间的系统调用函数mmap(不同于用户空间函数),实现文件物理地址和进程虚拟地址的一一映射关系,2.3进程发起对这片映射空间的访问,引发缺页异常,实现文件内容到物理内存(主存)的拷贝,3.1mmap函数的原型,参数addr:指定映射的起始地址,通常设为NULL,由内核来分配,参数length:代表将文件中映射到内存的部分的长度。,参数prot:映射区域的保护方式。可以为以下几种方式的组合:,参数flags:映射区的特性标志位,常用的两个选项是:,参数fd:要映射到内存中的文件描述符,有open函数打开文件时返回的值。,参数offset:文件映射的偏移量,通常设置为0,代表从文件最前方开始对应,offset必须是分页大小的整数倍。,函数返回值:实际分配的内存的起始地址,3.2munmap函数,与mmap函数成对使用的是munmap函数,它是用来解除映射的函数;,3.3实例,下面是一个mmap使用的实例代码,这段代码实现了将测试文件testdata打开,并用mmap函数将文件映射到虚拟内存中,通过指针start对文件进行读写。在终端中可看到由文件读取的数据。程序结束后,可以查看testdata文件,来查看写入的数据,
,
© 版权声明
文章版权归作者所有,未经允许请勿转载。