二、时间片轮转调度(Round-Robin)
1. 工作原理
-
适用场景:多个相同优先级的任务需要公平共享CPU时间。
-
核心规则:
- 时间片划分:每个任务分配固定时间片(如10ms)。
- 轮转执行:
- 任务运行至时间片耗尽后,强制切换到下一个任务。
- 若任务提前主动释放CPU(如等待资源),则立即切换。
- 队列管理:所有同级任务按顺序循环执行。
-
特点
-
优点:保证同级任务公平性,避免单一任务饿死其他任务。
- 缺点:无法处理优先级差异,实时性较弱。
- 典型应用:后台日志记录、低优先级数据处理。
三、优先级抢占式调度(Priority Preemptive)
1. 工作原理
-
适用场景:任务优先级不同,高优先级任务需立即响应。
-
核心规则:
- 优先级排序:任务按优先级从高到低排列。
- 抢占触发:
- 高优先级任务就绪时,立即抢占当前低优先级任务的CPU。
- 中断唤醒高优先级任务时同理。
- 就绪队列管理:始终执行优先级最高的任务。
2. 特点
- 优点:确保高优先级任务实时响应,满足硬实时需求。
- 缺点:低优先级任务可能长期无法执行(需设计优先级继承机制防止反转)。
- 典型应用:紧急中断处理(如电机过载保护)、传感器实时采集。
四、两种调度策略的对比
特性 | 时间片轮转 | 优先级抢占 |
---|---|---|
设计目标 | 公平性 | 实时性 |
任务优先级 | 仅用于同级任务组内分配时间片 | 全局优先级排序 |
响应速度 | 延迟较高(时间片粒度) | 立即响应(微秒级) |
硬件依赖 | 需要定时器中断支持 | 依赖中断和优先级管理硬件 |
适用场景 | 非实时后台任务 | 实时关键任务 |
六、总结
- FreeRTOS是RTOS的一种具体实现,适用于资源受限的嵌入式场景。
- 时间片轮转保证公平,优先级抢占保证实时性,两者常结合使用。
- 优先级反转是抢占式调度的潜在风险,需通过优先级继承或天花板协议规避。