调度程序或某些关键内核线程是否可以在可抢占的Linux内核中被抢占?在中断处理程序(上半部分或下半部分)中怎么办?
答案 0 :(得分:0)
任何内核线程或一般来说代码的任何部分都可以被抢占:
所以是的,甚至调度程序也可以被硬件中断抢占。
答案 1 :(得分:0)
内核调用__schedule()进行实际的上下文切换。它总是在禁用抢占的情况下调用它。您可以搜索呼叫者,并在呼叫preempt_disable
之前注意到已呼叫__schedule
。因此,它不能被抢占。
此外,不能抢占中断处理程序。抢占在这里被禁用。但是linux内核是可抢占的,这意味着可以安全地抢占内核线程和其他代码。