调度时机
单核模式下,RTOS允许高优先级任务被唤醒的时候立即得到执行
我们之前在Linux的时候得到的结论是,高优先级任务挂到就绪队列上了,但是并不一定能够马上得到执行的,还是要等到tick到了,在内核模式下切换任务
这里我们换个角度想想,什么情况下,高优先级任务会挂就绪队列上?释放信号量、发消息队列了、解锁了,这种“系统调用服务”进入到内核态的时候,就会把等待这些东西的任务挂到就绪队列上,而这也正是可以产生调度的时机(进入内核态了嘛),于是就有了这句话:高优先级任务被唤醒的时候立即得到执行,而不需要等到tick来临时的那个调度点
这句话看起来是异步行为,但实际上是同步的,因为释放信号量、发消息队列了、解锁等行为就是主动进行的
RTOS调度策略组合
-
A:可抢占+时间片轮转+空闲任务让步
-
B:可抢占+时间片轮转+空闲任务不让步
-
C:可抢占+非时间片轮转+空闲任务让步
-
D:可抢占+非时间片轮转+空闲任务不让步
-
E:合作调度