【发布时间】:2018-11-30 14:28:51
【问题描述】:
假设我们收到来自 Net 设备的 100 个中断,来自 USB 的 50 个中断,来自 SPI 设备的 25 个中断,来自 I2c 的 25 个中断。
按如下顺序来 5Net - 4USB - 2SPI -2I2C 和相同的序列如下。
顶级处理程序可以调度特定于设备的处理程序来服务中断
现在处理器一旦得到网络设备的中断就会中断正在运行的任务。在完成 Net 设备的中断处理程序的上半部分后,它必须执行 USB 和 SPI 和 I2C 的上半部分。
完成第一组序列后将遵循相同的序列。被打断的任务什么时候会再次唤醒?被中断的任务是否等到所有 100 个中断都由它们各自的设备特定处理程序提供服务?如果多核系统需要服务数十万个中断,如何将中断共享给不同的内核?
据我所知,在执行中断处理程序时,处理器将处于中断上下文中,因此不会有任何上下文切换。由于不同的 ISR 必须服务数十万个中断,处理器是否总是处于中断上下文中?
【问题讨论】:
标签: linux-kernel interrupt-handling