1. uC/OS-II是一个简洁、易用的基于优先级的嵌入式【抢占式】多任务实时内核
2. 任务是一个无返回的无穷循环
uc/os-ii 总是运行进入就绪状态的【最高优先级】的任务
3. 因为 uc/os-ii 总是运行进入就绪状态的最高优先级的任务
所以,确定哪个任务优先级最高,下面该哪个任务运行,这个工作就是由【调度器(scheduler )】来完成的
4. 【 任务级】的调度是由函数OSSched() 完成的,而【中断级】的调度是由函数OSIntExt() 完成
对于OSSched() ,它内部调用的是【OS_TASK_SW()】 完成实际的调度;OSIntExt() 内部调用的是【OSCtxSw() 】实现调度
5. 任务切换其实很简单,由如下2 步完成:(1)将被挂起任务的处理器寄存器推入自己的【任务堆栈】
(2)然后将进入就绪状态的最高优先级的任务的寄存器值从堆栈中恢复到【寄存器】中
6. 任务的 5 种状态
【睡眠态 (task dormat) 】:任务驻留于程序空间(rom 或 ram )中,暂时没交给ucos-ii 处理
【就绪态( task ready )】:任务一旦建立,这个任务就进入了就绪态
【运行态( task running )】:调用OSStart ()可以启动多任务
OSStart ()函数只能调用一次,一旦调用,系统将运行进入就绪态并且优先级最高的任务
【等待状态( task waiting )】:正在运行的任务,通过延迟函数或pend (挂起)相关函数后,将进入等待状态
【中断状态( ISR running )】:正在运行的任务是可以被中断的,除非该任务将中断关闭或者ucos-ii 将中断关闭
7.【 不可剥夺型】内核要求每个任务自我放弃CPU 的所有权
不可剥夺型调度法也称作合作型多任务,各个任务彼此合作共享一个 CPU
8.当系统响应