任务调度 P59
在多任务系统中,令CPU中止当前正在运行的任务转而去运行另一个任务的工作叫做任务切换,而按某种规则进行任务切换的工作叫做任务调度
在uC/OS_Ⅱ中,任务调度器的主要工作有1在任务就绪表中查找具有最高优先级的就绪任务2实现任务切换。
在uC/OS_Ⅱ中,两种调度器一种任务级的调度器(OSSched()),另一种是中断级的调度器(OSIntExt())
调度器主要工作:获得待运行任务的任务模块指针和当前任务的任务模块指针
任务切换OSCtxSw()工作:
1 把被中止任务的断点指针保存到任务堆栈中
2 把CPU通用寄存器的内容保存到任务堆栈中
3 把被中止任务的任务堆栈指针当前值保存到该任务的任务控制模块的OSTCBStkPtr中
4获得待运行任务的任务控制块
5 使CPU通过任务控制块获得待运行任务的任务堆栈指针
6 把待运行任务堆栈中通用寄存器的内容恢复到CUP的通用寄存器中
7 使CPU获得待运行任务的断点指针