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