调度程序或一些关键的内核线程可以在可抢占的 Linux 内核中被抢占吗?在中断处理程序(上半部分或下半部分)中呢?
问问题
493 次
2 回答
1
内核调用__schedule()来进行实际的上下文切换。它总是在禁用抢占的情况下调用它。preempt_disable
您可以在呼叫前搜索呼叫者并注意呼叫__schedule
。所以,它不能被抢占。
此外,中断处理程序不能被抢占。此处禁用抢占。但是 linux 内核是可抢占的,这意味着内核线程和其他代码可以在安全的情况下被抢占。
于 2019-04-11T05:47:57.307 回答
0
任何内核线程或一般来说代码的任何部分都可以被抢占:
- 通过更高优先级的线程
- 虽然不在保护免受中断和抢占的部分
所以是的,即使调度程序也可以被硬件中断抢占。
于 2015-01-19T11:25:21.027 回答