2.3.1 段机制

80386段机制中,逻辑地址由两部分组成,即段部分(选择符)及偏移部分。

段是形成逻辑地址到线性地址转换的基础。如果我们把段看成一个对象的话,那么对它的描述如下:

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

(2)段的界限(Limit):表示在逻辑地址中,段内可以使用的最大偏移量。

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

段的界限定义逻辑地址空间中段的大小。段内在偏移量从0limit范围内的逻辑地址,对应于从BaseBase+Limit范围内的线性地址。在一个段内,偏移量大于段界限的逻辑地址将没有意义,使用这样的逻辑地址,系统将产生异常。另外,如果要对一个段进行访问,系统会根据段的属性检查访问者是否具有访问权限,如果没有,则产生异常。例如,在80386中,如果要在只读段中进行写入,80386将根据该段的属性检测到这是一种违规操作,则产生异常。

      2.9表示一个段如何从逻辑地址空间,重新定位到线性地址空间。图的左侧表示逻辑地址空间,定义了ABC三个段,段容量分别为LimitALimitBLimitC。图中虚线把逻辑地址空间中的段ABC与线性地址空间区域连接起来表示了这种转换。

 

 

 


 2.9  逻辑线性地址转换

 段的基地址、界限及保护属性,存储在段的描述符表中,在虚拟线性地址转换过程中要对描述符进行访问。段描述符又存储在存储器的段描述符表中,该描述符表是段描述符的一个数组,关于这些内容,我们将继续详细介绍。