问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mmap解析

发布网友 发布时间:2024-08-19 19:50

我来回答

1个回答

热心网友 时间:2024-08-22 17:45

虚拟内存将系统内存分割成大小固定的虚拟页VP,每个VP默认4KB;物理内存分割为物理页PP,每个PP默认4KB。

MMAP(Memory Mapped)是内存映射文件的方法,Linux通过此机制让用户程序可以直接访问内存。

内存映射本质是将内核特定区域的内存空间映射到用户级程序内存空间,实现共享。

mmap将文件或其他对象映射到进程地址空间,创建文件磁盘地址与进程虚拟地址空间的虚拟地址对映关系。

通过mmap()系统调用,进程之间可以共享映射同一个普通文件,读取文件如同普通内存访问,无需调用read()/write()等操作。

两个进程共享映射同一文件的示意图。

mmap分为基于文件映射和匿名映射两种方式。

基于文件映射适用于任何进程间共享,需要打开或创建文件,然后调用mmap(),如:

...

fd = open(name,flag,mode);

if(fd<0){

printf("error! ");

}

ptr = mmap(NULL,len,PROT_READ|REOT_EXEC|PROT_WRITE,MAP_SHARED,fd,0);

匿名映射没有对应文件,分页被初始化为0,适合父子进程间共享。

如父子进程间共享映射,子进程通过fork()继承父进程映射后的空间。

mmap实现过程包括三个阶段:进程创建映射区域,内核实现文件物理地址与虚拟地址映射,进程发起对映射空间的访问。

读写文件通过页缓存pageCache中转,mmap通过将文件页缓存映射到虚拟内存空间实现文件映射。

读写操作引发缺页异常,内核请求调页过程,将所需内存页从磁盘装入内存,进程即可对主存进行操作。

修改的脏页面不立即更新至文件,可以调用msync()强制同步。

mmap在write和read时的处理:

write中,进程将数据复制到mmap地址,产生缺页异常由内核处理,或直接复制到物理内存,更新磁盘。

read中,mmap避免了普通read的两次传输,直接访问内核缓冲区数据,减少内存使用。

mmap优点包括高读取效率、高效交互、进程间共享与通信、高效大规模数据传输。

缺点涉及文件大小限制、变长文件处理、大量更新操作。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
交通事故致人死亡,该如何处理? 爱普生LQ1600KIIIH 断色带 爱普生针式打印机LQ1600KⅢH近两月来总频繁中断打印,同时电脑显示是通讯... ACQUA DI PARMA 帕尔玛之水 蓝色地中海系列 桃金娘加州桂中性淡香水 E... 女士香水推荐-ACQUA DI PARMA 帕尔玛之水 优雅木兰女士浓香水 EDP 50... ACQUA DI PARMA帕尔玛之水克罗尼亚系列中性香水套装-适用对象 帕尔玛 | 必须拥有的小众沙龙香 ACQUA DI PARMA/帕尔玛之水克罗尼亚系列黑调男士古龙水-适用对象 ACQUA DI PARMA 帕尔玛之水 克罗尼亚系列 风度中性古龙水 EDC 20ml... ACQUA DI PARMA/帕尔玛之水-绅士男士古龙水EDC 怎样减轻母亲的压力? 微信群如何加 致富贷P2P理财平台安全吗,有风险吗?致富贷平台会不会跑路 致富贷是正规公司吗 形容舍不得心痛的句子 石蛙怎么吃效果最好 怎么处理石蛙 用“勇敢”造句有哪些 什么样的显卡和cpu可以混合交火啊? 如何让独立显卡与集成显卡混合交火使用 苹果手机突然无服务无信号怎么办? 云南新新华医院医疗技术 昆明国防路医院科室 昆明精神病医院有哪些 绿豆如何种植 绿豆的种植方式 如何设置直播不延迟? 种植绿豆的方法步骤 棉麻材质的面料掉毛怎么办 郴州市有哪些高中 右手无名指对应的脏器是什么 微信里面的群聊怎么添加? 中农信的信贷怎么样? 如何帮助新手妈妈减轻心理负担? 如何帮助我妈妈? 农民对扶贫贷款不了解,担心无法用好款项,你作为工作人员,你该怎么... 微信解封又几种方法 有没有其他办法解封微信号 解封微信帐号有几种方法 红海和地中海的地理位置 23400大写金额 大写支票金额怎么写? 小米手机联通卡没信号 如何写年级成长手册家长的话 ...单上金额大写不要写的金额要怎么写?是写零还是打差?比如金额是400... 湛江雷州鼎龙城产权年限多少年? 雷州鼎龙城面积有多大? 湛江雷州鼎龙城是什么装修? 罗浮镇领导机构 ansys 13 安装后,有一个进程占用很高的CPU,是ansyslmd.exe,无法关闭... ANSYS分析中如何使用GPU加速设置 ansys2G内存和3G内存差别大吗?