
操作系统:图文详解神秘的”内存映射“
前言
- 内存映射 在 Linux操作系统中非常重要,因为其涉及到高效的跨进程通信 & 文件操作
- 今天,我将详细讲解操作系统中核心概念:内存映射
目录
1. 定义
关联 进程中的1个虚拟内存区域 & 1个磁盘上的对象,使得二者存在映射关系
2. 作用
若存在上述映射关系,则具备以下特征
- 在多个进程的虚拟内存区域 已和同1个共享对象 建立映射关系的前提下
- 若 其中1个进程对该虚拟区域进行写操作
- 那么,对于 也把该共享对象映射到其自身虚拟内存区域的进程 也是可见的
示意图如下
3. 实现过程
- 内存映射的实现过程主要是通过Linux系统下的系统调用函数:mmap()
- 该函数的作用 = 创建虚拟内存区域 + 与共享对象建立映射关系
- 其函数原型、具体使用 & 内部流程 如下
- 提高数据的读、写 & 传输的时间性能
- 减少了数据拷贝次数
- 用户空间 & 内核空间的高效交互(通过映射的区域 直接交互)
- 用内存读写 代替 I/O读写
- 提高内存利用率:通过虚拟内存 & 共享对象
5. 应用场景
在Linux系统下,根据内存映射的本质原理 & 特点,其应用场景在于:
6. 实例讲解
下面,我将详细讲解 内存映射应用在跨进程通信 & 文件操作的实例
6.1 文件读 / 写操作- 传统的Linux系统文件操作流程如下
- 使用了内存映射的 文件读 / 写 操作
从上面可看出:使用了内存映射的文件读/写 操作方式效率更加高、性能最好!
6.2 跨进程通信- 传统的跨进程通信
- 使用了内存映射的 跨进程通信
从上面可看出:使用了内存映射的跨进程通信 效率最高、性能最好!
7. 总结
-
本文全面讲解了 Linux操作系统中的内存映射
-
下面我将继续讲解 编程开发的基础知识,感兴趣的同学可以继续关注carson_ho的微信公众号
请点赞 / 评论点赞!因为你的鼓励是我写作的最大动力!
👁️ 阅读量:0
© 版权声明:本文《操作系统:图文详解神秘的”内存映射“》内容均为本站精心整理或网友自愿分享,如需转载请注明原文出处:https://www.zastudy.cn/wen/1686942432a401255.html。