操作系统:IA-32 系统架构概览

一、系统级体系结构概览

系统级体系结构包含了一系列的寄存器、数据结构和支持底层操作的指令。例如内存管理、中断和异常处理、任务管理,以及多处理器控制等。

1.1 全局和局部描述符表

  • GDT:Global Descriptor Table,全局描述符表。
  • LDT:Local Descriptor Table,局部描述符表。

在保护模式下,所有访存操作均经由 GDT 或 LDT 实现。

GDT 和 LDT 包含了 段描述符,段描述符提供了段的基地址、访问权限、类型、使用信息。

每个段描述符有一个关联的 段选择符,段选择符提供了 GDT 或 LDT 的索引、全局/局部标志(表明是否指向 GDT 或 LDT)、访问权限信息。

获取段中的某个字节需要提供段选择符、偏移地址。

IA-32e 模式下,GDTR 和 LDTR 寄存器被扩展为 64 位。

1.2 门描述符

除了代码段、数据段和堆栈段之外,该架构还定义了两个 系统段:任务状态段(TSS, Task State Segment)和 LDT。由于 GDT 不通过段选择符和段描述符进行访问,因此不认为它是一个段。

三种特殊的描述符,位于 IDT(中断描述符表,Interrupt Descriptor Table)中:

  • 中断门:描述中断/异常处理程序的入口点,包含段选择符和中断/异常处理程序的段内偏移量,当控制转移到一个适当的段时,处理器会清除 IF 标志,屏蔽其它中断。
  • 任务门:指示任务。当中断信号发生时,任务门内的选择符必须指示 GDT 中的 TSS 描述符,门中的偏移无意义。任务的入口点保存在 TSS 中。利用段间转移指令 JMP 和段间调用指令 CALL,通过任务门可实现任务切换。
  • 陷阱门:与中断门相似,只是控制转移时不会修改 IF 标志。

1.3 TSS 和任务门

TSS 定义了一个任务在运行环境中的状态,也包含了 LDT 的段选择符。

保护模式下所有程序的执行都是发生在“任务”这一上下文中。当前任务的 TSS 段选择符保存在任务寄存器(TR, Task Register)中。

切换到某个任务:通过 CALL 或 JMP 切换到一个新的任务。新任务的 TSS 段选择符在 CALL 或 JMP 指令中给出。

处理器在切换任务时执行的操作:

  1. 将当前任务的状态存到当前 TSS 中
  2. 通过段选择符来为新任务加载任务寄存器
  3. 通过 GDT 中的段描述符来访问新的 TSS
  4. 从新的 TSS 中加载新任务的状态到通用寄存器、段寄存器、LDTR、控制寄存器 CR3、标志寄存器、EIP 寄存器
  5. 开始执行新任务

1.4 中断和异常处理

外部中断、软件中断和异常均通过 IDT(中断描述符表)进行处理。

IDT 存储了一些门描述符,这些描述符提供了访问中断和异常处理程序的权限。

1.5 内存管理

系统架构支持对内存的直接物理寻址和虚拟内存的分页寻址。分业结构中包含了页面在物理内存中的位置,分业结构存储于物理内存中。

1.6 系统寄存器

为了帮助处理器进行初始化和控制系统操作,系统架构提供了系统标识符,它们存于标志寄存器(EFLAGS)以及其它系统寄存器中。

二、操作模式

  • 保护模式:处理器的原生操作模式,提供了丰富的架构特性、灵活性、高性能和向后兼容性。
  • 实地址模式:提供了 8086 处理器的编程环境,带有一些扩展。
  • 系统管理模式(SMM):所有 IA-32 处理器的标准架构特性,为操作系统提供了关于权力管理和 OEM 特性差异的透明机制。
  • 虚拟 8086 模式:在保护模式下,处理器支持的一种准操作模式。允许处理器在受保护、多任务环境中执行 8086 软件。
  • IA-32e 模式:该模式下,处理器支持两种子模式——兼容模式和 64 位模式。

保护模式->实地址模式:PE=0

实地址模式->保护模式:PE=1

三、8086 系统指令寄存器

标志寄存器

  • ID:标识
  • VIP:虚拟中断挂起
  • VIF:虚拟中断标志
  • AC:对齐检查
  • VM:虚拟 8086 模式
  • RF:恢复执行标志
  • NT:任务嵌套
  • IOPL:I/O 特权级别
  • IF:中断允许标志
  • TF:陷阱标志

图示如下

内存管理寄存器

  • GDTR:保存 GDT 的基地址和 16 位表限制
  • LDTR:保存 LDT 的 16 位段选择符、基地址、段限制、描述符属性
  • IDTR:保存 IDT 的基地址和 16 位表限制
  • TR:保存当前任务的 TSS 的 16 位段选择符、基地址、短线之、描述符属性

图示如下

控制寄存器

  • CR0:包含控制操作模式和处理器状态的系统控制标志
  • CR1:保留
  • CR2:包含页面错误(page-fault)的线性地址
  • CR3:包含分业结构层次的物理地址以及两个标志(PCD 和 PWT)

四、系统指令

  • LGDT:读取 GDT(全局描述符表)寄存器
  • SGDT:写入 GDT 寄存器
  • LLDT:读取 LDT(局部描述符表)寄存器
  • SLDT:写入 LDT 寄存器
  • LIDT:读取 IDT(中断描述符表)寄存器
  • SIDT:写入 IDT 寄存器
  • LTR:读取任务寄存器
  • STR:写入任务寄存器

相关文章

Loading Likes...

发表评论

电子邮件地址不会被公开。 必填项已用*标注