-2

处理小任务时是否禁用中断,因为它们应该在中断上下文中运行。如果在处理小任务时它们被禁用,那么调用它们的下半部分机制有什么意义,因为它与中断的顶部相同禁用。或者它是否像 tasklet 仅在多处理器系统上有用,其中在一个处理器上生成中断,并且在另一个处理器上调度相应的 tasklet,当 tasklet 运行时,在另一个处理器上禁用中断。请说清楚。

4

1 回答 1

0

Linux将中断处理分为两部分:

  • 首先,您以尽可能简单的方式处理中断请求 (IRQ),尽可能少做,并安排一个 softirq/tasklet 来完成较重的处理部分。
  • 然后,softirq/tasklet 被调度,繁重的处理开始。

Linux 中的上下文是:

  • NMI 上下文
  • hardirq context:上面中断处理的第一部分。
  • softirq context:上面中断处理的第二部分。

  • 中断上下文:以上任何一种。

  • 进程/用户上下文:代表进程运行,例如:由于系统调用。与中断上下文相反。

  • 原子上下文:中断上下文,或者在一段代码中的进程上下文中必须是原子的(不能被中断),例如:因为我们采用了自旋锁。

运行 tasklet 时不会禁用中断。对同一 tasklet 的进一步调用是。

于 2012-09-15T14:16:48.763 回答