不仅依赖计算结果的正确性,而且依赖计算结果产生的时间。Wolfgang A. Halang 认为实时系统区别于其它系统就在于它包括了时间范围。Zephor把实时系统描述为:硬实时系统是一个在时间要求得不到满足的情况下会发生失败的系统,不能响应将会引起灾难性后果,其响应时间必须是可以预知的,并且独立于操作系统的其他活动;软实时系统可以容忍操作系统服务(例如:中断、计时器和调度)在交付时的大范围的时间变动,它只要求对事件的响应足够快,并且每次的响应时间具有足够的一致性来满足具体应用的需要即可。Donald Gillies 提出的更加为大家接受的定义是:一个实时系统是指计算的正确性不仅取决于程序的逻辑正确性,也取决于结果产生的时间,如果系统的时间约束条件得不到满足,将会发生系统出错[37]。《牛津计算字典》的解释是这样的:实时系统是这样的一些系统,在这些系统中,产生输出结果的时间是至关重要的。这是因为输入时间往往对应着物理世界中的某种运动,输出则必须针对同一运动。因此,从输入到输出的延迟必须小于一个可以接受的界限。
这些定义都有一个共同的特点就是都承认实时系统的响应时间(输入到输出的时间)是极其重要的。因此,我们在此可以认为实时系统是指时效性对于保证正确性及其重要的系统,系统的正确性不仅依赖于计算结果的正确性,而且依赖于计算结果产生的时间是否满足给定的约束。在极端的情况下,这种约束被指定为时限,即一个时间值(从一个起始激励开始指定),在这个时间之前结果动作必须完成。实时系统常用的三种实时约束为:硬(hard)、软(soft)和严格(firm)[38-40]:
(1) 硬实时约束:滞后的响应是不正确的且说明系统出错,如果所产生的结果不符合时间约束,那么,由此带来的错误将是严重的和不可恢复的。超时响应可能会带来灾难性的后果。如核反应堆控制系统。
(2) 软实时约束:用平均响应时间来说明时间要求。即如果一个计算滞后,一般并不产生显著的影响,但如果持续计算滞后则导致系统出错。如通信系统VOIP。虽然结果的产生不符合时间约束,但由此带来的错误是可以被接受和恢复的。
(3) 严格实时约束:是硬和软时间限制的结合。允许偶尔错过截止时间,但超时的计算结果必须丢弃。
实时约束规范需要通过增加注释和逻辑表达式,使用时序逻辑或在时序上构造形式化规范语言来对编程语言的扩展。时间可以是稠密的(dense)或者离散的(discrete),因此,需要有不同的方法来合成和检验实时系统。
一般地,检验一个系统是否满足实时性能目标主要可以从以下三步[41]:
(1) 保证每一个应用的定时约束同实时系统的高层需求不矛盾,并保证各个独立组件的定时约束彼此一致。
(2) 如果各个组件所要求的资源都具备的话,要保证所有组件单独执行是都能满足他们的定时约束。
(3) 当把所有的应用放在一起竞争系统所有可用资源,并按照现时操作系统和网络所用的算法一起调度时,要保证这些应用总能满足定时约束。
总之,在实时系统中,时间是一种重要的资源,对外部事件的响应和任务执行都必须在限定的时间内完成。在分布式系统中,还必须在限定时间内完成消息的发送和接收。实时系统输出结果的正确性不仅取决于计算所形成的逻辑结果,还要取决于结果产生的时间。
2.1.2 实时系统的特征及要求
实时系统不但具有一般系统的特性,而且还具有自身特征:
(1) 嵌入式:实时系统经常是嵌入式系统,一般嵌入式系统都必须满足一定的实时要求。
(2) 与外部环境交互:实时系统必须能够接收外部环境的信号输入,然后在特定的时间范围内完成事件的处理,并给出正确的处理结果到外部环境。
(3) 时间约束:实时系统必须在给定的时间范围内对输入事件做出响应,进行处理,不满足时间约束的处理被认为是错误的,可能会导致灾难性的后果。例如在飞机调度系统中,超时响应可能会导致两架飞机在半空中相撞,造成灾难性的后果。
(4) 实时控制:实时系统有时不需要人为的干预,而要求系统能自动根据输入数据做出控制决定。例如在汽车自动驾驶系统中,在设定为"保持车速"的状态下,系统能够自动检测车速调整油阀门的大小来保持车速。
(5) 响应式系统:实时系统往往是事件驱动的系统,在外部事件激励下,系统能根据自身的状态做出响应。
同时,实时系统还必须满足以下的要求:
(1) 实时性:实时性是指系统的功能正确性不仅依赖于产生正确的逻辑结果,而且依赖于结果产生的时间,亦即系统必须在预定的时限内对某些输入做出反应。在实时系统中,每个任务都有一个截止时间,任务必须在这个截止期之内完成,以此来保证系统所产生的结果在时间上的正确性。
(2) 同时性:一般来说,一个实时系统常常有多个输入源,这就要求系统具有并行处理的能力,以便能同时处理来自于不同源点的输入。
(3) 可预测性:这是指实时系统的行为必须在一定的限度内,而这个限度是可以从系统的定义而获得的。这意味着系统对来自于外部输入的反映必须全部是可预测的,尽管在最坏条件下,系统也要严格遵守时间约束。因此,在出现过载的时候,系统必须要能以一种可预测的方式来降低其性能。
(4) 可靠性:可靠性是指系统的正确处理能力,即系统所产生的结果不仅在值上是正确的,而且在时间上也是正确的。
(5) 健壮性:健壮性是指系统的容错能力,即系统出现了错误或外部环境与定义不符,系统仍然可以处于可预测状态,仍可以安全地带错运行或降级。
2.1.3 实时系统的开发过程
一般系统的开发,可以分为以下几个阶段:分析和定义、设计、编码、测试和交付等。设计实时系统有两个相对的目标,一是保证严格的时间限制;二是易于验证、有效地利用资源并适应变化的环境。为了达到这两个目标,应当使用清晰的结构化的设计方法,并采用重用和增量式设计,才能符合软件发展的本质[42]。
图2-1 实时系统设计的瀑布模型[42]
Figure 2-1 Waterfall Model of Real-Time Systems Design
"瀑布模型"软件开发方法是最简单,而且应用最多的开发方法,它所定义的软件开发过程如下:
(1) 需求分析和规格说明:决定系统要干什么。
(2) 结构设计:分解系统成任务或模块并决定系统的行为。
(3) 详细设计:决定系统各个部分细节。
(4) 编码:给各个部分编码。
(5) 单元测试:测试系统各个模块。
(6) 联合测试:组合各个测试的模块进行集中测试。
(7) 系统测试:测试整个软件和硬件系统。
(8) 验收测试:由用户方接收系统时测试。
因此,可以对"瀑布模型"进行适当的改进,使其满足实时系统的设计要求,建立适合实时系统软件开发的设计框架,就能够较好地解决了上述问题[42,43],实时系统的瀑布模型设计框架如图2-1所示。
瀑布模型的设计框架,能够尽量使用早期的静态实时分析代替后期的动态分析,极大地减少了由于调度分析、时间预测和时间测量错误导致整个设计结构改变的可能性。
2.1.4 实时系统的建模方法
在实时系统的开发过程中,每个阶段的出错都将导致系统开发的失败,特别是分析和设计尤为重要。如果分析和设计阶段的出错,会导致更大的开发代价,有时甚至导致整个系统的失败。因此,设计者应该把重点放在系统的早期开发阶段,建立适当的系统模型,确定分析和设计的结果,提高系统的可靠性。
实时系统的建模方法可以分为两类:形式化方法和非形式化方法。不同的实时系统的采用不同的建模方法,例如Petri网、时间自动机、进程代数和面向对象方法等。
1. Petri 网
定义1. 一个标准的Petri网是一个5元组(P,T,I,O,M0),其中
P={p1,p
上一篇:
基于PLC的立体车库控制系统的设计(word文档)
下一篇:
基于JSP邮件收发系统论文