硬件中断返回前会执行软中断,此时仍然处于中断上下文中。如果此时正在执行其它软中断,则不再执行该软中断。...如果在某些重要的点上内核停用了硬件中断, 以保证一次性完成相关的处理, 那么抢占也是不可能的.irqs_disabled会检测是否停用了中断....在内核重调度之后, 代码流程回到当前进程, 那么就井抢占计数器减少1.
4.2.2 中断之后返回内核态时通过preempt_schedule_irq触发
上面preempt_schedule只是触发内核抢占的一种方法...如果处理器在处理中断请求后返回内核态(返回用户态则没有影响), 特定体系结构的汇编例程会检查抢占计数器是否为0, 即是否允许抢占, 以及是否设置了重调度标识, 类似于preempt_schedule的处理...用户抢占
一般来说, 当进程从系统调用或者从中断(异常)处理程序返回用户空间时会触发主调度器进行用户抢占
从系统调用返回用户空间
从中断(异常)处理程序返回用户空间
为了对一个进程需要被调度进行标记,