内存管理接口--mmap

一、mmap是什么

mmap,一种文件映射内存的方法,即通过将文件磁盘、外设或者其他对象映射到虚拟内存空间,进程可通过访问对应映射区域的虚拟内存地址,来操作(这里是通过指针的方式操作内存)文件磁盘、外设或者其他对象。mmap可实现读写,系统可自动回收脏页面,无需使用read/write等系统调用。

一点想法:这个类似于物理地址虚拟地址映射机制。进程要使用物理内存资源,需要通过使用虚拟地址的映射,间接的使用到物理地址资源;而mmap提供了一种方法。进程要使用文件磁盘或者外设等资源,需要通过映射到虚拟地址(虚拟地址再映射到物理地址,这个跟前面类似),间接的访问到文件磁盘或外设资源。

二、mmap的应用

函数原型

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

三、mmap的原理

整个映射的实现分三个阶段:

3.1 启动映射:调用库函数mmap、寻找连续虚拟地址空间、分配结构体vm_area_struct

3.2 底层调用:调用底层的mmap函数,实现文件、设备或对象的物理地址与进程虚拟地址的映射关系

3.3 实际操作 :进程发起对这段内存的访问,实现文件内容到物理内存的拷贝

猜你喜欢

转载自blog.csdn.net/tanxiezang5399/article/details/122612276