没有合适的资源?快使用搜索试试~ 我知道了~
linux下的内存映射函数mmap详解及示例代码.doc
需积分: 5 3 下载量 111 浏览量
2022-06-05
15:16:07
上传
评论
收藏 80KB DOC 举报
温馨提示
试读
8页
linux下的内存映射函数mmap详解及示例代码.doc
资源详情
资源评论
资源推荐
Linux 的 mmap 文件内存映射机制
在讲述文件映射的概念时不可避免的要牵涉到虚存 的 实际上文件映射是虚存的中心概念文件映
射一方面给用户提供了一组措施好似用户将文件映射到自己地址空间的某个部分使用简单的内存访问指令读
写文件;另一方面它也可以用于内核的基本组织模式在这种模式种内核将整个地址空间视为诸如文件之类的
一组不同对象的映射中的传统文件访问方式是首先用 系统调用打开文件然后使用 以及
等调用进行顺序或者随即的 这种方式是非常低效的每一次 操作都需要一次系统调用另外如果若干个
进程访问同一个文件每个进程都要在自己的地址空间维护一个副本浪费了内存空间而如果能够通过一定的机
制将页面映射到进程的地址空间中也就是说首先通过简单的产生某些内存管理数据结构完成映射的创建. 当进
程访问页面时产生一个缺页中断, 内核将页面读入内存并且更新页表指向该页面而且这种方式非常方便于同一
副本的共享
是面向对象的方法设计的这里的对象是指内存对象内存对象是一个软件抽象的概念它描述内存区与后备
存储之间的映射系统可以使用多种类型的后备存储比如交换空间本地或者远程文件以及帧缓存等等 系统
对它们统一处理采用同一操作集操作比如读取页面或者回写页面等每种不同的后备存储都可以用不同的方法
实现这些操作这样系统定义了一套统一的接口每种后备存储给出自己的实现方法这样进程的地址空间就被
视为一组映射到不同数据对象上的的映射组成所有的有效地址就是那些映射到数据对象上的地址这些对象为
映射它的页面提供了持久性的后备存储映射使得用户可以直接寻址这些对象
值得提出的是 体系结构独立于 系统所有的 系统语义如正文数据及堆栈区都可以建构在基本
系统之上同时 体系结构也是独立于存储管理的存储管理是由操作系统实施的如究竟采取什么样的
对换和请求调页算法究竟是采取分段还是分页机制进行存储管理究竟是如何将虚拟地址转换成为物理地址等
等 ! 中是一种叫 "# $%&"' 的机制这些都与内存对象的概念无关
下面介绍 ! 中 的实现
一个进程应该包括一个 mm_struct(memory manage struct),该结构是进程虚拟地址空间的抽象描述里面包
括了进程虚拟空间的一些管理信息()()((('(' 等等信息
另外也有一个指向进程虚存区表$((!)$!的指针该链是按照虚拟地址的增长顺
序排列的在 ! 进程的地址空间被分作许多区$每个区$都对应虚拟地址空间上一段连续的区域
$ 是可以被共享和保护的独立实体这里的 vma 就是前面提到的内存对象下面是 $((!) 的结构其
中前半部分是公共的与类型无关的一些数据成员如指向 (!) 的指针地址范围等等后半部分则是与
类型相关的成员其中最重要的是一个指向 $((!) 向量表的指针 $($( 向量表是一组虚
函数定义了与 $ 类型无关的接口每一个特定的子类即每种 $ 类型都必须在向量表中实现这些操作这里
包括了)!))&&! 这些操作
!)$((!)*
+公共的与 $ 类型无关的+
!)(!)+$(,
!&&$(,
!&&$(,
!)$((!)+$(,
fadestar
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- #P0015. 全排列 超级简单
- pta题库答案c语言之排序4统计工龄.zip
- pta题库答案c语言之树结构7堆中的路径.zip
- pta题库答案c语言之树结构3TreeTraversalsAgain.zip
- pta题库答案c语言之树结构2ListLeaves.zip
- pta题库答案c语言之树结构1树的同构.zip
- 基于C++实现民航飞行与地图简易管理系统可执行程序+说明+详细注释.zip
- pta题库答案c语言之复杂度1最大子列和问题.zip
- 三维装箱问题(Three-Dimensional Bin Packing Problem,3D-BPP)是一个经典的组合优化问题
- 以下是一些关于Linux线程同步的基本概念和方法.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0