




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
多任务编程技术,第10章嵌入式软件的编程与优化,10.2多任务编程技术,任务划分原则任务间通讯机制的选择任务的细节设计多任务软件系统设计实例,10.2.1任务划分原则,嵌入式多任务软件系统的设计阶段:系统功能框图多任务流程图例:数据采集系统的功能框图,转化为,图10-2数据采集系统功能框图,10.2.1任务划分原则,任务划分存在以下一对矛盾如果划分的任务数太多,必然增加系统任务切换的开销如果任务数太少,系统的并行度和实时性将降低,10.2.1任务划分原则,任务划分的H.Gomma原则(1)I/O依赖性原则(DependencyonInput/OutputDevice)(2)时间关键性的功能原则(Time-CriticalFunctions-HardDeadline)(3)大计算量的功能原则(HeavyComputationFunction),10.2.1任务划分原则,(4)功能内聚性原则(FunctionalRelations)(5)时间内聚性原则(TemporalRelations)(6)周期执行的功能原则(CyclicExecutingFunction)核心思想:系统内功能的异步性,10.2.1任务划分原则,1I/O依赖性原则如果变换依赖于I/O,则变换运行的速度常常受限于与它互操作的I/O设备的速度。在这种情况下,变换应该成为一个独立的任务,图10-3按照I/O依赖性原则进行任务划分,10.2.1任务划分原则,按照I/O依赖性原则进行任务划分的方法(1)在系统中创建与I/O设备类型数目相当的I/O任务,一个任务管理一类I/O设备(非一个任务管理一个I/O设备)例:3个RS232、4个USB、2个以太网(2)I/O任务只实现与设备相关的功能代码,任务中分离设备相关性(3)I/O任务的执行只受限于I/O设备的速度,而不是处理器的速度,10.2.1任务划分原则,2时间关键性的功能原则按照该原则进行任务划分的方法是:(1)将有时间关键性(即最后时间期限Deadline)的功能分离出来,组成独立运行的任务(2)赋予这些任务高的优先级,以满足Deadline的要求例:刀具切割机,10.2.1任务划分原则,图10-4按照时间关键性的功能原则进行任务划分,10.2.1任务划分原则,3大计算量的功能原则按照该原则进行任务划分的方法是:(1)当计算功能占用CPU的时间较多时,捆绑计算功能成任务,赋予它们较低优先级运行,这样一方面消耗CPU的剩余时间,另一方面能被高优先级的任务抢占(2)保持高优先级的任务是轻量级的(3)多个计算任务可安排成相同优先级,按照时间片循环轮转,10.2.1任务划分原则,图10-5按照大计算量的功能原则进行任务划分,10.2.1任务划分原则,4功能内聚性原则按照该原则进行任务划分的方法是:(1)各紧密相关的功能,不要分别对应不同的任务(2)将这些紧密相关的功能组,组成一个任务,使各功能共享资源或相同事件的驱动,10.2.1任务划分原则,图10-6按照功能内聚性原则进行任务划分,意义:减少系统的通讯开销保证了任务级的功能内聚性,10.2.1任务划分原则,5时间内聚性原则按照该原则进行任务划分的方法是:(1)将在同一时间内完成的各功能(即使是不相关的)组成功能组,形成一个任务(2)功能组内的各功能是由相同的外部事件驱动的(如时钟等),这样每次任务接收到一个事件时,它们都可以同时执行例:早晨起床以后刷牙、洗脸、吃早饭几项事情,10.2.1任务划分原则,图10-7按照时间内聚性原则进行任务划分,意义:减少系统用于任务间同步的资源开销达到了任务级的时间内聚性,10.2.1任务划分原则,6周期执行的功能原则按照该原则进行任务划分的方法是:(1)将在相同时间周期内执行的各项功能组织成一个任务(2)频率高的任务赋予高的任务优先级例:采集任务与显示任务,10.2.1任务划分原则,图10-8按照周期执行的功能原则进行任务划分,10.2.2任务间通讯机制的选择,详见7.2节,10.2.3任务的细节设计,1正确性(1)函数的可重入性如果一个函数能被多个任务同时调用且不发生冲突,那么该函数是可重入的要求用户编写的自定义函数嵌入式操作系统提供的库函数均具有可重入性详见7.1.10节,10.2.3任务的细节设计,(2)ISR的编程规范基本限制:不能调用可能阻塞中断的系统服务基本要求要求短小、精简详见7.3.6节,10.2.3任务的细节设计,(3)生存性在多任务系统中要避免死锁、活锁、饥饿、优先级倒置的出现,10.2.3任务的细节设计,死锁(Deadlock)死锁是指任务相互占有其它任务所需资源而形成的“链”状结构例:三角债避免死锁:认真规划是关键在开始编码之前,通过图解多线程应用程序,通常可以预测死锁,10.2.3任务的细节设计,活锁(Lockout)活锁是指一个任务所需资源永不满足例:生产者与消费者问题,消息队列生产者在没有与系统脱离耦合之前被其它任务删除,则产生活锁,图10-10生产者与消费者的问题,10.2.3任务的细节设计,饥饿(Starve)饥饿指一个任务所需CPU资源得不到满足例:美国曾经设计了一个作业系统,系统为每个任务分配一个优先级,然后按照优先级的顺序去处理这些任务,用户可以将自己的程序设定好优先级以后,放在作业系统中运行,当系统管理员在十几年以后去查看这个系统的作业运行情况的时候,发现有一个程序在系统中沉寂了十几年没有得到执行。,10.2.3任务的细节设计,造成饥饿的主要原因:优先级较高的任务调度过于频繁或占用时间太长饥饿解决方法:合理的分配任务的优先级和对较高优先级任务的合理调度,10.2.3任务的细节设计,优先级倒置/翻转(Inversion)是指高优先级任务因等待低优先级任务占用的互斥资源而被次高优先级任务不断抢占有些RTOS自身提供保护机制可对优先级翻转进行预防,例如VxWorks和VRTX在RTOS(如pSOSystem)未提供保护的情况下,就需要编程人员在编程的时候采取相应的手段进行处理(如动态的进行优先级提升),10.2.3任务的细节设计,2可靠性任务访问方面:通过任务名、消息队列名、信号量名来访问这些资源,不是直接访问TCB,能保证可靠性,同时便于程序的阅读例:VxWorks操作系统提供taskName()、taskNameToId()、taskIsSelf()等系统调用,方便了用户对任务资源的管理,更加直观化,10.2.3任务的细节设计,任务删除方面:任务要自杀,不要他杀任务一般既是生产者又是消费者,任务自杀前应先与系统脱离耦合,然后自杀,以免任务之间的相互干扰。例:一个消息队列的生产者在没有与系统脱离耦合之前被其它任务删除,则会产生活锁。,10.2.3任务的细节设计,3容错性任务采用特殊的容错和出错处理措施,如VxWorks环境下使用Signal、Watchdog等,使系统具有故障诊断和修复能力,在运行死机之后自动恢复先前的运行状态,10.2.4多任务软件系统设计实例,飞机控制系统(见教材),10.2.4多任务软件系统设计实例,1.需求分析:得到系统功能框图,图10-11飞机控制系统的功能框图,10.2.4多任务软件系统设计实例,系统功能框图中:(1)飞机传感器数据必须每20ms采样一次(2)飞机的副翼每20ms调整一次(3)飞行员命令的发生是基于中断事件,但命令的获取低于上面两个事件的优先级(4)飞行员驾驶室内的显示延时不能大于200ms,10.2.4多任务软件系统设计实例,2.系统的设计任务划分:6类(1)获得传感器数据的任务(2)获得飞行员命令的任务(3)控制计算任务(4)过滤与存储飞机状态任务(5)控制飞机副翼的任务(6)飞行员驾驶室内的显示任务,10.2.4多任务软件系统设计实例,中断服务例程:2个硬件时钟的ISR飞行员坐舱命令获取的ISR整个系统多任务流程图见下图,10.2.4多任务软件系统设计实例,图10-12飞机控制系统的多任务流程图,10.2.4多任务软件系统设计实例,(1)硬件时钟的中断服务例程该ISR使用N+1个二进制信号量用于同步,以激活20ms的时间关键性周期任务(传感器数据控制飞机副翼)获得传感器数据的任务和控制飞机副翼的任务的执行模式:中断ISR任务,10.2.4多任务软件系统设计实例,(2)飞行员坐舱命令获取的中断服务例程该ISR使用1个二进制信号量用于同步,以激活飞行员坐舱命令获取任务命令获取任务的执行模式:中断ISR任务,10.2.4多任务软件系统设计实例,(3)获得传感器数据的任务高优先级的输入设备服务一类传感器对应一个任务,N类传感器N个任务被赋予较高的任务优先级,每20ms被硬件时钟ISR发送的同步信号量触发,当它从传感器上读取数据后,向信箱发送消息,10.2.4多任务软件系统设计实例,(4)获得飞行员命令的任务低优先级的输入设备服务硬件ISR发送同步信号量,激活该任务获得飞行员命令该任务赋予较低的优先级。当高优先级的任务不运行时,该任务从飞行员坐舱中读取命令数据并处理它们,10.2.4多任务软件系统设计实例,(5)控制计算任务控制计算任务位于关键相应路径上,需要快且确定的计算出飞机副翼的控制值赋予控制计算任务高的任务优先级,10.2.4多任务软件系统设计实例,(6)过滤与存储任务六类任务中,过滤与存储任务的优先级最低只有当其它任务均不运行时,才执行此任务,它重复的执行计算,以消耗CPU的剩余时间,10.2.4多任务软件系统设计实例,(7)控制飞机副翼的任务高优先级的输出设备服务该任务是软件处理的最关键部分的结尾部
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论