【UCOSIII内核学习】
UCOSIII中将已经就绪的任务放到任务就绪表里:优先级映射表和就绪任务列表
在优先级映射表中,bit31代表优先级0,因为这样通过计算前导零CLZ来找到最高优
先级任务。
在就绪任务列表中,通过数组OSRdyList[]来管理相同的或者不同的优先级下的各个
任务,譬如OSRdyList[4]就是管理优先级4下面的各个任务,这些任务间通过OSTCB
控制块的前后指针连接,形成链表。
UCOSIII自带的五个系统任务,空闲任务,时钟节拍任务,统计任务,定时任务,
中断服务管理任务。
UCOSIII任务调度:可剥夺型调度(任务级调度器和中断级调度器),时间片轮转调
度(调度在多个任务拥有相同的优先级下,可以设置单个时间片长度,也可以设置跳
过本次时间片调度)。
任务API
OSTaskDel()虽然允许用户自己来删除不想运行的任务,但是还是应该避免
这种操作,因为若任务A占有信号量X,删除A后,不释放X,则其他任务会因为无法得
到X而出现奇怪的情况。
OSTaskSuspend()和OSTaskResume()
UCOSIII中将已经就绪的任务放到任务就绪表里:优先级映射表和就绪任务列表
在优先级映射表中,bit31代表优先级0,因为这样通过计算前导零CLZ来找到最高优
先级任务。
在就绪任务列表中,通过数组OSRdyList[]来管理相同的或者不同的优先级下的各个
任务,譬如OSRdyList[4]就是管理优先级4下面的各个任务,这些任务间通过OSTCB
控制块的前后指针连接,形成链表。
UCOSIII自带的五个系统任务,空闲任务,时钟节拍任务,统计任务,定时任务,
中断服务管理任务。
UCOSIII任务调度:可剥夺型调度(任务级调度器和中断级调度器),时间片轮转调
度(调度在多个任务拥有相同的优先级下,可以设置单个时间片长度,也可以设置跳
过本次时间片调度)。
任务API
OSTaskDel()虽然允许用户自己来删除不想运行的任务,但是还是应该避免
这种操作,因为若任务A占有信号量X,删除A后,不释放X,则其他任务会因为无法得
到X而出现奇怪的情况。
OSTaskSuspend()和OSTaskResume()