ucos-III任务管理总结

    xiaoxiao2022-06-22  17

    引言

    我第一次听到操作系统这个概念的时候,感觉很抽象,理解不了。虽然生活中常常提到Windows操作系统,安卓操作系统,IOS操作系统,可是从技术层面上讲,究竟什么才是操作系统。我开始把操作系统理解成不同的规则,想要在这个操作系统下运行的程序就要遵守这个操作系统的规则。后来又把操作系统理解成管家,用来管理这些程序。假如你就是CPU的话,任务就是你要做的事,操作系统就是你的管家秘书,安排你的行程,使你工作更有效率。作为一只程序猿,其实这些操作系统就只是代码而已。看这些代码需要的C语言基础:数组、结构体、函数、指针、链表。请重点学习一下这些部分。

    任务管理

    操作系统里的任务其实就是各种程序,每个人物都要包括堆栈、控制块、函数三个部分。

    任务堆栈

    堆栈其实就是数组,用来保存被中断的任务的工作环境,当中断结束后,还原该任务的工作现场,继续工作。

    任务栈的创建

    每个任务都有自己的堆栈,穿件堆栈分为两个部分,首先确定栈的大小,然后定义是哪个任务的栈。 # define START_STK_SIZE 512;//栈的大小 CPU_STK START_TASK_STK(START_STK_SIZE);//任务堆栈

    堆栈的使用

    OSTASKCreate()函数中调用了堆栈,具体函数代码请查阅《UC/OS-III参考手册》。

    任务控制块

    任务控制块实际上是一个结构体,用来描述任务的属性,用户不能直接访问该结构体的成员,有一些成员需要条件编译。具体的成员含义参考《 UC/OS-III参考手册

    初始化

    任务控制块的初始化在 OSTASKCreate()函数中实现,具体代码参考《UC/OS-III参考手册》。

    任务函数

    任务函数由用户编写,是用来实现你想实现的功能。 void XXX_Task(void *p_arg) { while { ......;//任务处理过程 } }

    其他

    系统任务:空闲任务、时钟节拍任务、统计任务、定时任务、中断服务管理任务; 任务状态:休眠、就绪、运行、等待、中断。五个任务之间的转换参考《嵌入式实时操作系统UC/OS-III》的60页。 任务就绪表:简单理解成找到优先级最高的任务,而且按照优先级排好了先后运行顺序。 更多精彩内容,欢迎关注微信公众号【跟单片机谈恋爱】
    转载请注明原文地址: https://ju.6miu.com/read-1122676.html

    最新回复(0)