3

我正在研究低级设备驱动程序的东西。我对中断和IRQ感到困惑。挂钩键盘的示例驱动程序代码表明键盘中断是 0x31,但我关于微处理器的书说它是 0x09。在打开“设备管理器->键盘->资源”时,它显示 IRQ 为 1。有人可以澄清一下吗?

谢谢,桑吉夫

4

2 回答 2

2

就像这样。在您的计算机中,您有一个称为 (A)PIC 的单元。该单元从您的一些外围设备(如 PS2 键盘)获取输入,并在 CPU 上引发中断。在现代系统中有两个 APIC。一个称为主,另一个称为从,每个都包含 8 条 IRQ 线。当您按下键盘上的某个键时,APIC 在第 1 行 (IRQ 1) 上收到一个信号,然后在 CPU 上产生一个中断。

APIC 可以进行编程,因此即使它在第 1 行收到信号,它也不会在 CPU 上引发中断 9(尽管奇怪的是,如果您不对其进行编程,这实际上是默认设置),因为这会与内部的一些 CPU 冲突中断,因此您通常将其编程到其他地方。在您的情况下,它似乎将其转换为中断 0x31,这听起来可能是正确的(它添加了 IRQ + 0x30)。

我强烈不相信它被映射到中断 9,因为这会与处理器的双重故障异常中断冲突,这本书可能只是提到了默认设置。

于 2012-06-26T14:50:43.510 回答
0

简单的答案是 IRQ(中断请求)是由系统映射到中断的硬件输入。在键盘的情况下,IRQ1 映射到中断 9。

令人高兴的答案是,在这种情况下,中断 31h 显然是一个错误或错字。

中断请求

于 2010-08-30T21:54:51.017 回答