图5-23 逻辑地址到线性地址的转换 逻辑地址由两部分组成,一个16位的段选择符和一个存在于描述符中的32位偏移量,见图5-23。段选择符用来寻找段的基地址,偏移量则用来指定寻址目标相对于段基址的位置。 处理器将逻辑地址转换成线性地址经过几个步骤: (1)利用描述符表寄存器提供的描述符表的基地址,和段选择符给出的描述符在表中的偏移地址来找到段描述符在全局描述符表GDT或局部描述符表LDT中地址,并从该地址将描述符读入处理器; (2)测试段描述符的访问权限及段限,验证其可访问性和有效性; (3)将段描述符中的基地址加上偏移地址得到线性地址。 程序中给出的一般都是逻辑地址,而处理器地址总线上需要的是物理地址。因此首先需要将逻辑地址转换为线性地址。如果启用了分页功能,则还需要由分页逻辑将线性地址映射为物理地址。如果没用分页功能,处理器就直接将线性地址映射为物理地址。 48位的逻辑地址分两部分,16位的段选择符和32位的段内偏移量。从逻辑地址到线性地址的转换过程中: 第一步,根据段选择符中的表指示器TI确定使用哪个描述符表。 第二步,从相应描述符表寄存器获取描述符表的基地址。 第三步,由描述符表的基地址和段选择符给出的段描述符索引,从描述符表中取出段描述符。 第四步,根据已经取得的段描述符,测试访问权限和有效性。如果验证通过,则继续下一步。 第五步,将段描述符中的基地址和逻辑地址中的偏移量相加即可得到线性地址。 如果不启用分页功能,处理器就直接将线性地址映射为物理地址,如果启用分页功能,就要进行第二级的地址转换,将线性地址转换成物理地址。 |