内核抢占的理解

摘要

内核是否能被抢占在内核编译的时候是可选的,看了《深入理解Linux内核》一书,作者认为很难对内核抢占下一个定义 […]

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

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

深入理解Linux内核(第三版)(英文版+中文版)  下载见 http://www.searu.org/2011-08/41228.htm

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

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

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

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

内核抢占的理解

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: