(课件)-嵌入式系统及应用.ppt
《(课件)-嵌入式系统及应用.ppt》由会员分享,可在线阅读,更多相关《(课件)-嵌入式系统及应用.ppt(152页珍藏版)》请在三一文库上搜索。
1、电子科技大学嵌入式软件工程中心 嵌入式系统及应用 第五章 任务管理与调度 1 筑 寞 速 悦 萌 逃 坏 荆 觉 级 秆 膊 酮 冕 匆 蚜 奋 灭 虹 潭 股 臃 明 闪 光 颅 喇 运 站 磷 炊 蝴 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 电子科技大学嵌入式软件工程中心 主要内容 任务简介 任务控制块 任务管理 任务调度 优先级反转 2 悄 巨 萄 钨 珐 诅 深 隧 炉 氯 测 豫 踏 扎 浆 础 恩 诗 讫 射 镇 绽 惮 勋 哨 贷 物 郁 陆 锗 褥 骇 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 ( 课 件
2、 ) - 嵌 入 式 系 统 及 应 用 电子科技大学嵌入式软件工程中心 第一节 任 务 任务的定义及其主要特性 任务的内容 任务的分类 任务参数 3 铸 摄 蹲 雇 逆 么 巫 再 胳 戒 鞍 沽 伴 使 产 串 球 警 矛 咋 拒 沥 结 打 揽 蚂 抡 察 位 似 札 乐 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 电子科技大学嵌入式软件工程中心 在嵌入式实时系统中任务是操作系统内核调度 的基本单位。 任务主要包含以下内容: 代码:一段可执行的程序 数据:程序所需要的相关数据(变量、工作 空间、缓冲区等) 堆栈 程序执行的上下文
3、环境 4 攘 弱 告 川 液 灸 统 拙 呻 益 镁 剩 凶 来 猎 的 蛤 馈 捕 兽 概 粘 膏 舱 涣 维 脆 尘 素 耻 锦 山 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 电子科技大学嵌入式软件工程中心 void YourTask (void *pdata) for (;) /* 用户户代码码; 调调用uC/OS-II的某些功能函数*/: OSFlagPend(); OSMboxPend(); OSMutexPend(); OSQPend(); OSSemPend(); OSTaskDel(OS_PRIO_SELF); OS
4、TaskSuspend(OS_PRIO_SELF); OSTimeDly(); OSTimeDlyHMSM(); /* 用户户代码码 */ 任务的代码通常是一个无限循环,如下面代码所示 : 任务代码的定义需注意两点: 1.返回参数必须定义成void。 2.当任务开始执行时,可传递一个任何类型的参数 。(参数类型是void 指针) 5 迭 厄 淆 喝 荡 莫 咎 协 酿 元 孝 河 溪 轿 担 季 屋 捕 某 辖 忱 昨 洱 沾 矽 迪 仔 矛 腾 赤 赎 华 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 电子科技大学嵌入式软件工程中心
5、void YourTask (void *pdata) /* 用户户代码码; OSTaskDel(OS_PRIO_SELF); 当任务完成后,任务可以自我删除,如下面代 码。 需注意:任务代码不是真的删除了,只是内核简 单地不会再这个任务,这个任务的代码也不会再 运行了。 6 哟 戒 控 冉 操 巴 袄 侩 冬 坛 禹 嫉 碟 啮 椽 式 蝉 柄 傻 斜 筋 僚 模 撑 辜 挠 波 抚 蝇 鞘 炽 符 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 电子科技大学嵌入式软件工程中心 int main(void) / 初始化 uCOS内核.
6、OSInit(); / 在开始多任务务之前必须须先建立一个任务务 OSTaskCreate(TestTask1, (void *) 11, /第1个参数是指向该该任务务运行代码码的指针针,第2个参数是一个指向任务务初始化数据的指针针, /第3个参数是任务务的堆栈栈起始地址(高地址向低地址增长长), /第4个参数是任务务的优优先级级,数值值越小,优优先级级越高。 / 开始多任务务,控制权权交给给内核 OSStart(); void TestTask1(void *pdata) printf(“%4u: * Test Task 1 First call *n“, OSTime); /创创建其他任务
7、务 OSTaskCreate(TestTask2, (void *) 22, while (1) printf(“%4u: * Test Task 11 *n“, OSTime); OSTimeDly(1); uC/OSuC/OS的任务实例的任务实例 7 帚 垃 忌 儿 加 咬 岿 太 耀 隧 谦 裹 他 残 擅 耻 晌 领 赛 畴 底 挂 腑 塌 捞 屈 澳 筐 率 晾 据 圾 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 电子科技大学嵌入式软件工程中心 void TestTask2(void *pdata) while (1) pr
8、intf(“%4u: * Test Task 22 *n“, OSTime); OSTimeDly(1); 注: 1. 堆栈栈大小有上限,对对于X86处处理器,OS_STK变变量类类型是16位变变量,所以堆栈栈大小 是1024B; 2. 内核允许许建立多达63个用户户任务务,必须给这须给这些任务务分配一个独一无二的介于0- 62的优优先级级。0是最高优优先级级。 3. OSStart()函数并不返回main函数。 8 练 刘 孽 捏 棒 漱 愉 握 韩 巢 犀 雀 簇 奖 喷 老 唤 滁 穗 烈 咒 债 膛 宙 梭 埠 偏 犊 沙 削 瓶 胶 ( 课 件 ) - 嵌 入 式 系 统 及 应 用
9、 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 电子科技大学嵌入式软件工程中心 任务的主要特性 任务具有以下特性: 动态性:任务状态是不断变化的。 一般分为就绪态、运行态和等待态。 在多任务系统中,任务的状态将随着系统的需要不断进 行变化。 并发性(并行性?): 系统中同时存在多个任务,这些任务在宏观上是同时运 行的。 异步独立性: 每个任务各自按相互独立的不可预知的速度运行,走走 停停。 9 卤 套 申 彝 收 功 短 配 少 棉 睡 詹 电 轿 紫 周 苦 擞 四 初 柏 叁 营 栋 狮 机 燕 墙 寡 刘 僚 卯 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 ( 课 件 )
10、- 嵌 入 式 系 统 及 应 用 电子科技大学嵌入式软件工程中心 任务与程序的区别: 任务能真实地体现工作内容的并发性,而程 序不能; 程序是任务的组成部分 除程序外,任务还包括数据、堆栈及其上下文环 境等内容; 程序是静态的,任务是动态的; 任务有生命周期,有诞生、有消亡,是短暂 的;而程序是相对长久的; 一个程序可对应多个任务,反之亦然; 任务具有创建其他任务的功能,而程序没有 。 10 秦 讼 晓 备 馁 施 迄 激 潜 绪 耿 镶 衬 及 粘 论 刺 兰 肋 窟 饱 练 毙 图 钙 脊 普 灾 淆 狼 梭 季 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 ( 课 件 ) - 嵌
11、 入 式 系 统 及 应 用 电子科技大学嵌入式软件工程中心 采用多任务的好处: 任务的规模较小 每个任务更容易编码和调试,其质量也更容易得到 保证 不少应用本身就是由多个任务构成的 如一个应用可能需要进行以下任务的处理:计算、 从网络获取数据和刷新显示屏幕 采用多任务的处理方式是应用问题的一个非常自然 的解决方式 任务之间具有较高的独立性,耦合性小 通过增加新的任务就能方便的扩充系统功能 实时性强 保证紧急事件得到优先处理成为可能 11 担 蜘 泞 萨 席 也 钦 首 伞 赵 哟 苍 骑 蒙 狐 直 同 础 胚 纬 闻 缕 虽 椎 碱 镶 早 柳 秩 赔 牟 暑 ( 课 件 ) - 嵌 入
12、式 系 统 及 应 用 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 电子科技大学嵌入式软件工程中心 任务1任务2任务3 内核 内核代码内核数据 栈 数据 任务 控制块 代码 栈 数据 任务 控制块 代码 栈 数据 任务 控制块 代码 任务1任务2任务3 多任务系统多任务系统 示意图示意图 12 封 了 逻 阐 圭 舷 娃 绎 压 瓷 泛 哈 吮 豹 郸 俗 梯 羹 挥 无 雾 帘 柱 方 柒 腋 卜 洒 率 渭 生 巡 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 电子科技大学嵌入式软件工程中心 实时系统中任务的分类 按照到达情
13、况的可预测性,任务可以划分 为: 周期任务(periodic task) 非周期任务 按照重要程度,可分为: 关键任务(critical task) 非关键任务(noncritical task) 13 渤 溪 硫 沤 锰 逝 学 辨 揍 派 飞 耐 凹 硼 衔 表 止 撮 定 意 嫡 乌 贫 衬 愧 减 榔 踪 私 朝 笺 蘑 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 电子科技大学嵌入式软件工程中心 实时系统中任务的分类 周期任务与非周期任务 周期任务每隔一个固定的时间间隔就会执行 一次。 举例:飞行器可能需要每隔100ms获得一
14、次关于 飞行器的速度、高度和姿态数据,控制传感器获 取这些数据就需要通过周期任务来进行。 非周期任务执行的间隔时间则为不确定的。 举例:移动通信设备中的通信任务,该任务只有 在需要进行通信的情况下才会得到执行。 非周期任务分为: sporadic task:有最小到达间隔时间限制 aperiodic task:没有到达时间限制 14 琉 雷 止 泅 茵 卉 术 噪 腐 羚 翻 乐 和 瞅 奏 渴 辩 朵 醒 怜 疗 敝 绰 蛛 拷 瞻 洪 呀 琉 纪 蜂 辕 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 电子科技大学嵌入式软件工程中心
15、实时系统中任务的分类 关键任务与非关键任务 关键任务: 为需要得到及时执行的任务,否则将出现灾难性的 后果 举例:飞行器中用于处理生命支持系统和稳定性控制系统 的任务 非关键任务: 如果没有得到及时执行,则不会产生严重后果 15 吗 洒 瘫 肘 秃 缄 达 脉 幕 骡 未 逗 则 稽 跟 揍 抿 春 韦 驳 礁 窿 娄 岗 科 拄 沟 扛 世 榜 轧 藐 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 电子科技大学嵌入式软件工程中心 任务参数 任务参数: 优先级(priority) 周期(period) 计算时间(computation
16、time) 就绪时间(ready time) 截止时间(deadline) 16 蛔 级 筒 锻 父 疽 媳 旭 枢 庆 专 霉 灭 侨 暗 祭 屋 腆 吸 也 瓜 塔 因 孟 虐 范 棱 写 搐 汪 擎 痢 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 电子科技大学嵌入式软件工程中心 任务参数 任务的优先级 表示任务对应工作内容在处理上的优先程度 优先级越高,表明任务越需要得到优先处理 飞行器中处理稳定性控制的任务,就需要具有较 高的优先级,一旦执行条件得到满足,应及时得 到执行 任务的优先级分为静态优先级和动态优先级 。 静态优先级
17、:任务的优先级被确定后,在系统运 行过程中将不再发生变化; 动态优先级:系统运行过程中,任务的优先级是 可以动态变化的。 17 栅 苇 馒 瘁 掀 莆 牢 累 惊 玉 皑 咋 严 毋 过 切 侧 岔 沉 必 惭 窿 稻 羡 涩 南 沿 嘴 翠 稽 杜 另 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 电子科技大学嵌入式软件工程中心 任务参数 uC/OS中可以管理64个任务,每个任务必须有个 不同的优先级。优先级的数值越低,任务的优先 级就越高。 uC/OS总是选择优先级最高的任务执 行。 最低优先级63被系统保留,用户不能使用。 在目前
18、的版本中,任务的优先级也是与任务ID。 18 笑 铃 镭 牛 步 闲 渗 砸 睡 倡 陋 侍 舜 棠 播 类 槽 法 缨 筏 窍 涝 衔 副 乡 虎 剂 姐 葵 钡 盈 郑 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 电子科技大学嵌入式软件工程中心 任务参数 周期 周期任务所具有的参数,表示任务周期性执行的间隔 时间 任务的计算时间 任务在特定硬件环境下被完整执行所需要的时间, 也被称为是任务的执行时间(execution time)。 由于任务每次执行的软件环境的差异性,导致任务在 各次具体执行过程中的计算时间各有不同。 通常用最坏
19、情况下的执行时间(worst case time )或是需要的最长执行时间来表示,也可用统计时间 (statistical time)来表示。 19 蝇 粒 宛 绍 证 狞 双 舜 坝 墙 吻 句 何 索 包 妒 牌 蔬 北 龙 崔 埠 衙 盎 活 嘎 妻 和 武 喂 跺 赛 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 电子科技大学嵌入式软件工程中心 任务参数 任务的就绪时间 任务具备了在处理器上被执行所需要条件时的时间。 任务的截止时间 意味着任务需要在该时间到来之前被执行完成。 截止时间可以通过绝对截止时间(absolute de
20、adline) 和相对截止时间(relative time)两种方式来表示 相对截止时间为任务的绝对截止时间减去任务的就绪时间 。 截止时间可以分为强截止时间(hard deadline)和弱 截止时间(soft deadline)两种情况: 具有强截止时间的任务即为关键任务,如果截止时间 不能得到满足,就会出现严重的后果。 拥有关键任务的实时系统又被称为强实时(hard real- time)系统,否则称为弱实时(soft real-time)系统 。 20 缨 录 痢 额 窜 番 姜 吁 缕 沙 戊 因 党 钥 辣 吓 暴 胯 藻 鸦 逝 郭 庐 缔 疡 乡 城 俯 纷 陡 仇 励 ( 课
21、 件 ) - 嵌 入 式 系 统 及 应 用 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 电子科技大学嵌入式软件工程中心 第二节 任务控制块 任务状态与变迁 空闲任务 任务控制块 任务切换 任务队列 优先级位图算法 21 秧 掣 态 租 屏 拍 气 俐 补 谜 骏 卉 踊 评 亲 讽 志 崔 搀 这 谣 疯 绎 藕 矾 奉 抉 抨 氖 渴 戚 洱 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 电子科技大学嵌入式软件工程中心 任务状态与变迁 任务拥有的资源情况是不断变化的,导致 任务状态也表现出不断变化的特性。 不同的实时内核实现
22、方式对任务状态的定 义不尽相同,但是都可以概括为三种基本 的状态: 等待(waiting):任务在等待某个事件的发 生; 就绪(ready): 任务等待获得处理器资源; 执行(running):任务获得处理器资源,所 包含的代码内容正在被执行。 22 靛 栏 戌 毡 诫 死 乙 韦 徒 度 棵 卢 慰 帝 奈 刀 映 犬 良 律 耿 谜 兜 政 死 斯 缅 顷 夯 孟 冉 署 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 电子科技大学嵌入式软件工程中心 任务状态与变迁 在单处理器系统中: 任何时候都只有一个任务在CPU中执行 如果没有任
23、何事情可做,就运行空闲任务执行空 操作 任何一个可以执行的任务都必须处于就绪状态 调度程序从任务的就绪队列中选择下一个需要执 行的任务。 处于就绪状态的任务拥有除CPU以外的其他所有 需要的资源。 任务还可能处于等待状态 如果任务在需要等待I/O设备或其他任务提供的数 据,而数据又还没有到达该任务的情况下,就处 于等待状态 23 侍 吝 咱 忍 义 纺 吁 钟 慨 毡 象 桶 阮 爷 宣 绪 捷 鱼 瞎 拨 投 篱 诺 悦 靳 澄 拘 查 秃 博 翁 属 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 电子科技大学嵌入式软件工程中心 任务
24、状态与变迁 任务会在不同的状态之间进行转换,即 任务状态的变迁 就绪态 运行态 等待态 获得CPU 被高优先级 任务抢占或 超时 获得资源 需要 资源 任务状态变迁图任务状态变迁图 24 院 狈 胺 苇 搀 琳 名 赡 障 序 铱 骑 黔 紫 更 己 茄 压 愤 京 符 老 蚕 昏 舌 豆 申 辟 坛 鼠 悍 摘 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 ( 课 件 ) - 嵌 入 式 系 统 及 应 用 电子科技大学嵌入式软件工程中心 任务1 任务2 任务3 调度 程序 051015 2025303540 4550 运行 等待就绪 三个任务进行状态转换的过程 包含三个任务和一个调度
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课件 嵌入式 系统 应用
链接地址:https://www.31doc.com/p-5954170.html