Linux内存管理主要涉及分段机制的实现
发布时间
阅读量:
阅读量
一、物理地址、虚拟地址和线性地址
主板上所安装的物理内存条所提供的存储区域被称作物理内存空间,其中每个存储单元对应的实际位置称为物理地址;应用程序员所感知的存储区域则被定义为虚拟地址空间,该空间中的定位信息即为虚拟地址。线性地址空间指的是一个连续且未分段的区域,其范围从0至4GB,其中任何一个具体数值均代表线性地址空间中的绝对位置。
MMU(内存管理单元)是一种硬件模块,由两个组成部分构成:分段组件(即分段机制)以及分页组件(即分页机制)。其中,分段机制用于将虚拟地址转换为对应的线性地址;而分页机制则负责将线性地址映射至实际的物理地址。
二、段机制
在虚拟地址空间中,段作为基本构成单位存在。为了实现映射功能,必须通过段机制将一个特定的虚拟地址转换为对应的线性地址。
1、段描述符
为了完成上述映射过程,需要使用一种数据结构,并且该结构需涵盖以下三个关键要素:
(1)基址:表示线性地址空间中某一特定段的起始位置。
(2)界限(Limit):在虚拟地址空间中用于界定该段内允许访问的最大偏移量。
(3)保护属性:用于描述该段的相关特性。例如是否允许读取或写入操作、是否可作为程序执行代码以及所处的权限等级等。
如图2.5所示,在虚拟地址空间中某一偏移量位于0至Limit之间时,其所对应的整个区间将被映射到线性地址空间中从Base至Base+Limit的位置范围之内。
!
全部评论 (0)
还没有任何评论哟~
