Linux
沒有CONFIG_PREEMPT,核心不能搶占?
我檢查了 CentOS 8/Redhat 8 和 Ubuntu 22.04,它們的預設核心設置 CONFIG_PREEMPT 都沒有設置:
CONFIG_PREEMPT is not set
在我的理解中,核心應該能夠預設搶占。不是嗎?
您可以在此處
CONFIG_PREEMPT
閱讀配置項的描述,其中顯示:此選項通過使所有核心程式碼(不在關鍵部分執行)可搶占來減少核心的延遲。這允許通過允許低優先級程序被非自願地搶占來對互動事件做出反應,即使它在核心模式中執行系統呼叫並且否則將不會達到自然搶占點。這使得應用程序即使在系統處於負載下時也能更“流暢”地執行,但代價是吞吐量略低,核心程式碼的執行時成本也很小。
通常,只有使用者空間程式碼是可搶占的。啟用後,在
CONFIG_PREEMPT
核心空間中執行的程式碼也是可搶占的。