【问题标题】:How does 8259A interrupt controller deal with interrupts while servicing one already?8259A 中断控制器在服务中断时如何处理中断?
【发布时间】:2015-03-21 14:45:07
【问题描述】:

我正在阅读"Intel 8259A" document,其中有一段我无法完全理解(第7页结束):

当 8259A PIC 接收到中断时,INT 变为活动状态并启动中断确认周期。如果在两个 INTA 脉冲之间发生更高优先级的中断,则 INT 线在第二个 INTA 脉冲之后立即变为非活动状态。经过一段未指定的时间后,INT 线再次被激活,表示更高优先级的中断等待服务。此非活动时间未指定,并且可能因部件而异。设计人员在设计使用 8259A 的系统时应注意这一点。建议遵循适当的异步设计技术。

我了解在第一个 INTA(最初确认中断)之后和第二个 INTA(CPU 想要 8 位中断向量)之前,如果“激活”更高优先级的中断线(我不是电子工程师),INT 线到 CPU 被停用并在未指定的时间段后重新激活。

我不明白的是:

  1. 作为准系统(OS 内核)开发人员,所讨论的行为对我有什么影响?

  2. 提到的“异步设计技术” - 这些是硬件设计技术,还是对编写内核的人的暗示?在我看来,如果在两个 INTA 脉冲之间出现中断,我无能为力 - 这一切都发生在我作为内核开发人员真的无法控制的层面上,可以吗?

【问题讨论】:

  • 您和您的驱动程序/内核必须以一种或另一种方式正确处理此问题。
  • 谢谢马丁。需要指出的是,错误地处理这个问题从来都不是我的设计蓝图的一部分 ;-) 而且我们似乎又回到了原点。

标签: x86 operating-system interrupt-handling


【解决方案1】:

关于问题1:

在INTA脉冲之后发生的高优先级中断与在INTA脉冲之间发生的唯一区别在于 CPU通知更高优先级的挂起中断。在后一种情况下会有零个或多个周期的延迟。这可能会影响时序关键代码,因为硬件设备可能会在 CPU 确认之前撤回其中断信号,从而导致虚假中断(参见 p7 上引用文本之前的段落)。

【讨论】:

  • 谢谢您,只是想让您知道我已经有一段时间致力于此工作了,否则可能会支持并验证您的答案。唉,现在我对 8259A 的想法很少,但希望这同时对其他人有益,就像这里的习惯一样。
  • 不用担心。我一直在为这个芯片做一个仿真,所以它在我的脑海里很新鲜。我想它可能对这里的其他人也有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-10
  • 2019-05-25
  • 2015-12-25
  • 2011-07-20
  • 2020-12-09
  • 2021-12-27
相关资源
最近更新 更多