掩码取消后是否可以接收屏蔽中断?

时间:2012-05-30 13:48:30

标签: assembly linux-kernel kernel interrupt

如果中断被“cli”指令屏蔽,那么在“sti”指令之后cpu会接收到相同的中断(不是同一个源的中断)吗?

1 个答案:

答案 0 :(得分:4)

在几乎所有合理的中断应用程序中,屏蔽中断就是这样;取消屏蔽将导致CPU接受任何挂起的中断请求。

如果不是这种情况,那么中断掩码的使用会导致一些中断因为时间碎片很少而丢失(软件会在出现新请求的同时禁用掩码;你不会想要不同的行为只是因为其中一个事件发生在另一个之前的飞秒上。

如果在屏蔽了一类中断(“all”或“level7”或硬件支持的任何内容)之后,你想要一个特定的中断源消失,你的程序应该采取明确的行动,同时将中断屏蔽到告诉硬件忽略/确认该中断。

如果我们颠倒这个想法,你可以得到一些非常漂亮的OS /中断架构。有时处理极高优先级的中断很有用,但是人们希望将开销保持在低水平。因此,在可能的情况下经常使用的廉价技巧是高优先级中断例程只做一小部分工作,然后通过导致中断将其余工作降低到较低优先级。那个级别。一些硬件使这成为可能。如果任何级别的中断例程已经完成了应该导致任务重新安排的工作,这将特别方便;它只是发出一个低级别的中断信号,其服务程序恰好是调度程序。