Linux 是否使用嵌套中断?
我的意思是,例如,当从任何设备提供中断服务时,可以允许在此例程中进一步中断吗?或者它涉及上半部和下半部?
EDIT:
如果Linux使用嵌套中断,如何关心它们的堆栈?
是的,Linux 中断是可重入的。https://unix.stackexchange.com/a/7172/40346 https://unix.stackexchange.com/a/7172/40346
Linux 内核是可重入的(与所有 UNIX 内核一样),这意味着 CPU 可以执行多个进程。他不必等到磁盘访问读取被极其缓慢的 HDD 控制器处理,CPU 可以处理其他一些东西,直到磁盘访问完成(如果是这样,它本身将触发中断)。
一般来说,一个中断可以被另一个中断打断(抢占),这称为“嵌套执行”。根据架构的不同,仍然有一些关键功能必须通过完全禁用中断来不间断地运行(非抢占式)。在 x86 上,这些是一些与时间相关的函数(time.c、hpet.c)和一些 xen 的东西。
关于中断只有两个优先级:“启用所有中断”或“禁用所有中断”,所以我猜你的“高优先级中断”是第二个。这是 Linux 内核唯一知道的有关中断优先级的行为,与实时扩展无关。
如果可中断中断(“低优先级中断”)被其他中断(“高”或“低”)中断,内核将保存被中断中断的旧执行代码并开始处理新中断。这种“嵌套”可以发生多次,因此可以创建多个级别的中断。之后,内核从旧中断重新加载保存的代码,并尝试完成旧中断。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)