Mark Kang Asked: 2022-09-15 17:46:17 +0800 CST2022-09-15 17:46:17 +0800 CST 2022-09-15 17:46:17 +0800 CST 没有CONFIG_PREEMPT,内核不能抢占? 772 我检查了 CentOS 8/Redhat 8 和 Ubuntu 22.04,它们的默认内核设置 CONFIG_PREEMPT 都没有设置: CONFIG_PREEMPT is not set 在我的理解中,内核应该能够默认抢占。不是吗? linux kernel 1 个回答 Voted Best Answer larsks 2022-09-15T19:30:34+08:002022-09-15T19:30:34+08:00 您可以在此处CONFIG_PREEMPT阅读配置项的描述,其中显示: 此选项通过使所有内核代码(不在关键部分执行)可抢占来减少内核的延迟。这允许通过允许低优先级进程被非自愿地抢占来对交互事件做出反应,即使它在内核模式中执行系统调用并且否则将不会达到自然抢占点。这使得应用程序即使在系统处于负载下时也能更“流畅”地运行,但代价是吞吐量略低,内核代码的运行时开销也很小。 通常,只有用户空间代码是可抢占的。启用后,在CONFIG_PREEMPT内核空间中执行的代码也是可抢占的。
您可以在此处
CONFIG_PREEMPT
阅读配置项的描述,其中显示:通常,只有用户空间代码是可抢占的。启用后,在
CONFIG_PREEMPT
内核空间中执行的代码也是可抢占的。