第三章 μC/OS-Ⅱ中的任务
μC/OS-Ⅱ操作系统内核的主要工作就是对任务的调度和管理。
3.1 任务的基本概念
3.1.1 任务及其内存结构
将大任务分解为多个小任务,可以使系统并发地运行多个任务,提高处理器的利用率,加快程序的执行速度,现代操作系统大多是多任务操作系统。
在μC/OS-Ⅱ中,小任务对应的程序实体为“任务”,μC/OS-Ⅱ是能对小任务进行管理和调度的多任务操作系统。
从代码上来看,μC/OS-Ⅱ的任务是一个函数;
从存储结构上看,μC/OS-Ⅱ由三部分组成:
任务程序代码(函数): 任务的执行部分
任务堆栈:保存任务的工作变量
任务控制块:记录任务的各个操作
进程:具有私有空间的任务
线程:没有私有空间的任务
μC/OS-Ⅱ中的任务属于线程。
μC/OS-Ⅱ中的任务(最多64个):用户任务和系统任务
用户任务:由应用程序设计者编写
系统任务:由系统提供
3.1.2 任务的状态
μC/OS-Ⅱ任务的5钟状态:睡眠、就绪、运行、等待和中断服务
睡眠:以代码的形式留在ROM或RAM中,没有被配置任务控制块或被剥夺了任务控制块。
就绪:配备了任务控制块并在任务就绪表中就绪登记,具备运行的充分条件。
运行:处于就绪状态,经调制器判断获得了CPU的使用权。
等待:正在运行的任务,等待一段时间或等待一个事件发生后再运行。
中断服务:正在运行的任务响应中断申请中止去执行中断服务程序。
3.1.3 用户任务代码的一般结构
1. 用户任务代码的一般结构
void MyTask(void *pdata)
{
for(;;)
{
可以被中断的用户代码;
OS_ENTER_CRITICAL();//进入临界段(关中断)
不可以被中断的用户代码;
OS_EXIT_CRITICAL();//退出临界段(开中断)
可以被中断的用户代码;
}
}
2. 用户应用程序的一般结构
用户任务不是由主函数调用的函数,在系统中它与主函数处于平等地位,主函数负责创建任务并将它们交给系统,由系统决定何时被运行和被中止。
OS_TASKCreate()是创建任务的函数,OSStart()是启动μC/OS-Ⅱ的函数。
3.