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

Assembly 多处理机系统中的中断描述符表,assembly,operating-system,interrupt,interrupt-handling,protected-mode,Assembly,Operating System,Interrupt,Interrupt Handling,Protected Mode,我读到,在多处理器系统中,每个处理器都有自己的中断描述符表IDT副本,它们使用全局描述符表GDT的一个副本 为什么处理器不能使用IDT的一个副本 通过使用术语GDT,我假设您询问的是x86和/或x86-64处理器 精确地说,每个x86处理器硬件线程都有自己独立的IDTR和GDTR寄存器。这允许但不要求操作系统在每个处理器上使用不同的IDT和GDT x86中的中断向量空间为8位,其中32位保留,剩余224个中断。在许多平台上,这还不够清楚的中断向量。通过在每个处理器上使用不同的IDT,操作系统可以

我读到,在多处理器系统中,每个处理器都有自己的中断描述符表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中可能的条目总数取决于存在的描述符类型。

您所读取的内容必须是系统特定的。所有处理器都可能使用一个IDT。您感兴趣的处理器/系统是什么?的16位表大小字段编码为字节-1,因此您可以传递65536字节/8192描述符的大小。0xfff8 | priv|u级别的段选择器应索引最高的段选择器。是否有其他限制阻止您使用所有8192 GDT或LDT条目?顺便说一句,英特尔的手册使用名称GDTR作为lgdt设置的内部GDT指针寄存器,IDTR/LDTR也是如此。heh,我想知道是不是这样简单,谢谢。学究气,但在64位模式下,当TSS描述符存在时,描述符的数量可能会减少,因为它们是16字节宽而不是8字节