ucos学习4

来源:互联网 发布:女包淘宝网 编辑:程序博客网 时间:2024/04/30 02:08

2.4

任务就绪表及人物调度

2.4.1

任务就绪表的结构

任务就绪表是任务调度的依据

 

任务就绪表:系统的每一个任务在表内都有一个位置,在这个位置上用10来表示该任务是否处于就绪状态

Ucosii上用数组OSRdyTbl[]来充当任务就绪表,最多可以记录32个就绪状态,1表示就绪,0表示非就绪。

2.4.3

任务的调度

中止当前任务而去运行另一个任务称为任务切换,而按某种规则进行切换称为任务的调度。

任务调度器的工作:(1)查找任务就绪表中具有最高优先级的就绪任务(2)实现任务的切换

Ucosii的调度器有两种:任务级的调度器和中断级的调度器

任务切换的步骤

(1)获得待运行就绪任务控制块的指针

 

(2)进行断点数据的切换

2任务切换宏OS_TASK_SW()

任务切换宏切换任务步骤

(1)把被终止任务的任务指针保存在任务堆栈

(2)cpu通用寄存器的内容保存到任务堆栈

(3)把被终止任务的任务指针的当前值保存到该任务的任务控制块中

(4)获得待运行的任务的任务控制块

(5)cpu通过任务控制块获得任务堆栈指针

(6)把待运行任务的任务堆栈中通用寄存器的数据恢复到cpu的通用寄存器中

(7)使cpu获得待运行任务的断点指针



 

任务就绪表:系统的每一个任务在表内都有一个位置,在这个位置上用10来表示该任务是否处于就绪状态

Ucosii上用数组OSRdyTbl[]来充当任务就绪表,最多可以记录32个就绪状态,1表示就绪,0表示非就绪。

2.4.3

任务的调度

中止当前任务而去运行另一个任务称为任务切换,而按某种规则进行切换称为任务的调度。

任务调度器的工作:(1)查找任务就绪表中具有最高优先级的就绪任务(2)实现任务的切换

Ucosii的调度器有两种:任务级的调度器和中断级的调度器

任务切换的步骤

(1)获得待运行就绪任务控制块的指针

 

(2)进行断点数据的切换

2任务切换宏OS_TASK_SW()

任务切换宏切换任务步骤

(1)把被终止任务的任务指针保存在任务堆栈

(2)cpu通用寄存器的内容保存到任务堆栈

(3)把被终止任务的任务指针的当前值保存到该任务的任务控制块中

(4)获得待运行的任务的任务控制块

(5)cpu通过任务控制块获得任务堆栈指针

(6)把待运行任务的任务堆栈中通用寄存器的数据恢复到cpu的通用寄存器中

(7)使cpu获得待运行任务的断点指针

1 0
原创粉丝点击