James Bryant

【转】内核抢占的理解

0
阅读(970)

内核是否能被抢占在内核编译的时候是可选的

看了《深入理解linux内核》一书,作者认为很难对内核抢占下一个定义,我也不想强行下一个定义,始终是新手嘛,那就说一下内核抢占的现象,通过现象来理解内核抢占机制

内核抢占的一个现象:正在内核态运行的进程。可能在运行期间被另外一个进程替代。

上述现象是允许内核抢占的情况,但并不能说内核抢占就是上述现象,大家都知道在执行中断处理程序的时候,是不能被别的进程抢到当前中断处理程序拥有的cpu的,这就是个例外。

总结一下,在允许内核抢占的情况下,下列情况不允许内核抢占:

  1. 内核正在执行中断处理程序
  2. 可延迟函数被禁止(当内核在执行软中断或tasklet的时候时常如此)
  3. 直接把抢占计数器preempt_count置为正数,从而显式的进制内核抢占

关于内核抢占计数器变化之后的调度详见下图

Baidu
map