嵌入式系统 - 任务管理
2017-12-18 20:16
204 查看
教材:嵌入式系统及应用,罗蕾、李允、陈丽蓉等,电子工业出版社
任务管理与调度
任务管理
任务状态与变迁
任务控制块
任务切换
任务切换基本步骤
任务切换的时机
任务队列
就绪队列
等待队列
任务管理机制
就绪(ready): 任务等待获得处理器资源
执行(running):任务获得处理器资源,所包含的代码内容正在被执行
任务会在不同的状态之间进行转换,即任务状态的变迁
调度程序本身也需要占用一定的处理时间
任务控制块是包含了任务执行过程中所需要的所有信息的数据结构
任务控制块大都包括这些信息:任务的名字、任务执行的起始地址、任务的优先级、任务的状态、任务的硬件上下文(堆栈指针、PC和寄存器等)、任务的队列指针等内容
为节约内存,任务数量通常需要进行预先配置
按照配置的任务数量初始化任务控制块,形成一个空闲任务控制块链
在任务创建时,实时内核从空闲任务控制块链中为任务分配一个任务控制块
对任务的操作,都是基于对应的任务控制块来进行的
当发生任务切换时
当前正在运行的任务的上下文就需要通过该任务的任务控制块保存起来
把需要投入运行的任务的上下文从对应的任务控制块中恢复出来
任务切换将导致任务状态发生变化
更新当前运行任务的控制块内容,将其状态改为就绪或等待状态
将任务控制块移到相应队列(就绪队列或等待队列)
选择另一个任务进行执行(调度)
改变需投入运行任务的控制块内容,将其状态变为运行状态
恢复需投入运行任务的上下文环境
运行任务因缺乏资源而被阻塞
时间片轮转调度时
高优先级任务处于就绪时
队列由任务控制块构成
方式一:任务就绪时,把就绪任务的任务控制块放在就绪队列的末尾
调度程序需要从就绪队列的头部到尾部进行一次遍历,才能获得就绪队列中具有最高优先级的任务
方式二:就绪队列按照优先级从高到低的顺序排列
新的就绪任务到达时,需要插入到就绪队列的合适位置,确保就绪队列保持优先级从高到低排列的顺序性
在这两种处理方式中,所花费的时间与任务数量有密切的关系,具有不确定性
为提高实时内核的确定性,可采用一种被称为优先级位图的就绪任务处理算法
资源对应的事件发生时,实时内核需要扫描整个等待队列,搜索等待该资源的任务,并按照一定的策略选取任务,把任务的任务控制块放置到就绪队列
如果系统的资源和任务比较多,搜索等待该资源的任务所需要的时间就比较长,会影响整个系统的实时性
多等待队列
资源对应的事件发生时,能够在较短的时间内确立等待该资源的任务等待队列
单就绪队列和单等待队列
单就绪队列和多等待队列
内核的任务管理是通过系统调用来体现,主要包括任务创建、任务删除、任务挂起、任务唤醒、设置任务属性等内容
创建任务的过程即为分配任务控制块的过程
在创建任务时,通常需要确定任务的名字和任务的优先级等内容,确立任务所能使用的堆栈区域
任务创建成功后,通常会为用户返回一个标识该任务的ID,以实现对任务的引用管理
删除任务把任务从系统中去掉,释放对应的任务控制块
挂起/唤醒任务把任务变为等待状态,可通过唤醒任务操作把任务转换为就绪状态
设置任务属性可以用来设置任务的抢占、时间片等特性,以确定是否允许任务在执行过程中被抢占或是对同优先级任务采用时间片轮转方式运行等
改变任务优先级用来根据需要改变任务的当前优先级
获取任务信息获得任务的当前优先级、任务的属性、任务的名字、任务的上下文、任务的状态等内容,便于用户进行决策
任务管理与调度
任务管理
任务状态与变迁
任务控制块
任务切换
任务切换基本步骤
任务切换的时机
任务队列
就绪队列
等待队列
任务管理机制
任务管理与调度
任务管理
任务管理是实时内核的主要工作,完成任务创建、任务删除、任务调度、改变任务优先级等工作任务状态与变迁
等待(waiting):任务在等待某个事件的发生就绪(ready): 任务等待获得处理器资源
执行(running):任务获得处理器资源,所包含的代码内容正在被执行
任务会在不同的状态之间进行转换,即任务状态的变迁
调度程序本身也需要占用一定的处理时间
任务控制块
任务管理是通过对任务控制块(Task Control Block,TCB)的操作来实现的任务控制块是包含了任务执行过程中所需要的所有信息的数据结构
任务控制块大都包括这些信息:任务的名字、任务执行的起始地址、任务的优先级、任务的状态、任务的硬件上下文(堆栈指针、PC和寄存器等)、任务的队列指针等内容
为节约内存,任务数量通常需要进行预先配置
按照配置的任务数量初始化任务控制块,形成一个空闲任务控制块链
在任务创建时,实时内核从空闲任务控制块链中为任务分配一个任务控制块
对任务的操作,都是基于对应的任务控制块来进行的
任务切换
任务切换是保存当前任务的上下文,并恢复需要执行的任务的上下文的过程当发生任务切换时
当前正在运行的任务的上下文就需要通过该任务的任务控制块保存起来
把需要投入运行的任务的上下文从对应的任务控制块中恢复出来
任务切换将导致任务状态发生变化
任务切换基本步骤
保存任务上下文环境更新当前运行任务的控制块内容,将其状态改为就绪或等待状态
将任务控制块移到相应队列(就绪队列或等待队列)
选择另一个任务进行执行(调度)
改变需投入运行任务的控制块内容,将其状态变为运行状态
恢复需投入运行任务的上下文环境
任务切换的时机
中断、自陷运行任务因缺乏资源而被阻塞
时间片轮转调度时
高优先级任务处于就绪时
任务队列
任务队列通过任务控制块实现对系统中所有任务的管理队列由任务控制块构成
就绪队列
在基于优先级的调度处理中,要获得当前具有最高优先级的就绪任务方式一:任务就绪时,把就绪任务的任务控制块放在就绪队列的末尾
调度程序需要从就绪队列的头部到尾部进行一次遍历,才能获得就绪队列中具有最高优先级的任务
方式二:就绪队列按照优先级从高到低的顺序排列
新的就绪任务到达时,需要插入到就绪队列的合适位置,确保就绪队列保持优先级从高到低排列的顺序性
在这两种处理方式中,所花费的时间与任务数量有密切的关系,具有不确定性
为提高实时内核的确定性,可采用一种被称为优先级位图的就绪任务处理算法
等待队列
单等待队列资源对应的事件发生时,实时内核需要扫描整个等待队列,搜索等待该资源的任务,并按照一定的策略选取任务,把任务的任务控制块放置到就绪队列
如果系统的资源和任务比较多,搜索等待该资源的任务所需要的时间就比较长,会影响整个系统的实时性
多等待队列
资源对应的事件发生时,能够在较短的时间内确立等待该资源的任务等待队列
单就绪队列和单等待队列
单就绪队列和多等待队列
任务管理机制
任务管理用来实现对任务状态的直接控制和访问内核的任务管理是通过系统调用来体现,主要包括任务创建、任务删除、任务挂起、任务唤醒、设置任务属性等内容
创建任务的过程即为分配任务控制块的过程
在创建任务时,通常需要确定任务的名字和任务的优先级等内容,确立任务所能使用的堆栈区域
任务创建成功后,通常会为用户返回一个标识该任务的ID,以实现对任务的引用管理
删除任务把任务从系统中去掉,释放对应的任务控制块
挂起/唤醒任务把任务变为等待状态,可通过唤醒任务操作把任务转换为就绪状态
设置任务属性可以用来设置任务的抢占、时间片等特性,以确定是否允许任务在执行过程中被抢占或是对同优先级任务采用时间片轮转方式运行等
改变任务优先级用来根据需要改变任务的当前优先级
获取任务信息获得任务的当前优先级、任务的属性、任务的名字、任务的上下文、任务的状态等内容,便于用户进行决策
相关文章推荐
- 任务管理(3.3)------嵌入式系统软件及操作系统知识
- XMOVE3.0手持终端——软件介绍(一):精简型嵌入式管理系统的菜单实现和任务切换
- 如果你的CRM系统没有结合使用任务管理您的系统将故障
- Android 使用 DownloadManager 管理系统下载任务的方法,android管理系统
- 项目二 任务五 管理Linux系统的用户与用户组
- 社区开放任务指南-3208-系统和应用非受控连接的检测与管理方案
- 任务五 管理linux系统的用户与用户组
- VC++/MFC入门项目开发实战之任务管理系统
- RHCSA 系列(十): Yum 包管理、Cron 自动任务计划和监控系统日志
- Linux延时定时任务及系统文件查找和临时文件管理
- 系统管理指南:基本管理 第12 章• x86: 引导系统(任务)
- 系统管理指南:基本管理 第21 章• 使用Sun PatchManager 管理Solaris 修补程序(任务)
- 在嵌入式Linux 系统中实现基于Web 的配置管理
- 终于做完公安部门任务管理系统了
- Laxcus大数据管理系统2.0(9)- 第七章 分布任务组件
- 项目二 管理与维护Linux系统(任务三、任务四)
- 嵌入式QT精品视频教程:开发RFID智能仓储指纹管理系统
- 《国产嵌入式微系统msOS成型记》之十一——嵌入式微系统创新的裸奔双任务系统
- 车辆管理系统之开始自己的任务(三)
- 任务六 管理Linux系统的文件权限