一尘不染

softirq和tasklet在哪个上下文中?

linux

我知道有进程上下文和中断上下文,但是我不知道在执行softirq或tasklet时会在哪个上下文下运行。

我已经看到有些人使用“下半上下文”一词,如果有这样的话,与其他人相比有什么区别。

softirq和tasklet的另一个问题是为什么执行期间不允许睡眠?

谁能帮助我确定这些问题,谢谢!


阅读 219

收藏
2020-06-07

共1个答案

一尘不染

softirq和tasklet都是下半部机制。不允许睡眠,因为它们在中断上下文而不是进程上下文下运行。如果允许睡眠,那么linux无法调度它们,并最终导致dequeue_task错误的内核崩溃。中断上下文甚至没有描述寄存器信息的数据结构,因此Linux绝对不能调度它们。如果将其设计为具有该结构并可以对其进行调度,则将影响中断处理过程的性能。

2020-06-07