|
嵌入式培训那里好_一种提高构件化嵌入式操作系统性能的方案,
摘要:本文分析了现有构件化嵌入式操作系统所用调度算法存在的缺点,提出抢占阈值调度算法是更为合适的算法。通过仿真实验比较抢占阈值调度算法、非抢占式调度算法和FIFO(First-In-First-Out)调度算法的性能,证明了上述结论。通过分析现有嵌入式系统构件模型的特点,提出了一种构件模型以及将构件映射成任务的方式,还提出了一种设计方法。整个方案能提高构件化嵌入式操作系统的性能。
关键词:构件化嵌入式操作系统;抢占阈值调度;FIFO调度;构件模型
1前言
如何将构件技术成功地应用到嵌入式操作系统开发中得到越来越多的重视。现有的工作大部分着重于从结构的角度分解系统成若干构件,并重用构件。实际嵌入式实时系统的处理器资源和内存资源是有限的,同时系统还有实时性需求。另外,当前成熟的实时调度算法都是基于任务模型分析系统的可调度性。所以,在嵌入式实时系统中应用构件技术时,还需要研究如何从时间(运行)的角度将构件映射成任务,以及为底层构件化嵌入式实时操作系统选择合适的调度算法。
本文首先分析了现有构件化嵌入式操作系统的特点,着重分析了TinyOS[1]的调度内核。通过仿真实验比较了抢占阈值(简称PT)调度算法[2]、非抢占式(简称NP)调度算法和FIFO调度方式的性能,证明了当任务之间无共享资源时,抢占阈值调度算法适合作为构件化嵌入式操作系统的实时调度算法。之后,本文论述了嵌入式实时系统对构件模型的需求,提出了一种构件模型。通过分析比较现有的映射方式,提出了一个将构件映射成任务的方式和一种设计方法。
2适合构件化嵌入式操作系统的调度算法
首先定义单处理器静态优先级实时系统的任务模型,定义G={t1,t2,…,tn}为一个包含n个相互独立的周期性或者偶发性(sporadic)任务的集合,集合中的任务用ti=(Ti,Ci,Di)(i=1,2,…n)表示,其中,Ti表示ti的周期(对于偶发性任务就是最小到达间隔),Ci表示ti的最坏情况执行时间,Di表示ti的相对截止期。我们假定大的数值表示高的优先级,对于集合G,最小的优先级是1,最大的优先级是n。周期任务的一次执行,称作任务的一个实例。任务实例从进入系统到结束执行所用的时间称作实例的响应时间(responsetime)。在一个系统的整个运行过程中,任务的最坏情况响应时间等于其所有实例中最大的响应时间。
2.1TinyOS存在的问题
当前的构件化嵌入式操作系统主要有TinyOS和Echidna[5]两种。TinyOS是为无线传感器网络(WirelessSensorNetwork,简称WSN)开发的构件化嵌入式操作系统,适用于内存资源和处理能力有限,电池供电的嵌入式系统。其内核支持两级调度,任务按照FIFO的方式执行,目的是减少对内存的使用量,但造成系统实时性差。Echidna与TinyOS一样使用FIFO的方式调度任务,因此存在相同的缺点。
V.Subramonian等人在文献[6]中研究了FIFO调度方式对TinyOS系统性能的影响。在使用TinyOS的系统中,当需要处理的数据量较大时,如果超过其计算能力,则会出现过载(overload)现象。处理过载的较好方式一般是保证关键任务的执行,放弃非关键任务。而FIFO调度方式不能做到这一点,因为这种方式无法区分关键任务和非关键任务。下面通过分析TinyOS对通信数据包的处理来说明其缺点。
发送数据包由应用层产生并传递给底层发送构件,当成功发送后,后者会触发一个任务实例来通知应用层发送完毕。应用层在收到这一事件之前将一直等待,不能继续发送数据。即,只有通知任务实例得到执行,应用层才能继续发送数据。如果TinyOS当前需要处理的数据量较大,有较多的任务实例需要执行,则通知任务实例会排在FIFO队列的最后,等到前面的任务实例执行完才得以执行。这样就延缓了发送数据的过程,降低了通信数据包的吞吐量。在极端情况下,其它任务实例会将整个FIFO队列占满,通知任务实例到达时会被调度内核放弃,造成应用层发送数据的终止。从无线信道接收数据时同样会出现这种情况。
文献[6]中提出了一种改进措施,给任务分配优先级,将调度内核升级为优先级驱动的非抢占式调度。这样与FIFO调度方式相比,能提高任务集合的可调度性,但仍会出现任务集合不可调度的情况。
2.2抢占阈值调度算法适合构件化嵌入式操作系统
利用抢占阈值进行任务调度时,不但给集合G中的任务ti分配任务优先级pi |
|