我正在学习低级设备驱动程序相关的知识。我对中断和IRQ感到困惑。一个示例驱动代码钩取键盘时表明键盘中断是0x31,但我的微处理器书上说它是0x09。在打开“设备管理器->键盘->资源”后,它显示IRQ为1。有人能解释一下吗?谢谢, Sanjeev
就像这样。在您的计算机中,有一个称为(I)PIC的单元。该单元从某些外围设备(如PS2键盘)接收输入,并在CPU上引发中断。在现代系统中,有两个APICs。一个被称为主要的,另一个被称为从属的,每个拥有8个IRQ线路。当您按下键盘上的键时,APIC会在第1条线路(IRO 1)上收到信号,然后在CPU上引发中断。APIC可以编程,即使它在第1条线路(IRO 1)上接收到信号,也不会在CPU上引发9号中断(尽管奇怪的是,如果不编程,这实际上是默认值),因为这将与一些CPU内部中断冲突,所以通常将其编程到其他地方。在您的情况下,似乎将其转换为0x31中断,听起来可能是正确的(它添加了IRQ + 0x30)。我非常认为它没有映射到中断9,因为这将与处理器的Double Fault异常中断冲突,书上可能只提到了默认设置。