深入探究 Linux CPU 调度器
1. CONFIG_PREEMPT 与内核可抢占性
CONFIG_PREEMPT 用于实现低延迟(LowLat)内核,在这种内核中,几乎整个内核都是可抢占的。这意味着即使是内核代码路径也可能被非自愿地抢占。它能带来更低的延迟,平均延迟范围在几十微秒到几百微秒之间,但代价是吞吐量会略有降低,并且会有轻微的运行时开销。这种内核适用于快速多媒体系统,如桌面电脑、笔记本电脑,甚至现代嵌入式产品(智能手机、平板电脑等)。
内核的 Kconfig.preempt kbuild 配置文件包含了可抢占内核选项的相关菜单条目。
2. CPU 调度器入口点
核心内核调度函数 kernel/sched/core.c:__schedule() 前的详细注释非常值得一读,它指定了内核 CPU 调度器的所有可能入口点。以下是 __schedule() 函数的相关注释:
// kernel/sched/core.c
/*
* __schedule() is the main scheduler function.
* The main means of driving the scheduler and thus entering this
function are:
* 1. Explicit blocking: mutex, semaphore, waitqueue, etc.
*
* 2. TIF_NEED_RESCHED flag is checked on interr
超级会员免费看
订阅专栏 解锁全文
2364

被折叠的 条评论
为什么被折叠?



