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

时间:2018-01-15 19:49:13

标签: assembly operating-system interrupt interrupt-handling protected-mode

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

为什么处理器不能使用一份IDT?

1 个答案:

答案 0 :(得分:1)

我假设您使用GDT这个术语来询问x86和/或x86-64处理器。

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

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

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

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