调度程序或某些关键内核线程是否可以在可抢占的Linux内核中被抢占?

时间:2015-01-19 05:54:01

标签: linux linux-kernel scheduler schedule preemption

调度程序或某些关键内核线程是否可以在可抢占的Linux内核中被抢占?在中断处理程序(上半部分或下半部分)中怎么办?

2 个答案:

答案 0 :(得分:0)

任何内核线程或一般来说代码的任何部分都可以被抢占:

  • 通过更高优先级的线程
  • 虽然不在防止中断和抢占的部分

所以是的,甚至调度程序也可以被硬件中断抢占。

答案 1 :(得分:0)

内核调用__schedule()进行实际的上下文切换。它总是在禁用抢占的情况下调用它。您可以搜索呼叫者,并在呼叫preempt_disable之前注意到已呼叫__schedule。因此,它不能被抢占。

此外,不能抢占中断处理程序。抢占在这里被禁用。但是linux内核是可抢占的,这意味着可以安全地抢占内核线程和其他代码。