diff --git a/Intel 手册中文版/卷三:系统编程指南.md b/Intel 手册中文版/卷三:系统编程指南.md index 8dc7829..6a462d6 100644 --- a/Intel 手册中文版/卷三:系统编程指南.md +++ b/Intel 手册中文版/卷三:系统编程指南.md @@ -6,17 +6,23 @@ # 第三章 Protected-Mode Memory Management +@BaoZR -3.4 逻辑和线性地址(LOGICAL AND LINEAR ADDRESSES) +3.4 逻辑和线性地址( LOGICAL AND LINEAR ADDRESSES ) + +如果系统架构等级处于保护模式上,处理器使用两阶段的地址翻译得到一个物理地址:逻辑地址翻译和线性地址空间分页。即使是最小限度的使用分段,处理器地址空间的每个字节都可以由逻辑地址访问。一个逻辑地址由 16 位的段选择子和 32 位的偏移组成(参见图 3-5 )。段选择子决定字节位于那个段,偏移决定了字节相对于段的基地址的偏移值,从而确定了在段中的位置。 + +处理器将每个逻辑地址翻译成线性地址。在处理器的线性地址空间中,线性地址是 32 位的地址。就像物理地址空间,线性地址空间是一个平的(不分段) 2^32 字节的地址空间,地址范围从 0 到 FFFFFFFFH 。线性地址空间包含着所有为系统定义的段和系统表。 + +为了将逻辑地址翻译成线性地址,处理器做了以下这些事情: + +- 1.使用段选择子中的偏移来定位 GDT 或 LDT 中的段描述符,然后将段描述符读进处理器(这个步骤只在新的段选择子被加载进段寄存器中)。 +- 2.检查段描述符以查验段的访问权限和范围,确保段是可访问的,且偏移量在段的范围之内。 +- 3.将段描述符中获取段的基地址加上偏移来组成一个线性地址。 - 如果系统架构等级处于保护模式上,处理器使用两阶段的地址翻译得到一个物理地址:逻辑地址翻译和线性地址空间分页。即使是最小限度的使用分段,处理器地址空间的每个字节都可以由逻辑地址访问。一个逻辑地址由16位的段选择子和32位的偏移组成(参见图3-5)。段选择子决定字节位于那个段,偏移决定了字节相对于段的基地址的偏移值,从而确定了在段中的位置。 -处理器将每个逻辑地址翻译成线性地址。在处理器的线性地址空间中,线性地址是32位的地址。就像物理地址空间,线性地址空间是一个平的(不分段)2^32字节的地址空间,地址范围从0到FFFFFFFFH。线性地址空间包含着所有为系统定义的段和系统表。 - 为了将逻辑地址翻译成线性地址,处理器做了以下这些事情: - 1.使用段选择子中的偏移来定位GDT或LDT中的段描述符,然后将段描述符读进处理器(这个步骤只在新的段选择子被加载进段寄存器中)。 - 2.检查段描述符以查验段的访问权限和范围,确保段是可访问的,且偏移量在段的范围之内。 - 3.将段描述符中获取段的基地址加上偏移来组成一个线性地址。 图 3-5 逻辑地址翻译成线性地址 - 如果分页没有被使用,处理器直接映射线性地址到物理地址(也就是,线性地址在处理器地址总线上消失)。如果线性地址空间被分页,第二级的地址翻译被用于翻译线性地址到物理地址。 + +如果分页没有被使用,处理器直接映射线性地址到物理地址(也就是,线性地址在处理器地址总线上消失)。如果线性地址空间被分页,第二级的地址翻译被用于翻译线性地址到物理地址。 # 第四章 Paging # 第五章 Protection