我试图理解硬件和操作系统级别的中断。
为什么我们在系统中需要一个 APIC 控制器?我知道它正在进行一些多路复用,并且只有一根线会连接到 CPU。如果处理器中有足够的线路可供外部硬件用于中断,我们可以这样做吗?
当我们返回没有 IRQ_HANDLED 的 ISR 时会发生什么?
即使我们得到了中断,我们如何才能找出为什么我们的 ISR 没有被处理(考虑我们已经注册并初始化了 ISR)。
答案1
在 StackExchange 中,您应该将每个问题发布为单独的问题帖子。另外,你的问题 2 和 3 主要是内核编程问题,所以它们可能更适合堆栈溢出反而。我建议您编辑这个问题,使其仅包含您的问题 1,并单独发布其他问题,也许发布到 Stack Overflow。
关于你的问题1:
当然你可以这样做......但随后你将设计一个不再与 PC 兼容的新硬件架构。
APIC 是原始 PC 的旧 8259A 可编程中断控制器 (PIC) 芯片的增强替代品。
PIC 专为 8085 和 8086 微处理器而设计,以扩展其有限的中断功能。对于旧的 ISA 总线来说它已经足够了,但是对于更现代的总线类型,它成为系统性能和可扩展性的瓶颈。特别是,PIC 不足以构建多处理器系统。
因此,高级可编程中断控制器 (APIC) 架构被设计作为替代方案。第一个 APIC 是一个分立芯片 82489DX。它使得 486 和早期奔腾时代第一个双 CPU 系统的构建成为可能。从那时起,“本地 APIC”功能就被集成到 CPU 本身中。
如果需要,APIC 可以在硬件级别模拟旧的 PIC,但可以在现代操作系统中以更高级的模式工作。