加载中...

内核抢占指任务在内核态执行(如处理系统调用)期间也可以被调度器打断、切换到更高优先级任务的能力。早期 Linux 内核不可抢占,任务进入内核后必须运行到主动让出为止,导致延迟不可控。
Linux 2.6 引入可抢占内核:只要当前代码未持有自旋锁(抢占计数为零),中断返回时即可发生抢占。内核提供多种抢占模型:PREEMPT_NONE(吞吐优先,服务器)、PREEMPT_VOLUNTARY(在既定点自愿让出,桌面折中)、PREEMPT(完全抢占,低延迟)。
实时补丁 PREEMPT_RT 把绝大多数自旋锁改为可睡眠的实时互斥锁、将中断处理线程化,使内核几乎处处可抢占,调度延迟可控制在数十微秒级,服务于工业控制与音频等硬实时场景;该补丁历经二十年开发,于 2024 年正式并入主线。
抢占模型的选择体现了吞吐与延迟的经典权衡,是内核配置调优的重要维度。

登录 后参与讨论
暂无讨论,来发表第一条评论吧