软中断是中断处理的下半部。从其需求上就是不需要像硬中断的响应那么快。
查了些书,并未有详细描述硬中断是在何时执行,我觉得应该是在每个时钟信号结束之后吧。
而软中断只有在几个特定的时刻被激活:
1 do_IRQ()完成了中断处理的时候。
2 时钟中断到来后会执行软中断。
这也就是为什么软中断没有硬中断的实时性强的缘故把。
而内核的动态定时器就是由软中断来处理的,本地时钟中断中不会处理内核的定时器操作。而多核下,cpu本地的apic时钟中断都基于公共总线的时钟信号。因此每个cpu的本地apic都是同步的。
而内核的软中断是依赖于各个cpu的时钟中断的。
但是有一个问题,jiffilis值是由全局时钟中断维护还是本地的apic时钟中断维护呢?如果这个也是cpu本地的apic中断维护,那全局的时钟中断(PIC)有什么用呢?