目录
一、任务概述
1.1进程与线程
进程主要包括下面内容:是一个正在执行的程序,可以分配给处理器,并由处理器执行的一个实体;由一个顺序的执行线程、一个当前状态和一组相关的系统资源所刻画的活动单元。
进程由代码、数据、堆栈和进程控制块PCB构成。进程控制块包含了操作系统用来控制进程所需要的信息,包括进程状态、调度信息、CPU寄存器信息、内存管理信息和IO状态信息。
早期进程定义是(资源)资源分配的基本单位,一个进程包括一个保存进程印像的虚拟地址空间、主存、I/O设备和文件等资源。(调度执行)进程作为OS调度实体,是调度的基本单位。
目前来说,轻量级进程或者线程是调度执行的单位;进程是资源分配的单位;线程是进程内部一个相对独立的控制流,由线程上下文和需要执行的一段程序指令构成。在进程中,所有线程共享该进程的状态和资源,可以访问相同的数据。
线程的优势: 创建终止时间快,切换时间快,线程间通信效率高,通信简单。
大多数嵌入式实时内核是单进程多线程模型,也就是任务模型。它把整个应用当作一个没有定义的进程对待,应用则被划分为多个任务的形式进行处理。适用于实时性比较高,相对简单的应用。
堆栈区别:
1、申请方式的不同。栈由系统自动分配,而堆是人为申请开辟;
2、申请大小的不同。栈获得的空间较小,而堆获得的空间较大;
3、申请效率的不同。栈由系统自动分配,速度较快,而堆一般速度比较慢;
4、存储内容的不同。栈在函数调用时,函数调用语句的下一条可执行语句的地址第一个进栈,然后函数的各个参数进栈,其中静态变量是不入栈的。而堆一般是在头部用一个字节存放堆的大小,堆中的具体内容是人为安排;
5、底层不同。栈是连续的空间,而堆是不连续的空间
1.2 任务
任务是嵌入式实时操作系统内核的基本调度单位。任务通常包含一个具有无限循环的程序。任务主要包括:
- 代码:一段可执行的程序
- 数据:程序所需要的相关数据(变量、工作空间、缓冲区等)
- 堆栈:局部变量,子程序调用,任务上下文等
- 程序所执行的上下文环境。
1.3 任务的特性
动态性:任务状态是不断变化的。一般分为就绪态、运行态、等待状态。在多任务系统中,任务的状态随着系统的需要不断进行变化
并发性(单CPU):系统中同时存在多个任务,这些任务在宏观上是同时运行的。
异步独立性: 每个任务各种按照相互独立的不可预知的速度运行,走走停停。
1.4任务的优点
- 任务的规模较小:每个任务更容易编码和调试,其质量也更容易得到保证
- 不少应用本身就是由多个任务构成的,如网络获取数据、计算和刷新显示屏幕,采用多任务处理的方式是应用问题的一个非常自然的解决方式
- 任务之间具有较高的独立性、耦合性小;通过增加新的任务就能方便的扩充系统功能
- 实时性强: 保证紧急事件优先处理成为可能
1.5 任务的分类
按到达情况的可预测性分为:周期任务和非周期任务。周期任务:每隔一个固定的时间间隔就会执行一次(时间片轮转也是一种周期任务)。非周期任务执行的间隔时间不确定。sporadic task有最小到达时间限制;aperiodic task:没有到达时间限制(事件触发(中断产生事件,外部信号产生事件))。
按照重要程度划分为关键任务和非关键任务。
1.6 任务参数
优先级、周期(周期值)、计算时间(任务运行时间)、就绪时间、截止时间。
(1)优先级:表示任务对应工作内容在处理上的优先程度,优先级越高表明任务越需要得到优先处理。任务的优先级分为静态优先级和动态优先级。静态优先级表示任务的优先级确定后,在系统运行过程中无法发生变化;动态优先级表示在系统运行过程中,任务优先级是可以动态变化。
(2)周期任务所具有的参数,表示任务周期性执行的间隔时间
(3)任务的计算时间:任务在特定硬件环境下被完整执行所需要的时间。通常用最坏情况下的执行时间或者统计时间来表示。
(4)截至时间:意味着任务需要在该时间到来之前被执行完成。截止时间分为绝对截止时间和相对截止时间。相对截止时间为任务的绝对截止时间减去任务的就绪时间。截止时间分为强截止时间(关键任务,强实时)和弱截止时间(弱实时系统)两种情况。
二、uCOS-II任务示例
三、uC/OS任务管理
3.1 任务状态机
任务拥有的资源是不断变化的,导致任务状态也表现出不断变化的特性。不同的实时内核对任务状态定义不尽相同,可以分为三种基本状态:
- 等待waiting:任务在等待某个事件的发生
- 就绪ready:任务等待获得处理器资源
- 执行running:任务获得CPU资源,所包含的代码正被执行
对于单处理器系统,任何时候只有一个任务在CPU中执行。无事时就运行空闲任务执行空操作。任何一个可以执行的任务必须处于就绪状态。调度程序从任务的就绪队列中选择下一个需要执行的任务。处于就绪状态的任务拥有除CPU以外的其他所有需要的资源。如果任务在需要等待I/O设备或者其他任务提供的数据,就处于等待状态。