嵌入式软件的编程与优化.ppt
- 文档编号:2640563
- 上传时间:2022-11-04
- 格式:PPT
- 页数:45
- 大小:2.23MB
嵌入式软件的编程与优化.ppt
《嵌入式软件的编程与优化.ppt》由会员分享,可在线阅读,更多相关《嵌入式软件的编程与优化.ppt(45页珍藏版)》请在冰豆网上搜索。
多任务编程技术多任务编程技术第第10章章嵌入式软件的编程与优化嵌入式软件的编程与优化10.2多任务编程技术多任务编程技术n任务划分原则任务划分原则n任务间通讯机制的选择任务间通讯机制的选择n任务的细节设计任务的细节设计n多任务软件系统设计实例多任务软件系统设计实例10.2.1任务划分原则任务划分原则n嵌入式多任务软件系统的设计阶段:
嵌入式多任务软件系统的设计阶段:
系统功能框图系统功能框图多任务流程图多任务流程图例:
数据采集系统的功能框图例:
数据采集系统的功能框图转化为转化为传感器1传感器2数据处理显示处理功能子处理功能数据图图10-2数据采集系统功能框图数据采集系统功能框图10.2.1任务划分原则任务划分原则n任务划分存在以下一对矛盾任务划分存在以下一对矛盾n如果划分的任务数太多,必然增加系统任务切换的如果划分的任务数太多,必然增加系统任务切换的开销开销n如果任务数太少,系统的并行度和实时性将降低如果任务数太少,系统的并行度和实时性将降低10.2.1任务划分原则任务划分原则n任务划分的任务划分的H.Gomma原则原则n
(1)I/O依赖性原则依赖性原则(DependencyonInput/OutputDevice)n
(2)时间关键性的功能原则时间关键性的功能原则(Time-CriticalFunctions-HardDeadline)n(3)大计算量的功能原则大计算量的功能原则(HeavyComputationFunction)10.2.1任务划分原则任务划分原则n(4)功能内聚性原则功能内聚性原则(FunctionalRelations)n(5)时间内聚性原则时间内聚性原则(TemporalRelations)n(6)周期执行的功能原则周期执行的功能原则(CyclicExecutingFunction)核心思想核心思想:
系统内功能的异步性系统内功能的异步性10.2.1任务划分原则任务划分原则1I/O依赖性原则依赖性原则n如果变换依赖于如果变换依赖于I/O,则变换运行的速度常常受限于则变换运行的速度常常受限于与它互操作的与它互操作的I/O设备的速度。
在这种情况下,变换应设备的速度。
在这种情况下,变换应该成为一个独立的任务该成为一个独立的任务图图10-3按照按照I/O依赖性原则进行任务划分依赖性原则进行任务划分10.2.110.2.1任务划分原则任务划分原则n按照按照I/OI/O依赖性原则进行任务划分的方法依赖性原则进行任务划分的方法n
(1)
(1)在系统中创建与在系统中创建与I/OI/O设备类型数目相当的设备类型数目相当的I/OI/O任务,一个任务管理一类任务,一个任务管理一类I/OI/O设备(非一个任务管设备(非一个任务管理一个理一个I/OI/O设备)设备)例:
例:
33个个RS232RS232、44个个USBUSB、22个以太网个以太网n
(2)I/O
(2)I/O任务只实现与设备相关的功能代码,任务任务只实现与设备相关的功能代码,任务中分离设备相关性中分离设备相关性n(3)I/O(3)I/O任务的执行只受限于任务的执行只受限于I/OI/O设备的速度,而设备的速度,而不是处理器的速度不是处理器的速度10.2.1任务划分原则任务划分原则2时间关键性的功能原则时间关键性的功能原则按照该原则进行任务划分的方法是按照该原则进行任务划分的方法是:
n
(1)将有时间关键性(即最后时间期限将有时间关键性(即最后时间期限Deadline)的功能分离出来,组成独立运行的任务的功能分离出来,组成独立运行的任务n
(2)赋予这些任务高的优先级,以满足赋予这些任务高的优先级,以满足Deadline的要求的要求例:
刀具切割机例:
刀具切割机10.2.1任务划分原则任务划分原则图图10-4按照时间关键性的功能原则进行任务划分按照时间关键性的功能原则进行任务划分10.2.1任务划分原则任务划分原则3大计算量的功能原则大计算量的功能原则按照该原则进行任务划分的方法是按照该原则进行任务划分的方法是:
n
(1)当计算功能占用当计算功能占用CPU的时间较多时,捆绑计的时间较多时,捆绑计算功能成任务,赋予它们较低优先级运行,这样一算功能成任务,赋予它们较低优先级运行,这样一方面消耗方面消耗CPU的剩余时间,另一方面能被高优先的剩余时间,另一方面能被高优先级的任务抢占级的任务抢占n
(2)保持高优先级的任务是轻量级的保持高优先级的任务是轻量级的n(3)多个计算任务可安排成相同优先级,按照时多个计算任务可安排成相同优先级,按照时间片循环轮转间片循环轮转10.2.1任务划分原则任务划分原则图图10-5按照大计算量的功能原则进行任务划分按照大计算量的功能原则进行任务划分10.2.1任务划分原则任务划分原则4功能内聚性原则功能内聚性原则按照该原则进行任务划分的方法是按照该原则进行任务划分的方法是:
n
(1)各紧密相关的功能,不要分别对应不同的任各紧密相关的功能,不要分别对应不同的任务务n
(2)将这些紧密相关的功能组,组成一个任务,将这些紧密相关的功能组,组成一个任务,使各功能共享资源或相同事件的驱动使各功能共享资源或相同事件的驱动10.2.1任务划分原则任务划分原则图图10-6按照功能内聚性原则进行任务划分按照功能内聚性原则进行任务划分意义:
意义:
减少系统的通讯开销减少系统的通讯开销保证了任务级的功能内聚性保证了任务级的功能内聚性10.2.1任务划分原则任务划分原则5时间内聚性原则时间内聚性原则按照该原则进行任务划分的方法是按照该原则进行任务划分的方法是:
n
(1)将在同一时间内完成的各功能将在同一时间内完成的各功能(即使是不相即使是不相关的关的)组成功能组,形成一个任务组成功能组,形成一个任务n
(2)功能组内的各功能是由相同的外部事件驱动功能组内的各功能是由相同的外部事件驱动的(如时钟等),这样每次任务接收到一个事件的(如时钟等),这样每次任务接收到一个事件时,它们都可以同时执行时,它们都可以同时执行例:
早晨起床以后刷牙、洗脸、吃早饭几项事情例:
早晨起床以后刷牙、洗脸、吃早饭几项事情10.2.1任务划分原则任务划分原则图图10-7按照时间内聚性原则进行任务划分按照时间内聚性原则进行任务划分意义:
意义:
减少系统用于任务间同步的资源开销减少系统用于任务间同步的资源开销达到了任务级的时间内聚性达到了任务级的时间内聚性10.2.1任务划分原则任务划分原则6周期执行的功能原则周期执行的功能原则按照该原则进行任务划分的方法是按照该原则进行任务划分的方法是:
n
(1)将在相同时间周期内执行的各项功能组织成将在相同时间周期内执行的各项功能组织成一个任务一个任务n
(2)频率高的任务赋予高的任务优先级频率高的任务赋予高的任务优先级例:
采集任务与显示任务例:
采集任务与显示任务10.2.1任务划分原则任务划分原则图图10-8按照周期执行的功能原则进行任务划分按照周期执行的功能原则进行任务划分10.2.210.2.2任务间通讯机制的选择任务间通讯机制的选择详见详见7.27.2节节10.2.3任务的细节设计任务的细节设计1正确性正确性n
(1)函数的可重入性函数的可重入性n如果如果一个一个函数函数能能被多个任务同时调用且不发生冲被多个任务同时调用且不发生冲突突,那么该函数是可重入的那么该函数是可重入的n要求用户编写的自定义函数嵌入式操作系统提要求用户编写的自定义函数嵌入式操作系统提供的库函数均具有可重入性供的库函数均具有可重入性n详见详见7.1.10节节10.2.3任务的细节设计任务的细节设计n
(2)ISR的编程规范的编程规范n基本限制:
基本限制:
不能调用可能阻塞中断的系统服务不能调用可能阻塞中断的系统服务n基本要求要求基本要求要求短小、精简短小、精简n详见详见7.3.6节节10.2.3任务的细节设计任务的细节设计n(3)生存性生存性在多任务系统中要避免死锁、活锁、饥饿、优先在多任务系统中要避免死锁、活锁、饥饿、优先级倒置的出现级倒置的出现10.2.310.2.3任务的细节设计任务的细节设计n死锁(死锁(DeadlockDeadlock)n死锁是指任务相互占有其它任务所需资源而死锁是指任务相互占有其它任务所需资源而形成的形成的“链链”状结构状结构例:
三角债例:
三角债n避免死锁避免死锁:
认真规划是关键认真规划是关键在开始编码之前,通过图解多线程应用程序,在开始编码之前,通过图解多线程应用程序,通常可以预测死锁通常可以预测死锁CBA甲丙乙10.2.3任务的细节设计任务的细节设计n活锁(活锁(Lockout)活锁是指一个任务所需资源永不满足活锁是指一个任务所需资源永不满足例:
生产者与消费者问题,消息队列生产者在没有与系统例:
生产者与消费者问题,消息队列生产者在没有与系统脱离耦合之前被其它任务删除,则产生活锁脱离耦合之前被其它任务删除,则产生活锁图图10-10生产者与消费者的问题生产者与消费者的问题10.2.3任务的细节设计任务的细节设计n饥饿(饥饿(Starve)n饥饿指一个任务所需饥饿指一个任务所需CPU资源得不到满足资源得不到满足例:
美国曾经设计了一个作业系统,系统为每个任务分配例:
美国曾经设计了一个作业系统,系统为每个任务分配一个优先级,然后按照优先级的顺序去处理这些任务,用户一个优先级,然后按照优先级的顺序去处理这些任务,用户可以将自己的程序设定好优先级以后,放在作业系统中运行,可以将自己的程序设定好优先级以后,放在作业系统中运行,当系统管理员在十几年以后去查看这个系统的作业运行情况当系统管理员在十几年以后去查看这个系统的作业运行情况的时候,发现有一个程序在系统中沉寂了十几年没有得到执的时候,发现有一个程序在系统中沉寂了十几年没有得到执行。
行。
10.2.3任务的细节设计任务的细节设计n造成饥饿的主要原因造成饥饿的主要原因:
优先级较高的任务调度过于频繁或占用时间太长优先级较高的任务调度过于频繁或占用时间太长n饥饿解决方法:
饥饿解决方法:
合理的分配任务的优先级和对合理的分配任务的优先级和对较高优先级任务的合理调度较高优先级任务的合理调度10.2.3任务的细节设计任务的细节设计n优先级倒置优先级倒置/翻转(翻转(Inversion)n是指高优先级任务因等待低优先级任务占用的是指高优先级任务因等待低优先级任务占用的互斥资源而被次高优先级任务不断抢占互斥资源而被次高优先级任务不断抢占n有些有些RTOS自身提供保护机制可对优先级翻转自身提供保护机制可对优先级翻转进行预防,例如进行预防,例如VxWorks和和VRTXn在在RTOS(如(如pSOSystem)未提供保护的情况未提供保护的情况下下,就需要编程人员在编程的时候采取相应的就需要编程人员在编程的时候采取相应的手段进行处理(如动态的进行优先级提升)手段进行处理(如动态的进行优先级提升)10.2.310.2.3任务的细节设计任务的细节设计22可靠性可靠性n任务访问方面:
通过任务名、消息队列名、信号量任务访问方面:
通过任务名、消息队列名、信号量名来访问这些资源,不是直接访问名来访问这些资源,不是直接访问TCB,TCB,能保证可靠性,能保证可靠性,同时便于程序的阅读同时便于程序的阅读例例:
VxWorks:
VxWorks操作系统提供操作系统提供taskNametaskName()()、taskNameToIdtaskNameToId()()、taskIsSelftaskIsSelf()()等系统调用,方便了用户对任务资等系统调用,方便了用户对任务资源的管理,更加直观化源的管理,更加直观化10.2.310.2.3任务的细节设计任务的细节设计n任务删除方面:
任务要自杀,不要他杀任务删除方面:
任务要自杀,不要他杀n任务一般既是生产者又是消费者,任务自杀前应先任务一般既是生产者又是消费者,任务自杀前应先与系统脱离耦合,然后自杀,以免任务之间的相互干与系统脱离耦合,然后自杀,以免任务之间的相互干扰。
扰。
例:
一个消息队列的生产者在没有与系统脱离耦例:
一个消息队列的生产者在没有与系统脱离耦
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 软件 编程 优化
![提示](https://static.bdocx.com/images/bang_tan.gif)