内存管理接口--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 实际操作 :进程发起对这段内存的访问,实现文件内容到物理内存的拷贝

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值