IA-32系统级架构是由寄存器、数据结构、指令组成。用来支持系统级别的操作,比如内存管理,终端和异常处理,任务管理和多处理器控制等。可以看出架构的这些部分和操作系统联系非常紧密,自然而然为操作系统提供了广泛的支持。
下图提供了对IA-32中32位系统寄存器和数据结构的整体概述
全局和局部描述符表(Global and Local Descriptor Tables)
传统的实地址模式下的汇编中,利用CS:IP来访问内存,CS左移四位加IP获得物理地址,但是通常不需要关心基地址,只需要偏移地址即可访问内存,因为实地址模式的基地址通常是固定的。但是在保护模式下,为了达到保护内存的目的,就需要让不同程序有不同的基地址(基地址如果固定,那么很容易就被他人直到程序的运行位置,很不安全)。
所以,在保护模式下,内存是一段一段分配的,分配的那一段内存头地址就是基地址,也称段地址。同时,操作系统也需要记录分配出去的每一段内存,实际上,每段内存都使用一个8字节的段描述符记录着,所有的这些段描述符被放在一块连续内存空间中存储着,称为描述符表。
当系统在保护模式下运行时,所有的内存操作都需要通过全局描述符表(GDT)或局部描述符表(LDT)来完成。这两个描述符表有好多好多段描述符(segment descriptors),段描述符提供了若干信息,包括
- 段的基地址
- 访问权限
- 类型
- 用法
每个段描述符都有和它相关联的段选择符(segment selector),段选择符提供了如下信息
- 索引,提供段描述符在全局/局部描述符表中的偏移量(下标)
- 全局/局部的标识符,用来标识这个选择符是指向GDT还是LDT
- 访问权限信息
总结,全局/局部描述符表相当于一个数组&#x