RTOS中常用的调度方法
- 抢占式调度:总是在任务切换时进入就绪态的最高优先级任务执行,若该任务挂起(延时,等待信号量)则进入仅次于该任务优先级的任务,直到该挂起任务等待完成。该调度方式要求每个任务都需要有自己的优先级,能够保证任务的高实时性,但是每次切换保存上下文增加了CPU和内存的负担。
- 时间片调度:每各一段时间进行一次任务切换,每个任务在执行满一段指定的时间之后即切换到另一个任务(确定下一个任务的算法各异),如果任务挂起则提前切换。该调度方式可与抢占式一起使用,适用于不要求任务实时响应的情况。
- 合作式调度:每次执行完一个任务后从任务列表(函数指针数组)中取出下一个任务执行,通过CPU在主循环里轮询完成。这种调度方式实时性低,并且当前执行任务不能被打断,但是调度算法简单,只需要使用一个Timer定时刷新任务状态,调度开销低。