多处理器系统中的中断描述符表



我读到在多处理器系统中,每个处理器都有自己的中断描述符表(IDT)副本,并且它们使用全局描述符表(GDT)的一个副本。

为什么处理器不能使用一个 IDT 副本?

我假设使用GDT一词,您是在询问x86和/或x86-64处理器。

每个 x86 处理器(准确地说是硬件线程)都有自己单独的 IDTR 和 GDTR 寄存器。这允许(但不要求)操作系统在每个处理器上使用不同的 IDT 和 GDT。

x86 中的中断向量空间为 8 位,其中保留 32 位,留下 224 个中断。在许多平台中,这还不够明确的中断向量。通过在每个处理器上使用不同的 IDT,操作系统可以为每个处理器分配多达 224 个不同的中断向量。(但是,您不应假设所有操作系统都这样做。

相比之下,GDT 最多可容纳 8191 个描述符*,这远远超过大多数操作系统使用的数量,因此操作系统很少需要在每个处理器上使用单独的 GDT。

* 不能使用 GDT 条目 0,因为索引为 0 的选择器被视为空选择器。在 64 位模式下,系统描述符扩展到 16 个字节,而代码和数据描述符保持 8 个字节,因此 GDT 中可能的条目总数取决于存在的描述符类型。

最新更新