【发布时间】:2011-05-09 08:27:11
【问题描述】:
我知道 linux 有嵌套中断,其中一个中断可以“抢占”另一个中断,但是对于其他任务呢。
我只是想了解 linux 如何处理中断。它们可以被其他用户任务/内核任务抢占吗?
【问题讨论】:
标签: linux linux-kernel kernel interrupt
我知道 linux 有嵌套中断,其中一个中断可以“抢占”另一个中断,但是对于其他任务呢。
我只是想了解 linux 如何处理中断。它们可以被其他用户任务/内核任务抢占吗?
【问题讨论】:
标签: linux linux-kernel kernel interrupt
阅读 Why kernel code/thread executing in interrupt context cannot sleep? 链接到 Robert Loves article,我读到了这个:
一些中断处理程序(已知 Linux 作为快速中断处理程序)运行 与本地的所有中断 处理器禁用。这是为了 确保中断处理程序运行 不间断,尽快 可能的。更何况,所有的中断 处理程序以其当前运行 中断线全部禁用 处理器。这确保了两个 相同的中断处理程序 中断线不运行 同时。它还可以防止设备 司机作家不必处理 递归中断,这很复杂 编程。
所以 AFIK 所有的 IRQ 在中断处理程序中都被禁用,因此它不能被中断!?
【讨论】:
简单回答:一个中断只能被更高优先级的中断打断。
因此,中断可以被内核或用户任务中断如果中断的优先级低于内核调度程序中断优先级或用户任务中断优先级。
请注意,“用户任务”是指用户定义的中断。
【讨论】: