Bootstrap

Linux内存寻址——分段机制

一、物理地址、虚拟地址和线性地址

将主板上的物理内存条所提供的内存空间定义为物理内存空间,其中每个内存单元的实际地址是物理地址;将应用程序员看到的内存空间定义为虚拟地址空间,其中的地址是虚拟地址。线性地址空间是指一段连续的,不分段的,范围从0到4GB的地址空间,一个线性地址就是线性地址空间的一个绝对地址。

MMU内存管理单元是硬件电路,包含两个部件,分段部件(分段机制)和分页部件(分页机制)。分段机制把虚拟地址转换为线性地址;分页机制把线性地址转换为物理地址

二、段机制

段是虚拟地址空间基本单位,段机制必须把虚拟地址空间的一个地址转换为线性地址空间的一个线性地址。

1、段描述符

为实现地址映射,需要一个数据结构,包括以下三个方面的内容。

(1)段的基地址:线性地址空间中段的起始地址。

(2)段的界限(Limit):虚拟地址空间中,段内可以使用的最大偏移量。

(3)段的保护属性:表示段的特性。例如,该段是否可被读出或写入,或者该段是否作为一个程序来执行,以及段的特权级等。

如图2.5所示,虚拟地址空间中偏移量是从0到Limit范围内的一个段,映射到线性地址空间中是从Base到Base+Limit。

把图2.5用一个表描述则如表2.1所示。

这是

;