Linux

沒有CONFIG_PREEMPT,核心不能搶占?

  • September 15, 2022

我檢查了 CentOS 8/Redhat 8 和 Ubuntu 22.04,它們的預設核心設置 CONFIG_PREEMPT 都沒有設置:

CONFIG_PREEMPT is not set

在我的理解中,核心應該能夠預設搶占。不是嗎?

您可以在此處CONFIG_PREEMPT閱讀配置項的描述,其中顯示:

此選項通過使所有核心程式碼(不在關鍵部分執行)可搶占來減少核心的延遲。這允許通過允許低優先級程序被非自願地搶占來對互動事件做出反應,即使它在核心模式中執行系統呼叫並且否則將不會達到自然搶占點。這使得應用程序即使在系統處於負載下時也能更“流暢”地執行,但代價是吞吐量略低,核心程式碼的執行時成本也很小。

通常,只有使用者空間程式碼是可搶占的。啟用後,在CONFIG_PREEMPT核心空間中執行的程式碼也是可搶占的。

引用自:https://unix.stackexchange.com/questions/717343