admin管理员组文章数量:1794759
操作系统:图文详解神秘的”内存映射“
前言
- 内存映射 在 Linux操作系统中非常重要,因为其涉及到高效的跨进程通信 & 文件操作
- 今天,我将详细讲解操作系统中核心概念:内存映射
目录
1. 定义
关联 进程中的1个虚拟内存区域 & 1个磁盘上的对象,使得二者存在映射关系
2. 作用
若存在上述映射关系,则具备以下特征
- 在多个进程的虚拟内存区域 已和同1个共享对象 建立映射关系的前提下
- 若 其中1个进程对该虚拟区域进行写操作
- 那么,对于 也把该共享对象映射到其自身虚拟内存区域的进程 也是可见的
示意图如下
3. 实现过程
- 内存映射的实现过程主要是通过Linux系统下的系统调用函数:mmap()
- 该函数的作用 = 创建虚拟内存区域 + 与共享对象建立映射关系
- 其函数原型、具体使用 & 内部流程 如下
- 提高数据的读、写 & 传输的时间性能
- 减少了数据拷贝次数
- 用户空间 & 内核空间的高效交互(通过映射的区域 直接交互)
- 用内存读写 代替 I/O读写
- 提高内存利用率:通过虚拟内存 & 共享对象
5. 应用场景
在Linux系统下,根据内存映射的本质原理 & 特点,其应用场景在于:
6. 实例讲解
下面,我将详细讲解 内存映射应用在跨进程通信 & 文件操作的实例
6.1 文件读 / 写操作- 传统的Linux系统文件操作流程如下
- 使用了内存映射的 文件读 / 写 操作
从上面可看出:使用了内存映射的文件读/写 操作方式效率更加高、性能最好!
6.2 跨进程通信- 传统的跨进程通信
- 使用了内存映射的 跨进程通信
从上面可看出:使用了内存映射的跨进程通信 效率最高、性能最好!
7. 总结
-
本文全面讲解了 Linux操作系统中的内存映射
-
下面我将继续讲解 编程开发的基础知识,感兴趣的同学可以继续关注carson_ho的微信公众号
请点赞 / 评论点赞!因为你的鼓励是我写作的最大动力!
版权声明:本文标题:操作系统:图文详解神秘的”内存映射“ 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686942205a120873.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论