资源预览内容
第1页 / 共91页
第2页 / 共91页
第3页 / 共91页
第4页 / 共91页
第5页 / 共91页
第6页 / 共91页
第7页 / 共91页
第8页 / 共91页
第9页 / 共91页
第10页 / 共91页
亲,该文档总共91页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
嵌入式实时操作系统 及应用开发第五章 任务管理与调度主要内容进程与线程 任务 任务管理 任务调度 优先级反转第一节进程与线程 程序运行的方式 进程的定义 线程的定义程序的运行方式顺序运行作业的运行总是一个一个地顺着 来,完成一个作业后再运行下一 个。在一个作业运行中途,决不 会突然插入另一个作业运行。顺序运行最容易实现,常见于早 期的单道批处理系统中程序的运行方式并发运行允许多个程序共享CPU,在这种方式下,系统的资源不再被某一个程序独占,而是由多个程序共享。简单地说,就是能用一个处理器 并发(注意,不是同时! ) 地运行多个程序的计算机管理系统。并发:由同一个处理器轮换地 运行多个程序。或者说是由多个 程序轮班地占用处理器这个资源。 且在占用这个资源期间,并不一 定能够把程序运行完毕。并发过程 示意图处理器如何进行程序的 切换?程序的切换(两句话)处理器是个傻瓜,PC让 它干啥,它就干啥。PC是个指路器,它指向哪 儿,处理器就去哪儿。从此可以知道,哪个程 序占有了PC,哪个程序 就占有了处理器。= PC进程与程序进程与程序程序是存放在磁盘上的一系列代码和 数据的可执行映像,是一个静止的实 体。 进程:可并发执行的程序在一个数据 集合上的运行过程。 程序是静止的,进程是动态的,有状 态转换。进程与程序进程的四要素 :1、作为一个进程,要有一段程序供其执行。2、有进程专用的内核空间堆栈。 3、在内核中有一个task_struct数据结构,即“进程控制块”。 4、有独立的用户空间 线程的引入早期的进程,包含了以下两个方面的内容: 资源。进程是资源分配的基本单位,一个进程包 括一个保存进程映像的虚拟地址空间、主存、I/O 设备和文件等资源。调度执行。进程作为操作系统的调度实体,是调 度的基本单位。 进程是一个庞大的结构型实体,其PCB 结构包含的内容相当多,每创建一个进 程,系统无论在时间或空间上都要花费 较大的开支。线程定义线程是进程的一个实体,是CPU调度和 分派的基本单位,它是比进程更小的能 独立运行的基本单位。线程自己基本 上不拥有系统资源,只拥有一点在运行 中必不可少的资源(如程序计数器,一组 寄存器和栈),一个线程可以创建和撤销 另一个线程; 使用线程的优势:创建:在一个已有进程中创建一个新线程比创建一个全 新的进程所需的时间开销少;终止:终止一个线程比终止一个进程所花费的时间少;切换:线程切换比进程切换所花费的时间少;通信:使同一进程内部不同线程之间的通信效率得到显 著提高。 在大多数操作系统中,不同进程之间的通信需要内 核的干预,而同一进程内部不同线程之间则可直接 通信。 单进程/单线程模型单进程/多线程模型多进程/多线程模型多进程/单线程模型第二节任 务 任务的定义及其主要特性 任务的内容 任务的分类 任务参数任务在嵌入式实时系统中任务(task):任务是一个具有独 立功能的无限循环的程序段的一次运 行活动通常为进程(process)和线程( thread)的统称任务是调度的基本单位High Priority TaskLow Priority TaskTaskTaskTaskTaskTaskTaskEventEventEach TaskInfinite LoopImportanceSplitting an application into TasksSplitting an application into Tasks任务 任务通常包含一个具有无限循环的程序/*ioTask implements data obtaining and handling continuously*/ void ioTask(void) int data; initial(); /*The following sentences get data and handle data continuously*/ while(TRUE) data = getData(); handleData(data); 任务 任务的特性:动态性并发性异步独立性任务 任务的内容 :代码:一段可执行的程序。数据:程序所需要的相关数据(变 量、工作空间、缓冲区)堆栈程序执行的上下文环境TCB任务代码任务堆栈内存处理器PCSP任务运行时与处理器之间的关系处理器通过两个指针寄存 器(PC和SP)来与任务 代码和任务堆栈建立联系 并运行它寄存器组程序运行环境任务代码任务堆栈内存处理器PCSP多任务时的问题任务代码任务堆栈内存任务代码任务堆栈内存?当有多个任务时,处理 器中的运行环境应该怎 么办?寄存器组程序运行环境程序虚拟 处理器PCSP虚拟 处理器PCSP虚拟 处理器PCSP虚拟 处理器PCSP调度器多任务时任务与处理器 之间关系的处理程序处理器 PCSP在内存中为每个任 务创建一个虚拟的 处理器(处理器部 分的运行环境由操作系统的调度 器按某种规则来进 行这两个复制工作复制当需要运行某个任务时 就把该任务的虚拟处理 器复制到实际处理器中复制当需要中止当前任 务时,则把任务对 应的虚拟处理器复 制到内存复制再把另一个需要运行的任 务的虚拟处理器复制到实 际处理器中寄存器组寄存器组也就是说,任务的切换是 任务运行环境的切换虚拟处理器应该存储的主要信息: 1。程序的断点地址(PC) 2。任务堆栈指针(SP) 3。程序状态字寄存器(PSW) 4。通用寄存器内容 5。函数调用信息(已存在于堆栈)另外再用一个数据结构保存任务堆栈 指针(SP),这个数据结构叫做任务 控制块,它除了保存任务堆栈指针之 外还要负责保存任务其他信息。这些内容通常保 存在任务堆栈中 ,这些内容也常 叫做任务的上下 文。任务控制块是由操 作系统另行构造的 一个数据结构,每 个任务都有一个。任务代码任务堆栈内存任务控制块 其实,程序切换的关键是 把程序的私有堆栈指针赋予处理器的堆栈指针SP实质上系统是通过SP的切换 来实现程序的切换的。要建立一个概念:具有 控制块的程序才是一个 可以被系统所运行的任务。 程序代码、私有堆栈、任 务控制块是任务的三要件。 任务控制块提供了运行环 境的存储位置。任务任务与程序的区别:任务能真实地描述工作内容的并发性,而程序不能;程序是任务的组成部分;除程序外,任务还包括数据、堆栈及其上下文环境等 内容;程序是静态的,任务是动态的;任务有生命周期,有诞生、有消亡,是短暂的;而程 序是相对长久的;一个程序可对应多个任务,反之亦然;任务具有创建其他任务的功能,而程序没有。任务任务的分类 :按照到达情况的可预测性,任务可以划分为:周期任务(periodic task),非周期任务( non-periodic task)按照重要程度,可分为:关键任务(critical task),非关键任务(noncritical task) 任务1任务2任务3内核内核代码内核数据栈数据任务 控制块代码栈数据任务 控制块代码栈数据任务 控制块代码任务1任务2任务3多任务系统多任务系统 示意图示意图任务任务任务的参数优先级(priority):任务的优先级分为静态优先级和 动态优先级。周期(period):表示任务周期性执行的间隔时间。计算时间(computation time):也被称为是任务 的执行时间(execution time)。就绪时间(ready time):具备了被执行所需要条件 时的时间 截止时间(deadline):任务需要在该时间到来之前 被执行完成。截止时间可以分为强截止时间(hard deadline)和弱截止时间(soft deadline)两种情 况:拥有关键任务的实时系统又被称为强实时统,否 则称为弱实时系统。 第三节任务管理任务状态与变迁 任务控制块 任务切换 任务队列 优先级位图算法 任务管理机制任务的管理-任务状态与变迁任务会在不同的状态之间进行转换,即任务状 态的变迁就绪态运行态等待态获得CPU被高优先级 任务抢占或 超时获得资源需要 资源任务状态变迁任务状态变迁任务1任务2任务3调度 程序05101520253035404550 运行等待就绪三个任务进行状态转换的过程 包含三个任务和一个调度程序。调度程序用来确定下一个 需要投入运行的任务,因此调度程序本身也需要占用一定 的处理时间。 任务的管理-任务状态与变迁任务的状态及其转换正在运行的任务,需要 等待一段时间或需要等 待一个事件发生再运行 时,该任务就会把CPU 的使用权让给别的任务 而使任务进入等待状态 。 任务在没有被配备 任务控制块或被剥 夺了任务控制块时 的状态叫做任务的睡眠状态 系统为任务配备 了任务控制块且 在任务就绪表中 进行了就绪登记 ,这时任务的状 态叫做就绪状态 。 处于就绪状态的 任务如果经调度 器判断获得了 CPU的使用权, 则任务就进入运 行状态 一个正在运行的 任务一旦响应中 断申请就会中止 运行而去执行中 断服务程序,这 时任务的状态叫 做中断服务状态 由于系统存在着多个任务,于是 系统如何来识别并管理一个任务就是 一个需要解决的问题。识别一个任务 的最直接的办法是为每一个任务起一 个名称。系统必须为每个任务创建一个保存与该 任务有关的相关信息的数据结构,这个 数据结构就叫做该任务的任务控制块( TCB)。任务的管理-任务控制块用来记录任务的堆栈指针、 任务的当前状态、任务的优 先级别等一些与任务管理有 关的属性的表就叫做任务控 制块 任务控制块是不是像 我们人在一个国家中 的身份证?(其实, 系统中的所有资源 都应该有身份证。)任务控制块就相当于是一个 任务的身份证,没有任务控 制块的任务是不能被系统承 认和管理的 task name task ID task status task priority task context(registers and flags of CPU) 任务控制块示意图任务控制块示意图任务的管理-任务控制块任务在内存中的结构任务切换任务切换(context switching)保存当前任务的上下文,并恢复需要执行的任务的上下文的过程。当发生任务切换时:当前正在运行的任务的上下文就需要通过该任务的任务控制块保存起来;把需要投入运行的任务的上下文从对应的任务控制块中恢复出来。任务1任务2任务3调度 程序05101520253035404550 运行等待就绪在时刻8即发生了任务切换,任务1的上下文需要保存到任务1的任务 控制块中去。 经过调度程序的处理,在时刻10任务2投入运行,需要把任务2的任务 控制块中关于上下文的内容恢复到CPU的寄存器中。 任务的管理-任务切换任务1任务2实时内核调度程序保存任务1的上下文到TCB1从TCB2恢复任务2的上下文保存任务2的上下文到TCB2从TCB1恢复任务1的上下文时间任务的管理-任务切换任务切换任务切换具有如下基本步骤: 1.保存任务上下文环境;2.更新当前处于运行状态的任务的任务控制块的 内容,如把任务的状态由运行状态改变为就绪 或是等待状态;3.把任务的任务控制块移到相应的队列(就绪队 列或是等待队列);4.选择另一个任务进行执行:调度;5.改变需要投入运行的任务的任务控制块的内容 ,把任务的状态变为运行状态;6.根据任务控制块,恢复需要投入运行的任务的 上下文环境。任务的管理-任务上下文切换时间保 存 调 度 恢 复 保存当前运行任务上下文的时间 选择下一个任务的调度时间 将要运行任务的上下文的恢复时间取决于任务上下文的定义和处理器的速 度。 不同种类的处理器,任务上下文的定义 不同,其内容有多有少。任务的管理-任务切换任务切换 时机中断、自陷运行任务因缺乏资源而被 阻塞时间片轮转调度时高优先级任务处于就绪时任务的管理-任务队列任务队列通过任务控制块实现对系统中所有任务 的
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号