Linux 同一个定时器中断能否并行发生?

Linux 同一个定时器中断能否并行发生?,linux,timer,kernel,isr,Linux,Timer,Kernel,Isr,我在内核模块中实现了一个定时器中断处理程序 此计时器中断处理程序需要大约1000个US才能运行 我希望这个计时器每10秒触发一次 (在这样做时,我希望同样的处理程序将并行执行。) (我知道这会产生巨大的中断开销,但我想在一些测试中实现它。) 但是这个处理程序似乎不是并行运行的 计时器中断似乎要等待正在进行的处理程序完成 同一个定时器中断能否并行发生 如果没有,是否有一种内核机制可以并行运行同一个处理程序?如果计时器每10us触发一次,并且需要1000us(1ms)才能完成,则需要100个专用cp

我在内核模块中实现了一个定时器中断处理程序

此计时器中断处理程序需要大约1000个US才能运行

我希望这个计时器每10秒触发一次

(在这样做时,我希望同样的处理程序将并行执行。)

(我知道这会产生巨大的中断开销,但我想在一些测试中实现它。)

但是这个处理程序似乎不是并行运行的

计时器中断似乎要等待正在进行的处理程序完成

同一个定时器中断能否并行发生


如果没有,是否有一种内核机制可以并行运行同一个处理程序?

如果计时器每10us触发一次,并且需要1000us(1ms)才能完成,则需要100个专用cpu才能勉强跟上计时器。简单的回答是不,中断系统不支持这个。如果中断递归,它将不可避免地消耗中断处理程序堆栈

中断通常通过在中断断言时直接调用一小段代码来工作。如果要做更多的工作,这个短位将安排一个较慢的位继续,并抑制这个中断源。这是为了将寻求cpu关注的不同设备造成的延迟降至最低。较慢的位在确定已满足设备请求时,可以重新启用来自该源的中断

[在linux中,短的一位称为上半部,慢的一位称为下半部。这有点令人困惑,因为在linux之前几十年的内核实现将其命名为完全相反。最好避免使用这些术语。]

获得您想要的效果的许多方法之一是让这个缓慢的处理程序释放一个信号量,然后重新启用中断。然后可以让适当数量的线程坐在一个循环中获取信号量,然后执行任务