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

问题描述 投票:2回答:2

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

linux linux-kernel scheduler schedule preemption
2个回答
0
投票

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

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

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.