您的位置:首页 > 其它

uc/os-iii学习笔记-任务管理

2016-07-13 16:39 323 查看
记了几篇笔记后发现,基本就是在抄书,而且由于本人绘图能力有限,也无法贴上图表去说明,可能导致后来的读者完全摸不清头脑,所以再次声明,本人只是在给自己做知识点笔记,相关图标和介绍请阅读书籍《嵌入式实时操作系统us/os-iii》

任务管理

任务创建

任务需要创建,当创建任务时,必须制定该任务使用的任务控制块的地址,任务的优先级,任务堆栈所在的RAM区以及一些其他参数。具体在
OS_Create();
函数中。

ucos-iii最多会创建五个系统任务:空闲任务,时钟节拍任务,统计任务,中断服务管理任务和定时器任务。空闲任务和时钟节拍任务是必须要创建的任务。

`void  OSTaskCreate (OS_TCB        *p_tcb,
CPU_CHAR      *p_name,
OS_TASK_PTR    p_task,
void          *p_arg,
OS_PRIO        prio,
CPU_STK       *p_stk_base,
CPU_STK_SIZE   stk_limit,
CPU_STK_SIZE   stk_size,
OS_MSG_QTY     q_size,
OS_TICK        time_quanta,
void          *p_ext,
OS_OPT         opt,
OS_ERR        *p_err)


多任务管理其实就是在多个任务间调度和切换CPU使用权的过程。

在任务的相继执行过程中,CPU的使用权在任务间不断切换,多任务管理系统看起来就像有多个CPU在执行多个任务,实际上这也是使CPU得到最大化利用。

任务的类型有两种:运行至完成型 、 无限循环型,嵌入式系统中的任务大都是无限循环型。

运行至完成型:必须通过
OSTaskDel();
函数将自己删除,由于运行的 时候创建和删除任务会带来一定的开销,因此,在嵌入式系统中,最好不要有很多这样的任务。

任务可以创建其他任务,也可以挂起和恢复其他的任务,向其他任务发信号量和消息,与其他任务共享资源等。

最为嵌入式操作系统的一个通用规则,不要使用递归调用。

任务状态:可剥夺!可剥夺!可剥夺!重要的事情说三遍!

用户角度看,任务的状态共有五种:休眠态、就绪态、运行态、等待态、中断服务态;

休眠态:指任务已存在寄存器中,但不受系统的管理,可以通过OSTaskCreate();创建任务接收系统的管理,当不需要这个任务时,可以调用OSTaskCreate();删除任务,删除实际上是使该代码无法获得CPU的使用权。

就绪态:任务准备运行时,就进入了就绪态,任务就绪表根据任务的优先级顺序对任务进行排序。

运行态:CPU会调用当前就绪态中优先级最高的任务,使其获得CPU的使用权,但是此时如果有更高优先级的任务就绪,CPU会立即收回任务,调用更高优先级的任务,使其获得CPU的使用权。

等待态:当用户调用使其进入等待某个事件的函数时,任务就会进入等待态,并自动放入等代表,直到其等待的事件发生,就会自动进入就绪态,并放入就绪表,当ucos-iii系统服务会判断这个就绪任务的优先级是否最高,如果是,CPU会剥夺当前的任务的CPU使用权,而刚就绪的任务会获得CPU的使用权。

中断服务态:CPU允许中断,当中断发生,由于中断服务程序的优先级最高,所以CPU会保存当前正在运行的任务的状态,然后进入中断服务程序,中断服务程序推荐写的尽量的少,最好只是发送某个消息、信号,某个任务在消息队列中收到消息后,任务会进入就绪态,此时中断服务程序结束,CPU查看任务就绪表中是否有更高优先级任务就绪,如果有,更高优先级的任务会进入到运行态,CPU会进入到更高优先级任务运行,如果就绪表中没有更高优先级的任务,CPU会恢复到之前运行的任务的状态,恢复现场,回到之前运行的任务继续运行。



任务如果调用了OSTimaeDly();或者OSTimeDlyHMSM();,任务可以让自己延时一段时间,此时任务会进入就绪态,CPU会立即运行下一个更高优先级的任务,不会浪费时间在延时上,当延时结束,CPU判断该任务是否是最高优先级的任务,如果是就继续运行,如果不是就会进入就绪态,等待运行。OSTimeDlyResume();的调用也会结束延时状态。

任务既可以被自身挂起,也可以被其他任务挂起。

任务控制块

uC/OS-III是如何生成任务控制块的实体的呢?答案很简单,uC/OS-II是以结构体数组的形式生成了任务控制块的实体。具体在os.h的
struct os_tcb {}
结构体中,各个参数的意思我就不一一说明了,感兴趣的可以自己看看。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  os