1. 系统初始化,然后开启任务调度器。此时执行的最高优先级的任务Task1,Task1会一直运行直到遇到系统阻塞式的API函数,比如延迟,事件标志等待,信号量等待,Task1任务会被挂起,也就是释放CPU的执行权,让低优先级的任务得到执行。
2. FreeRTOS操作系统继续执行任务就绪列表中下一个最高优先级的任务Task2,Task2执行过程中有两种情况:
a) Task1由于延迟时间到,接收到信号量消息等方面的原因,使得Task1从挂起状态恢复到就绪态,在抢占式调度器的作用下,Task2的执行会被Task1抢占。
b) Task2会一直运行直到遇到系统阻塞式的API函数,比如延迟,事件标志等待,信号量等待,Task2任务会被挂起,继而执行就绪列表中下一个最高优先级的任务。
3. 如果用户创建了多个任务并且采用抢占式调度器的话,基本都是按照上面两条来执行。根据抢占式调度器,当前的任务要么被高优先级任务抢占,要么通过调用阻塞式API来释放CPU使用权让低优先级任务执行,没有用户任务执行时就执行空闲任务。
|
非常不错的介绍