抢占式 vs 协作式调度模型
调度模型定义系统“CPU控制权归属方式”。 抢占式与协作式的核心区别在于:系统是否允许任务自行决定CPU释放时机。
一、调度模型本质:CPU控制权归属
调度模型的核心不是“任务如何切换”,而是“切换由谁决定”。
CPU 控制权:
内核控制 → 抢占式
任务控制 → 协作式
控制权决定时间边界
因此,yield()、阻塞调用与中断返回点,都是控制权交接位置。
二、抢占式调度(Preemptive)
抢占式调度由内核统一控制执行顺序,高优先级任务可随时中断低优先级任务。
[抢占式]
高优先级任务触发
↓
强制切换当前任务
内核决定执行顺序
本质:控制权始终在内核,不依赖任务行为。
时间控制
由内核统一控制任务切换。
实时性
可保证高优先级任务快速响应。
复杂度
需要处理并发与优先级问题。
确定性
具备可分析的时间上界。
三、协作式调度(Cooperative)
协作式调度依赖任务主动释放CPU,内核不会强制中断执行。
[协作式]
任务运行 → 必须 yield()
不让出CPU → 系统无法切换
系统行为取决于任务是否“自律”。
执行方式
任务主动让出CPU。
实现复杂度
简单,但依赖规范约束。
风险
单任务阻塞可拖垮系统。
实时性
无法保证严格时间上界。
四、本质差异
抢占式:内核控制执行
协作式:任务参与控制
差异 = 控制权位置不同
不是性能差异,而是系统控制模型差异。
五、RTOS影响
抢占式
适用于硬实时系统。
协作式
适用于简单嵌入式系统。
风险
内核复杂 vs 任务失控。
确定性
抢占式具备可证明上界。
六、结论
抢占式 = 受控系统
协作式 = 自管理系统
HRTOS默认采用抢占式调度,因为实时系统的核心是“时间可证明性”。
七、RTOS执行链路
调度模型处于RTOS执行流程核心位置。
Interrupt → 状态变化 → 调度决策 → 模型 → 切换 → 执行
模型决定“何时切换”,切换决定“如何执行”。