当前位置:文档之家› 第05章 嵌入式任务管理与调度

第05章 嵌入式任务管理与调度


• 在单处理器系统中:
– 任何时刻都只有一个任务在CPU中执行 • 如果没有任何事情可做,就运行空闲任务执行空 操作。 – 任何一个可以执行的任务都必须处于就绪状态 • 调度程序从任务的就绪队列中选择下一个需要执 行的任务。 • 处于就绪状态的任务,已经拥有除CPU以外的其 他所有需要的资源。 – 任务还可能处于等待状态 • 如果任务在需要等待I/O设备或其他任务提供的数 据,而数据又还没有到达该任务的情况下,就处 于等待状态。
–单进程/单线程模型(如MS-DOS):整个系统只 有一个进程、一个线程 –单进程/多线程模型:在单进程/多线程模型中,整 个系统有一个进程、多个线程 –多进程/单线程模型(如传统的UNIX):在多进程/ 单线程模型中,整个系统有多个进程,每个进程只 有一个线程 –多进程/多线程模型(如Windows NT、Solaris、 Mach等):在多进程/多线程模型中,系统有多个 进程,每个进程又可包含多个线程
第五章 任务管理与调度
5.1 概述 采用多任务的好处(Multi-Tasking):
– 任务的规模较小 • 每个任务更容易编码和调试,其质量更容易得到保 证。 – 不少应用本身就是由多个任务构成的 • 一个应用可能需要进行以下任务的处理:计算、从 网络获取数据和刷新显示。 • 采用多任务的处理方式是应用问题的一个非常自然 的解决方式。 – 任务之间具有较高的独立性,耦合性小 • 通过增加新的任务就能方便的扩充系统功能 – 实时性强 • 保证紧急事件得到优先处理成为可能
– 系统中包含多个进程,每个进程对应又包含 多个线程 – 适合于处理复杂的应用
第二节
任 务
任务的定义及其主要特性 任务的内容 任务的分类 任务参数
5.2.1 任务的定义及其主要特性
• 任务是一个具有独立功能的无限循环的程序段的一次运行 活动,是实时内核调度的单位,具有以下特性: – 动态性:任务状态是不断变化的。 • 一般分为就绪态、运行态和等待态。 • 在多任务系统中,任务的状态将随着系统的需要不断 进行变化。 – 并行性: • 系统中同时存在多个任务,这些任务在宏观上是同时 运行的。 – 异步独立性: • 每个任务各自按相互独立的不可预知的速度运行,走 走停停。
• 在嵌入式实时系统中
– 任务(task)通常是进程(process)和线程 (thread)的统称。 – 任务是调度的基本单位。
• 进程是60年代提出来的,主要包括以下 内容:
– – – – 一个正在执行的程序; 计算机中正在运行的程序的一个实例; 可以分配给处理器,并由处理器执行的一个实体; 由一个顺序的执行线程、一个当前状态和一组相关 的系统资源所刻画的活动单元。

进程由代码、数据、堆栈和进程控制块构成。
– 进程控制块包含操作系统用来控制进程所需要的信息:
• • • • • 进程状态 CPU寄存器 调度信息 内存管理信息 I/O状态信息等

早期的进程,包含了以下两个方面的内容:
– 资源。进程是资源分配的基本单位,一个进程包括一个 保存进程映像的虚拟地址空间、主存、I/O设备和文件 等资源。 – 调度执行。进程作为操作系统的调度实体,是调度的基 本单位。
……
任务控制块示意图
• 为节约内存,任务数量通常需要进行预先 配置
– 按照配置的任务数量初始化任务控制块,一个任务对 应一个初始的任务控制块,形成一个空闲任务控制块 链。
• 在任务创建时,实时内核从空闲任务控制 块链中为任务ห้องสมุดไป่ตู้配一个任务控制块。
– 随后对任务的操作,都是基于对应的任务控制块来进 行的。 – 当任务被删除后,对应的任务控制块又会被实时内核 回收到空闲任务控制块链。
• 截止时间可以分为强截止时间(hard deadline)和弱
截止时间(soft deadline)两种情况: – 具有强截止时间的任务即为关键任务,如果截止时间
不能得到满足,就会出现严重的后果。 – 拥有关键任务的实时系统又被称为强实时(hard realtime)系统,否则称为弱实时(soft real-time)系统。
单进程/单线程模型
单进程/多线程模型
多进程/单线程模型
多进程/多线程模型
• 大多数嵌入式实时内核:单进程/多线程 模型,或简单地称为任务模型
– 把整个应用当作一个没有定义的进程来对待; – 应用则被划分为多个任务的形式来进行处理。 – 适用于实时性要求较高的、相对简单的应用
• 也有一些嵌入式实时操作系统采用了多 进程/多线程模型:
• 随着操作系统的发展,进程所包含的两 个方面的内容逐渐被分开:
– 轻量级进程或线程:调度执行的单位。 – 进程:资源分配的单位。 – 线程是进程内部一个相对独立的控制流,由 线程上下文和需要执行的一段程序指令构成 的。 – 在进程中,所有线程共享该进程的状态和资 源,可以访问相同的数据。
• 引入线程的概念后,可把进程和线程的 使用分为以下几种模型:
• 任务会在不同的状态之间进行转换,即 任务状态的变迁
运行态
需要 资源
获得CPU 就绪态
被高优先级 任务抢占或 超时
获得资源
等待态
任务状态变迁
5.3.2 任务控制块
• 任务管理是通过对任务控制块(Task Control Block,TCB)的操作来实现的。 • 任务控制块是包含任务相关信息的数据结构
• 任务上下文环境(context) – 包括了实时内核管理任务、以及处理器执行任务所需 要的所有信息。 • 任务优先级 • 任务的状态等实时内核所需要的信息 • 以及处理器的各种寄存器的内容(hardware context):程序计数器、堆栈指针、通用寄存器 等的内容 – 任务的上下文环境通过任务控制块(Task Control Block,TCB)来体现。
5.2.2 任务的内容
• 任务主要包含以下内容: – 代码:一段可执行的程序 – 数据:程序所需要的相关数据(变量、工作空间、缓 冲区等) – 堆栈 – 程序执行的上下文环境
• 任务与程序的区别: – 任务能真实地描述工作内容的并发性,而程序不能; – 程序是任务的组成部分 • 除程序外,任务还包括数据、堆栈及其上下文环 境等内容; – 程序是静态的,任务是动态的; – 任务有生命周期,有诞生、有消亡,是短暂的;而 程序是相对长久的; – 一个程序可对应多个任务,反之亦然; – 任务具有创建其他任务的功能,而程序没有。

任务切换将导致任务状态发生变化: – 当前正在运行的任务将由运行状态变为就绪 或是等待状态; – 需要投入运行的任务则由就绪状态变为运行 状态。
返回
• 任务的就绪时间
任务具备了在处理器上被执行所需要条件时的时间。
• 任务的截止时间
• 意味着任务需要在该时间到来之前被执行完成。 • 截止时间可以通过绝对截止时间(absolute deadline)
和相对截止时间(relative time)两种方式来表示 – 相对截止时间为任务的绝对截止时间减去任务的就绪时 间。
任务1
实时内核调度程序 保存任务1的上下文到TCB1 …… 从TCB2恢复任务2的上下文
任务2
时间
保存任务2的上下文到TCB2 …… 从TCB1恢复任务1的上下文
任务1执行一段时间后,由于某种原因,需要进行任务切换,进入实时 内核的调度程序。调度程序首先把当前的上下文内容保存到任务 1的任 务控制块TCB1中,然后又把任务2的上下文从TCB2中恢复到CPU寄存器, 随后任务2得到执行。任务2执行一段时间后,由于某种原因,需要进行 任务切换,进入实时内核的调度程序。调度程序首先把当前的上下文内 容保存到任务2的任务控制块TCB2中,然后又把任务1的上下文从TCB1中 恢复到CPU寄存器,随后任务1得到执行。
– sporadic task:有最小到达间隔时间限制 – aperiodic task:没有到达时间限制
• 关键任务与非关键任务
– 关键任务:
• 为需要得到及时执行的任务,否则将出现灾难性的 后果。例:飞行器中用于处理生命支持系统和稳定 性控制系统的任务。
– 非关键任务:
• 如果没有得到及时执行,则不会产生严重后果。
• 飞行器中处理稳定性控制的任务,就需要具有较 高的优先级,一旦执行条件得到满足,应及时得 到执行
– 任务的优先级分为静态优先级和动态优先级。
• 静态优先级:任务的优先级被确定后,在系统运 行过程中将不再发生变化; • 动态优先级:系统运行过程中,任务的优先级是 可以动态变化的。
返回
• 周期
– 周期任务所具有的参数,表示任务周期性执行的间隔 时间。
第三节
任务管理
任务状态与变迁 空闲任务 任务控制块 任务切换 任务队列 任务管理机制
5.3.1 任务状态与变迁
• 任务拥有的资源情况是不断变化的,导致任务状态 也表现出不断变化的特性。 • 不同的实时内核实现方式对任务状态的定义不尽相 同,但是都可以概括为三种基本的状态: – 等待(waiting):任务在等待某个事件的发生; – 就绪(ready): 任务等待获得处理器资源; – 执行(running):任务获得处理器资源,所包含 的代码内容正在被执行。
– 包含了任务执行过程中所需要的所有信息。
• 任务控制块大都包括以下信息(数据结构):
– – – – – – – – 任务的名字 任务的ID 任务的状态 任务的优先级 任务的硬件上下文(堆栈指针、PC和寄存器等) 任务的队列指针 任务(程序)执行的起始地址 …
task name task ID task status task priority task context(registers and flags of CPU) programm of task
5.2.4 任务参数
• 任务参数有:
– 优先级(priority)
相关主题