文档介绍:1
2017/11/14
嵌入式实时操作系统
μC/OS-II
2017/11/14
2
第2章 uC/OS-II中的任务
山东科技大学信息学院
3
2017/11/14
第2章目录
1、任务的基本概念
2、任务堆栈
3、任务控制块及任务控制块链表
4、任务就绪表及任务调度
5、任务的创建
6、任务的挂起和恢复
7、其他任务管理函数
8、uC/OS-II的初始化和任务的启动
山东科技大学信息学院
4
2017/11/14
1、任务的特性
2、任务的划分目标
3、任务的划分方法
4、任务的可调度性分析
5、任务的执行分类和优先级安排
6、任务设计中的问题
7、系统设计编码实现过程
8、中断服务程序的设计
山东科技大学信息学院
5
2017/11/14
第2章目录
1、任务的基本概念
2、任务堆栈
3、任务控制块及任务控制块链表
4、任务就绪表及任务调度
5、任务的创建
6、任务的挂起和恢复
7、其他任务管理函数
8、uC/OS-II的初始化和任务的启动
山东科技大学信息学院
6
2017/11/14
任务的基本概念
复杂问题“分而治之”的问题解题思路。
针对目标系统拆分后的“小且易”的问题的具体处理方法编码和数据结构---- 任务。
uC/OS-II的两种任务:系统任务、用户任务。
任务的组成:
任务控制块---- uC/OS-II进行任务管理用的一个数据结构。
任务代码---- 描述任务算法的程序编码。
任务堆栈---- 任务的工作现场环境。
山东科技大学信息学院
7
2017/11/14
任务的基本概念
山东科技大学信息学院
8
2017/11/14
任务的基本概念
“宏观”上的多任务并发,实际上是用单 CPU 进行多任务处理,“微观”任何时刻,只能运行一个任务,存在CPU资源竞争---- 任务调度、任务现场。
各个任务在多任务系统中也随着环境条件的情况而具有不同的状态。
任务状态划分也是多任务操作系统的管理手段。
任务的 5 种状态:
Sleep ---- 仅有编码未激活。
Ready ---- 已激活并“万事俱备,只欠调度”
Running ---- 正占用 CPU 运行自己。
Wait ---- 等待某事件发生。
ISR_Sta ---- Running状态的任务被中断后进入的状态。
山东科技大学信息学院
9
2017/11/14
任务的状态及其转换
正在运行的任务,需要等待一段时间或需要等待一个事件发生再运行时,该任务就会把CPU的使用权让给别的任务而使任务进入等待状态。
任务在没有被配备任务控制块或被剥夺了任务控制块时的状态叫做任务的睡眠状态
系统为任务配备了任务控制块且在任务就绪表中进行了就绪登记,这时任务的状态叫做就绪状态。
处于就绪状态的任务如果经调度器判断获得了CPU的使用权,则任务就进入运行状态
一个正在运行的任务一旦响应中断申请就会中止运行而去执行中断服务程序,这时任务的状态叫做中断服务状态
山东科技大学信息学院
10
2017/11/14
用户任务代码的一般结构
void MyTask(void *pdata)
{ ……// 任务的初始化
for ( ; ; ) //超循环构成任务体
{
可被中断的用户代码片断;
OS_ENTER_CRITICAL(); //进入临界区(关中断)
不可被中断的用户代码片断;
OS_EXIT_CRITICAL(); //退出临界区(开中断)
可被中断的用户代码片断;
}
}