GDT(全局描述符表)和 IDT(中断描述符表)是x86架构中用于存储描述符的表,它们在操作系统中发挥着关键的作用。
GDT(全局描述符表):
-
描述符: GDT 中的每个表项称为描述符,描述符包含了一些关于内存段(如代码段、数据段)的信息,比如基地址、段限制、访问权限等。
-
段描述符: GDT 中的描述符用于定义不同内存段的属性,如代码段、数据段、堆、栈等。
-
全局性: GDT 是全局性的,即整个系统共用一个 GDT。每个描述符都有一个唯一的选择符,通过这个选择符,CPU 可以访问 GDT 中的相应描述符。
-
任务状态段(TSS): GDT 还包括任务状态段,用于定义任务的特权级别和状态。
IDT(中断描述符表):
-
描述符: IDT 中的每个表项也是描述符,描述符包含了中断门、陷阱门或任务门的信息。
-
中断门和陷阱门: 中断门用于处理外部中断(如硬件中断),而陷阱门用于陷阱或异常处理(如软中断、系统调用、除零错误等)。
-
全局性: 与 GDT 类似,IDT 也是全局性的,整个系统共用一个 IDT。
-
中断处理: IDT 中的每个描述符指向一个中断处理例程(中断服务程序),当相应的中断或异常发生时,CPU 会跳转到相应的处理例程。
总的来说,GDT 和 IDT 在操作系统中的作用是管理和提供对不同类型的段和中断的访问和处理。这些表的结构和内容由操作系统内核进行管理和配置。在实模式和保护模式下,GDT 和 IDT 的设置和使用方式有所不同。在保护模式下,GDT 和 IDT 被广泛用于实现内存隔离和中断处理。