这篇笔记记录了任务调度,任务切换,UCOSIII系统初始化和启动三个内容。
一、任务调度
任务调度就是中止当前正在运行的任务转而去执行其他的任务。
UCOSIII的内核是可剥夺的,也就是说,当高优先级的任务准备就绪时,此时发生了任务调度,那么CPU就会去执行这个高优先级的任务,感觉这个也和中断差不多。
UCOSIII中的任务调度需要使用到任务调度器,任务调度器其实就是函数,当你使用这个函数时就会发生任务调度,有两个:任务级调度器和中断级调度器。
任务级调度器:OSSched();
中断级调度器:OSIntExit();当推出外部中断服务函数时,需要使用中断级调度器。
二、任务调度点
任务调度点就是使用任务调度器的节点,也可以说任务切换的节点。
三、调度器的上锁和解锁
有时候我们并不希望发生任务调度,因为始终有一些代码的执行过程是不能被打断的。比如在任务初始化的时候,会用到timedelay,就会发生任务调度,但是我们初始化任务的时候并不希望发生任务调度,此时我们就可以使用函数OSSchedLock()对调度器加锁,当我们想要恢复任务调度的时候就可以使用函数OSSchedUnlock()给已经上锁的任务调度器解锁。
四、时间片轮转调度
时间片轮转调度也是任务调度的一种。
UCOSIII允许一个优先