基于Petri网的嵌入式软件组件的实时性研究
扫描二维码
随时随地手机看文章
随着科技的发展,大多数的电子系统和产品含有特定的硬件器件和功能模块,显然这些系统是多种类、嵌入式的。嵌入式的软/硬件设计是一项复杂工作,为了满足系统的可靠性、运行效果、内存受限等要求,嵌入式系统除了需要实现功能需求外,非功能性的约束(Non-functional constraints)也是非常重要的。非功能性约束包括实时性、程序性能、稳定性、可靠性、安全性、内存限制、存储空间限制等[1-2]。对于非功能性约束的考虑方法可以分为两大类:面向过程(process-oriented)的方法和面向产品的方法(product-oriented)。面向过程的方法,指使用非功能性约束信息指导软件的开发过程。面向产品的方法,指在组件内部描述非功能性约束信息,并检查组件构成的产品的非功能性约束信息判断软件是否满足要求的非功能性约束。本文中使用面向产品的方法对嵌入式组件模型SECOM(Simple Embedded Component Object Model)的非功能性约束进行分析,在组件内部采用Petri网方法描述非功能性约束信息。
1 时间Petri网
Petri网是一种可用图形表示的组合模型,具有直观、易懂和易用的优点,可用于模拟带有并发性、异步性、分布式、非确定性、并行性等特性的系统。而用时间Petri网[3-4](简称时间网TPN)建立系统的动态模型,可进一步将系统中事件从发生到结束所需的时间描述出来。
时间网TPN中表示事件的持续时间的方法有两种:一种是将各事件的持续时间标在库所的旁边,表示库所中产生的托肯要经过一定的时间后才能参与网中的运行;另一种方法是将时间标注在变迁的旁边,表示当该变迁具有发生条件时要延迟一段时间后才能发生,或该变迁发生后,立即从相应的输入库所中移走相应的托肯,但要延迟一段时间后才在相应的输出库所中产生相应的托肯[5-6]。在下面的时间P/T网定义中采用的是后一种方法。
定义1:当某一变迁的发生条件满足时,若该变迁要延迟一段时间后才从相应的输入库所中移走相应的托肯并得到发生后果,或该变迁发生后,立即从相应的输入库所中移走相应的托肯,但要延迟一段时间后才得到发生后果,则称这样的变迁为时间变迁。
定义2:当某一变迁的发生条件满足时,若该变迁立即从相应的输入库所中移走相应的托肯,且立即得到发生后果,则称这样的变迁为立即变迁。
在时间P/T网的图形表示中约定,用矩形框表示时间变迁,用黑线表示立即变迁。下面是时间P/T网模型的形式化定义。
根据延迟时间是一个固定值还是一个区间值,TPN还可分为固定延迟时间P/T网和不固定延迟时间P/T网。在固定延迟时间P/T网中,对于任意的变迁t∈T1,都有一个非负的实数r与之相对应,使得变迁t的延迟时间为r。在不固定延迟时间P/T网中,对于任意的变迁t∈T1,都有一个对偶[Bcet,Wcet]与之相对应(Bcet≥0,Wcet≥0),使得若在a时,t的发生条件成立,则t可在时间区间[a+Bcet,a+Wcet]内执行,即t有效时,其相应的输入库所中的托肯将至少保留Bcet s,直至(a+Wcet) s时才移出,或t有效时,其相应的输入库所中的托肯立即移出,但将至少保持Bcet s,直至(a+Wcet) s时才产生后继标识,本文中将采用第一种方式。
2 SECOM组件模型
基于嵌入式系统高度可裁剪性、资源受限的特点和对当前现状的分析[6],本文给出一种新的、基于源代码复用的、精简的嵌入式组件模型SECOM。该组件模型包含以下元素:
(1)瘦组件:SECOM组件是设计、开发、重用的单元,是程序的基本组成块,是在完成基本功能前提下的极小化,所以称之为“瘦组件”。组件与接口相互独立,是接口功能的具体实现者。组件之间通过接口通信,互相协作完成软件功能。组件的定义是可递归的。
(2)简接口:接口用来定义功能函数,是一组相关函数的集合,分离了瘦组件的定义与实现,彻底消除了接口调用者和实现者之间的耦合关系,增强了信息封装性。接口具有唯一性、不变性、继承性和多态性。同一接口在不同组件内有不同的实现方式。接口分为两类:①服务接口(Provide Interface),接口所在组件已经实现了此接口类型的功能,可以向组件外部提供服务;②请求接口(Require Interface),接口所在组件内没有实现此接口的功能,组件需要向外部请求此接口的实现。
(3)灵敏桥接器:桥接器完成接口之间的连接。根据现有条件的不同,采取不同的连接模式。连接模式有:直接连接(connecting),选择连接(selecting)和代码块粘连(gluing)。接口之间的消息交换是通过一个桥接器连接两个或更多的接口实例来实现[7-9]。组件模型类图如图1所示。
3 建模实时分析
嵌入式系统通常都是强实时性的,为了对实时性更有效地建模和分析,首先建立一个如图2所示的TPN计时器timer,其中T1是一个时间变迁,延迟时间是一个固定值r,且r=Wcet。经过时间r s后,P01中的托肯才会移出,P02中则会出现托肯;否则,当小于时间r,并且有其他条件满足时,finish变迁会发生。
下面对SECOM组件模型进行实时建模分析。图3中圆圈表示组件状态,timer是前面利用TPN建立的计时器。其中M0={1,0,0,0,…}是初始标识;P={P1,P2,…,P3,P4,P5}是一个有限库所集;P1:接收其他组件访问该组件的一个请求require;P2:该组件处于连接和开始工作状态;P3:该组件处于工作结束状态;P4:请求得到响应后返回成功信息;P5:请求得不到响应,返回错误信息。
T={t1,t2,t3,t4}是一个有限变迁集,t1:请求P1经过变迁t1连接要访问的组件,同时激发计时器timer开始计时;t2:这是一个时间变迁,延迟时间是一个区间值[Bcet,Wcet],至少经过时间Bcet s,P2中的托肯才会移出,则P3中经过至少Bcet s时间才会出现托肯;t3:当t2的变迁时间小于等于Wcet时间时,库所P3和计时器中的库所P01都拥有托肯,则变迁t3的发生条件满足,即t3变迁发生,返回结果;t4:当t2的变迁时间大于Wcet时间时,计时器中的P02中拥有托肯,则变迁t4会发生,返回失败消息。
以上是对一个基本组件的实时建模。从P1状态经过P2和P3到达P4状态,表明了该组件从收到请求、建立连接开始工作到结束工作,返回成功信息。而从P1状态不经过P2和P3到达P5状态,则说明请求未能得到满足,返回错误信息。在SECOM模型中,t2变迁发生的时间处于[Bcet,Wcet]区间,从而说明该组件模型满足实时性的要求。
当访问一个不太复杂的复合组件时,有些访问子组件步骤之间会出现顺序问题,即会出现同步问题,因而需采取措施防止冲突发生。所采取的措施为:在两个请求之间加入一个控制库所P00,由它来控制访问的次序。从P11到t21的虚边体现了require1比require2有优先权:非空的P11阻止了t21的点火,其Petri网模型如图4所示。
对复合组件的分析,比较简单的方法就是将每一个子组件作为一个子网连接起来,循环执行。当访问一个非常复杂的复合组件、甚至整个系统时,调度任务繁琐,可以考虑引进一个单独的调度决策,由它完成对所有子组件的调度。
本文根据嵌入式系统的特点及其应用需求,设计了一种新的、简单的嵌入式组件模型SECOM,给出了模型的基本组成元素。同时,引入了时间Petri网,并使用时间Petri网TPN,建立了一个TPN计时器timer,利用其对该组件模型SECOM非功能性约束中的实时性进行建模与分析,从而形式化地验证了该组件具有很好的实时性。