我知道linux会嵌套中断,其中一个中断可以“抢占”另一个中断,但是其他任务呢。
我只是想了解linux如何处理中断。它们是否可以被其他用户任务/内核任务抢占。
答案 0 :(得分:7)
阅读链接到Robert Loves Why kernel code/thread executing in interrupt context cannot sleep?的article,我读到了这个:
一些中断处理程序(已知) Linux作为快速中断处理程序)运行 在本地的所有中断 处理器禁用。这样就完成了 确保中断处理程序运行 没有中断,尽快 可能。更重要的是,所有中断 处理程序与他们的当前运行 所有中断线都被禁用 处理器。这确保了两个 中断处理程序也是如此 中断线不运行 同时。它还可以防止设备 司机作家不得不处理 递归中断,这复杂化 编程。
所以AFIK所有IRQ都在中断处理程序中被禁用,因此它不能被中断!?
答案 1 :(得分:2)
简单回答:中断只能被更高优先级的中断中断。
因此,如果中断的优先级低于内核调度程序中断优先级或用户任务中断优先级,则内核或用户任务可以中断中断。
请注意,“用户任务”是指用户定义的中断。