“普及计算”时代:嵌入式系统重新划分计算机类别
由于事物的发展性,对事物的定义是很难放之四海而皆准的,尤其对于计算机领域而言,这种现象更加明显。以前我们把计算机按其体系结构、运算速度和结构规模等因素分为大、中、小型机和微机,并以此来组织学科和产业分工,后来随着微机处理速度的迅速提高,使得这种划分界限大大模糊化。而嵌入式计算机系统在当前及未来的大量应用,无疑会使得这一幕重新上演。
计算技术在各行各业的广泛渗透,使得嵌入式计算机在应用数量上将远远超过传统意义上的计算机,它可以应用于制造业、通讯、仪表、汽车、军事、航空航天和消费类电子产品等广阔领域。许多学者主张以应用为中心把计算机划分为两类:通用计算机(典型的如PC)和嵌入式系统。因为科技发展的动力在某种程度上总是欲使人类自身更为舒适,所以未来必定是一个“普及计算”(Pervasive Computing)的时代,在诸如家庭网络(Home Network)、汽车网络(Automobile Network)、移动电子商务(Mobile e-business)以及Financial Service Everywhere等普及计算的重要内容中,嵌入式系统都将是核心的组成部分之一。
在嵌入式系统中,软件与硬件是紧密集成在一起的。它和通用计算机有着本质的区别,由于它基于具体应用,所以在各种不同嵌入式系统之间,很难找到共通的特性。嵌入式系统的分析和设计无法延用传统方法。本专题围绕“嵌入式系统开发技术”这个核心,组织了以下四篇文章:
1. 实时系统软件分析和设计方法综述
2. 嵌入式系统软件的面向对象开发技术
3. 实时操作系统任务间通信的设计与分析
4. 嵌入式计算机系统的设计技术
本专题分两次刊出,本期刊出前两篇文章.
实时系统简介
实时系统在工业、商业和军事等领域都有非常广泛的用途,并且已经有很多实际的应用。一般来说,实时系统通常是比较复杂的,因为它必须处理很多并发事件的输入数据流,这些事件的到来次序和几率通常是不可预测的,而且还要求系统必须在事先设定好的时限内做出相应的响应。
那么,是不是响应时间在多少毫秒或多少微秒以内的系统就是实时系统,而超出这个时限的就不算呢?事实上,实时系统并非是指“快速”的系统,实时系统有限定的响应时间,从而使系统具有可预测性。实时系统又可以分为“硬实时系统”和“软实时系统”。二者的区别在于:前者如果在不满足响应时限、响应不及时或反应过早的情况下都会导致灾难性的后果;而后者则在不满足响应时限时,系统性能退化,但并不会导致灾难性的后果。
实时系统具有以下一些特点,从而区分于其他系统:
嵌入式系统
实时系统通常是嵌入式的系统,也就是由封装好的软件系统控制与其相关的硬件。
与外部环境交互
实时系统通常需要与外部环境进行交互,例如,可以控制机器及生产过程,或者监控化学反应并随时汇报危急情况,这种情况通常需要从外部接收数据并提供输出和控制外部环境。
时限
实时控制
实时系统经常包括实时控制,从接收到的输入数据中做出控制决策。
“反应”系统
很多实时系统都是“反应”的系统,也就是说,由事件驱动并且必须对外界事件进行响应。
并发处理
绝大多数实时系统的一个重要特点是并发处理,通常,事件发生的顺序是不可预测的。
一些重要概念
与一般的系统设计一样,实时系统软件也包括一些和一般系统相同的分析和设计概念,在这里不再讨论。下面列出几点对于实时系统设计有特别重要意义的概念:
有限状态机(FSM)
很多实时系统,特别是实时控制系统,其整个分析机制与系统的状态有相当大的关系。有限状态机由有限的状态和相互之间的转移构成,在任何时候只能处于给定数目的状态中的一个。当接收到一个输入事件时,状态机产生一个输出,同时也可能伴随着状态的转移。主要有两种方法来建立有限状态机,一种是“状态转移图”,另一种是“状态转移表”,分别用图形方式和表格方式建立有限状态机。实时系统经常会应用于比较大型的系统中,这时采用图形或表格方式对理解复杂的系统具有很大的帮助。
并发任务
实时系统通常都会有很多事件同时产生。一个任务描述一个事件,整个系统的并发机制是通过让很多任务并行运行而实现的。一个强调并发任务的系统设计通常都会显得更加清楚并且易于理解。
信息隐藏
信息隐藏是一个与各种系统设计都有关的设计概念,原则是每个模块应该隐藏可能会做改变的设计结果。采用信息隐藏的原因是使模块可供修改,易于理解,因此也便于维护。
实时系统分析和设计的常用方法
首先要区分两个不同的概念:系统分析和系统设计。系统分析指的是由用户提供的,说明软件系统应该做什么以及需要在什么环境下运行等情况的方案;系统设计则是指那些由系统分析员或设计者提供的描述软件系统如何实现这些需求的方案。在实时系统的设计中,系统的瞬时表现是最难描述的,但同时也是最重要的因素。
以下具体地介绍实时系统设计的常用方法。
语言描述及数学分析
在系统分析和设计中,语言描述是不可缺少的,但其功能也只是对其他方法提供的分析和设计进行补充。在系统分析中,也可以采用数学分析来描述对系统功能的需求。数学分析是一种精确而有效的方法,对系统性能的优化可以通过优化相应的数学模型而获得,但在大系统中,其作用相对受限。
流程图
流程图也许是最早出现的软件系统模型,而且也有着很广泛的应用,因此,简单的系统可以采用流程图来进行建模。流程图适合指令不超过5000到10000条的系统。在多任务的系统中,流程图可用来对各个任务进行分别描述,但是进程之间的交互就不太容易描述,同时也无法描述其瞬时的表现。
结构图
结构图是一种广泛采用的、用以描述系统模块结构的方法。结构图从左到右代表了执行的顺序,从上到下代表了程序模块的细节化。结构图可以在相当多的计算机科学的文献以及其他描述系统的文章中见到。
伪代码和编程设计语言(PDL)
编程设计语言与伪代码只有细小的差别。编程设计语言是一种与系统运行的底层硬件环境相分离开来的抽象语言,它以一种类似于真正的编写代码的方式来说明系统。ADA就是一个成功应用编程设计语言的例子。
使用编程设计语言或伪代码的好处是,它们比直接应用语言来描述系统需求更抽象,而同时比前述所有方法都更接近实际的编程语言。
有限状态机
有限状态机是实时系统设计中的一种数学模型,是一种重要的、易于建立的、应用比较广泛的、以描述控制特性为主的建模方法,它可以应用于从系统分析到设计的所有阶段。有限状态机的组成如下:
(1) 一个有限的状态集合Q
(2) 一个有限的输入集合I
(3) 一个变迁函数δ:Q×I→Q
变迁函数也是一个状态函数,在某一状态下,给定输入后,FSM转入该函数产生的新状态。δ的定义域内的某些数值可以是未定义的。
有限状态机通常用图的方式来表示,其节点代表状态。若在输入i下状态由q1转变为状态q2,则有一条标有输入i的弧线从状态q1指向q2。此时,其变迁函数δ(q1,i)=q2。图1示意了一个简单的有限状态机。
图1 简单有限状态机
图1中的左图表明该FSM有q0、q1、q2、q3四个状态,输入集中有a、b、c三个元素;右图中各个状态之间的转换关系则更清晰。有限状态机非常适合于描述这样的系统:系统含有有限个状态,不同事件的发生可以用不同状态之间的转换来模拟。
总的来说,有限状态机的优点在于简单易用,状态间的关系能够直观看到。但应用在实时系统中时,其最大的缺点是:任何时刻系统只能有一个状态,无法表示并发性,不能描述异步并发的系统。另外,在系统部件较多时,状态数随之增加,导致复杂性显著增长。为了消除这些缺点,一些新的方法应运而生。下面介绍的Petri网就是其中一种,与FSM相比,它具有更强的建模能力,并能描述系统的并发、异步、同步等特性。
Petri网
Petri网是一种使用图形方式对系统进行需求规格说明的技术,用来定义多进程、多任务系统的数学模型,易于描述系统的并发、竞争、同步等特征,并可用于评价和改进系统。如今,Petri网已经大量应用于各种系统的模型化。与FSM相比,Petri网不仅能描述同步模型,更适合于相互独立、协同操作的处理系统。
Petri网的组成成分包括:
(1)一个有限的库所(place)集合,表示系统的状态。
(2)一个有限的变迁(transition)集合,表示系统中的事件。
(3)一个有限的连接库所到变迁或者反向的有向箭头的集合,又分输入和输出。
图2为一Petri网示例,图中的库所用圆圈表示,变迁由矩形表示。
Petri网有如下特性:
(1)状态
通过标记Petri网的库所来给出其状态,标记Petri网的库所在图形中表现为对库所插入数目不同的令牌。
(2)状态变化规则
一个变迁可以有多个输入或输出库所,如果一条有向箭头是从库所到变迁,则该库所是该变迁的一个输入库所,反之则为输出库所。如果一个变迁中每一个输入库所都至少有一个令牌,则称该变迁是一个使能变迁。
(3)点燃
一个使能变迁可以被点燃,即从该变迁的每一个输入库所中移走一个令牌,在该变迁的每一个输出库所中增加一个令牌。
图2 Petri网示例
图2中,库所中的星号代表令牌。由(a)中可以看出,变迁t1和t2都是使能的,(b)表示了点燃t1的过程,(c)表示了点燃t2的过程。从这个模型中可以看出,在给定初始令牌后,Petri网的发展过程可能是不同的。在Petri网中,经常利用变迁来模拟一个事件,而点燃则用来表示事件的发生。这样,如果一个变迁所表示的事件的发生条件是满足的,那么这个变迁就是使能的,库所中的星号标记则说明某个条件是满足的。图2中的Petri网可分为两部分,一部分是由变迁t1、t3组成,另一部分由t2、t4组成,这相当于是两个独立的工作流,并且共享了资源p3。开始时,双方可以互不干涉地、异步地进行,因为变迁t1和t2双方互不妨碍。点燃t1后,t3处于使能状态,点燃t2后,t4处于使能状态。在两个变迁都点燃后,两个工作流都有新的变迁处于使能状态,但是这两个变迁的点燃处于竞争状态,两个工作流中只能有一个获得p3的资源从而得以继续变迁。如果资源满足的情况可以解决这种冲突,就可以设p3的令牌有两个,两个工作流就互不干扰,可以并发执行。
数据流图
数据流图主要是作为软件系统建模中的结构化分析工具。建立数据流图从分析系统的功能需求开始,分析系统中的数据流并且确定主要的函数。数据流图需要细分系统和子系统,从而在图中对数据流有清楚的表现。
表1
方 法 | 优点 | 缺点 |
语言描述 | 广泛应用,能起说明作用 | 不够明确,无法相应产生代码。 |
数学分析 | 精确,是一种正式的分析方法,可在此基础上进行代码优化。 | 难于应用,并非很多系统设计人员都能够通过数学方式对系统分析。 |
流程图 | 广泛应用,对单任务系统非常适合。 | 没有并发处理,不能表现瞬时状态,多采用GOTO语句。 |
结构图 | 广泛应用,适合于小系统,鼓励自顶向下的设计方式。 | 没有条件转移,没有并发处理,不能表现瞬时状态。 |
伪代码和PDL | 与编程语言接近,是正式应用的分析和设计方法。 | 容易出错且不易发现。 |
有限状态机 | 广泛应用,易于建立,方便于代码产生和优化。 | 没有并发处理,随着状态的增加系统复杂性显著增加。 |
Petri网 | 广泛应用,适合于多进程处理,对并行性有很好的表示。 | 应用于过小的系统时显得不必要。 |
数据流图 | 广泛应用,并发处理,易于理解。 | 不易于表示同步性 |
控制流图是一种在系统中实现控制信号流的数据流图。这些控制信号能够描述离散的从开关或感应器得到的信号数据,同时也能包含从离散时钟得到的离散的定时信息。数据流图和控制流图结合使用,可以提供更具控制性的信息。
总体来说,数据流图特点是:强调数据的流动,不太强调控制信号的流动,对于确定并发性很有用。实际上,如果缺少了并发性的特点,数据流图就是有限状态机。数据流图最主要的缺点是描述同步很困难。
数据流图容易理解,应用广泛,通常是和一些其他方法结合使用来产生连贯的软件需求文档。
实时系统分析和设计方法总结
本文对应用于实时系统的、常用的多种分析和设计方法进行了简单的介绍。应该明确的一点是,没有一种分析或设计方法是可以应用于任何场合的,事实上,很多情况都是几种方法的混合使用。表1列出了文中所介绍的各种分析和设计方法,并简单列出其优缺点。
文章评论(0条评论)
登录后参与讨论