【转】内核抢占的理解
0赞
发表于 11/10/2016 11:25:37 AM
阅读(970)
内核是否能被抢占在内核编译的时候是可选的
看了《深入理解linux内核》一书,作者认为很难对内核抢占下一个定义,我也不想强行下一个定义,始终是新手嘛,那就说一下内核抢占的现象,通过现象来理解内核抢占机制
内核抢占的一个现象:正在内核态运行的进程。可能在运行期间被另外一个进程替代。
上述现象是允许内核抢占的情况,但并不能说内核抢占就是上述现象,大家都知道在执行中断处理程序的时候,是不能被别的进程抢到当前中断处理程序拥有的cpu的,这就是个例外。
总结一下,在允许内核抢占的情况下,下列情况不允许内核抢占:
- 内核正在执行中断处理程序
- 可延迟函数被禁止(当内核在执行软中断或tasklet的时候时常如此)
- 直接把抢占计数器preempt_count置为正数,从而显式的进制内核抢占
关于内核抢占计数器变化之后的调度详见下图