Linux - 嵌套中断

时间:2015-12-30 10:35:54

标签: linux interrupt interrupt-handling

Linux是否使用嵌套中断?

我的意思是例如在从任何设备提供中断时,可以允许在此例程中进一步中断?或者它是上半部分还是下半部分?

修改

如果Linux使用嵌套中断,那么如何关注他们的堆栈?

1 个答案:

答案 0 :(得分:3)

是的,Linux中断是可重入的。 https://unix.stackexchange.com/a/7172/40346

  

Linux内核是可重入的(与所有UNIX内核一样),这意味着CPU可以执行多个进程。他不必等到致命的慢速HDD控制器处理磁盘访问读取,CPU可以处理其他一些东西,直到磁盘访问完成(如果是这样,它本身会触发中断)。

     

通常,中断可以被其他中断(抢占)中断,这被称为“嵌套执行”。根据体系结构的不同,仍有一些关键功能必须通过完全禁用中断来不间断地运行(非抢占式)。在x86上,这些是一些与时间相关的函数(time.c,hpet.c)和一些xen的东西。

     

中断只有两个优先级:'启用所有中断'或者'禁用所有中断',所以我猜你的"高优先级中断"是第二个。这是Linux内核了解中断优先级的唯一行为,与实时扩展无关。

     

如果可中断的中断(您的"低优先级中断")被另一个中断("高"或"低")中断,内核将保存中断中断的旧执行代码并开始处理新中断。这个"嵌套"可以多次发生,因此可以创建多级中断的中断。然后,内核从旧中断重新加载保存的代码并尝试完成旧的中断。