X86 中断服务程序和IRQ

X86 中断服务程序和IRQ,x86,interrupt,cpu-architecture,isr,irq,X86,Interrupt,Cpu Architecture,Isr,Irq,您好,我正在尝试为x86实现一个操作系统。在受保护模式下,据说总共有256个中断服务例程可以在中断描述符表IDT中定义。我不明白为什么有这么多的条目,而只有15个IRQ行可用。只有15条IRQ线和256条ISR之间有什么关系? 我是说它们是如何映射的?因为您可以使用intxxh异常生成软件中断。还要注意:32个向量是为异常保留的。IRQ超过16条,16条是传统的,但IOAPIC支持更多(例如,我的IRQ线超过100条),IPI和MSI(两种中断)可以有任意向量。也就是说,是的,256个可能比以往

您好,我正在尝试为x86实现一个操作系统。在受保护模式下,据说总共有256个中断服务例程可以在中断描述符表IDT中定义。我不明白为什么有这么多的条目,而只有15个IRQ行可用。只有15条IRQ线和256条ISR之间有什么关系?
我是说它们是如何映射的?

因为您可以使用
intxxh
异常生成软件中断。还要注意:32个向量是为异常保留的。IRQ超过16条,16条是传统的,但IOAPIC支持更多(例如,我的IRQ线超过100条),IPI和MSI(两种中断)可以有任意向量。也就是说,是的,256个可能比以往任何时候都需要。我认为这只是因为使用1字节来指定向量(比剪切或使用奇怪的宽度更容易)。@Margaret,现代服务器系统使用超过224个中断。它们有NIC和存储设备,为每个队列生成单独的中断。MSI-X支持每个设备最多2048次中断。要做到这一点,操作系统必须为每个核心提供单独的IDT。中断重新映射表将每个中断路由到正确的核心,并带有一个特定于该核心的向量号。@prl关于服务器的好观点,我没有见过很多。