在处理tasklet时,中断是否被禁用,因为它们应该在中断上下文中运行。如果在处理tasklet时中断,那么将它们称为下半部分机制有什么意义,因为它与禁用中断的顶部情况相同。 或者,tasklet 是否仅在多处理器系统上有用,其中中断在一个处理器上生成,而相应的 tasklet 被调度到另一个处理器上,当 tasklet 运行时,中断在另一个处理器上被禁用。 请澄清。
最佳答案
Linux 将中断处理分为两部分:
- 首先,以尽可能简单的方式处理中断请求 (IRQ),尽可能少地执行操作,并调度一个 softirq/tasklet 来执行较繁重的处理部分。
- 然后,软中断/tasklet 被调度,繁重的处理开始。
Linux 中的上下文是:
- NMI 上下文
- hardirq context:上面中断处理的第一部分。
软中断上下文:上面中断处理的第二部分。
中断上下文:以上任何一个。
进程/用户上下文:代表进程运行,例如:由于系统调用。与中断上下文相反。
原子上下文:中断上下文,或者在必须是原子的(不能被中断)的代码段中的进程上下文中,例如:因为我们采用了自旋锁。
运行小线程时不会禁用中断。同一tasklet的进一步调用是。
关于linux - Tasklet 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12437291/