一种基于Petri网的自动测试系统死锁预防策略

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一种基于Petri 网的自动测试系统死锁预防策略1

马敏,陈光礻禹

电子科技大学自动化工程学院,四川成都(610054)

摘 要:针对自动测试系统中多任务并行测试复杂,容易出现死锁现象的问题,提出一种基于Petri 网的死锁预防策略。首先为自动测试系统建立一个Petri 网模型,然后将Petri 网的状态方程作为约束条件,求出模型的发射序列即系统中无死锁的任务调度路径。Petri 网的发射序列求解一直是NP 问题,针对这种情况,引入遗传算法对可行解空间进行搜索。

关键词:自动测试系统,并行测试,死锁,Petri 网,遗传算法 中图分类号:TP202

1 引 言

随着自动测试系统的发展,多任务并行测试技术越来越受到广泛的应用。自动测试系统在同一时间完成多项测试任务,需要对被测任务和测试资源进行合理的调度,否则很容易发生死锁现象[1]。一旦发生死锁现象,系统就无法正常工作,因此死锁一直都是系统设计者在组建系统之前,必须考虑避免的现象。

Petri 网是Petri 博士于1962年提出的一种系统描述和分析的形式化建模工具。它作为一种数学方法,在离散事件系统建模、分析、性能评价和控制设计中得到广泛的应用,而且它能模拟系统的并发和冲突行为,反映系统的动态行为,因此经常被用来处理系统死锁问题[2],也适用于并行自动测试系统。同样Petri 网技术也已经应用到测试领域,文献[3]就是运用Petri 网来进行测试仪器特性描述。基于这种情况,本文提出一种基于Petri 网的自动测试系统死锁预防策略,并结合遗传算法搜索可行解。

2 基于Petri 网的自动测试系统死锁描述

2.1 Petri 网基本原理

Petri 网(Timed Transition Petri Net )定义为以下5元组:

0{}PN P T I O M =,,,,此处:1{,...,}n P p p =是库所的有限集合,为库所的个数;

是变迁的有限集合,为变迁的个数,并要求0n >1{,...,}m T t t =0m >P T =ΦI ;:I P T N ×→是输

入函数,为非负整数集;{0,1,...}N =:O T P N ×→是输出函数;0M 是Petri 网的初始状态。

2.2系统的Petri 网模型

首先为支持多任务并行测试的自动测试系统建立一个Petri 网模型,描述系统的结构与性能。

建立自动测试系统Petri 网模型的步骤如下:

1) 根据库所和变迁的定义以及测试实施的过程,确定自动测试系统的库所集和变迁集。 2) 确定库所和变迁之间的关系,得到自动测试系统初始Petri 模型。

3) 根据Petri 网的基本规则和实际系统的状况,确定Petri 模型的初始状态,即初始状态下的托肯数 (token),得到最终的Petri 网模型。

自动测试系统Petri 网模型中的库所可以分为三类,分别是操作库所,资源库所和闲置

1

本课题得到教育部博士点基金(20030614006)的资助。

库所。其中操作库所代表被测件的某一个参数的测试过程;资源库所代表测试过程中用到的测试资源,如测试仪器,计算机等;闲置库所代表测试过程的开始和结束状态。Petri 网模型中的变迁表示测试进行的过程,也可以反映测试子任务调度的路径,本文中将每个参数的测试看作一项子任务。例如:有两个测试任务,需要并行完成,每个测试任务需要完成三个参数的测试,故分解为三个子任务,三个子任务按顺序完成后,该测试任务结束,而且每个参数测试需要一定的测试仪器如,,。如表1 所示:

1J 2J 1m 2m 3m

表1 一个并行测试的例子 待测参数 1J 2J 参数1 1m

2m 参数2 2m 1m 参数3

3m

3

m

根据上述模型建立的规则,可以得到这两个测试任务并行完成的Petri 网模型,如图1所示:

6

P J 7P 8

P 9

P 10

P 5t 6

t 7t 8t

6

P J 2

J 7P 8

P 9

P 10

P 5

t 6

t 7t 8t

图1 并行测试的系统Petri 网模型 图2 系统死锁的Petri 网描述

在该模型中,, 表示两个测试任务的开始,,表示两个测试任务的结束,它们为闲置库所;,,表示测试任务中三个参数的测试过程,,,表示测试任务

中三个参数的测试过程,它们为操作库所;,,是资源库所。模型中的变迁表示每个子任务的开始与结束。,,中的托肯表示有三种资源可用,某一个子任务完成后,资源被释放给下一个子任务;, 中的托肯表示等待测试的两个任务。

1p 6p 5p 10p 2p 3p 4p 1J 7p 8p 9p 2J 1m 2m 3m 128

,...,t t t 1m 2m 3m 1p 6p 2.3系统死锁的描述

所谓死锁是指多任务在运行中为了竞争资源陷入了一个僵局。一个任务锁定了另一个任务所需要的资源,而另一个任务又锁定了这个任务所需资源,两个任务都在等待对方释放资源,这就形成了一个死循环。支持并行测试的自动测试系统可能会在运行中出现死锁的情况。例如表1 所举的例子,测试任务在完成了参数1的测试后会锁定资源,等待测试任务释放,而会锁定等待释放。这种死锁现象可用如图2的Petri 网模型表示。出现了死锁现象,系统就无法继续正常运行。

1J 1m 2J 2m 2J 2m 1J 1m

一般情况下,如果在Petri 网可达树中各变迁至少引发了一次,没有从不引发的变迁,对于Petri 网模型的终止标识0((f f M M R M ))∈必然有一条从到0M f M 的变迁路径:

0:(f M M σσ∃>,即该Petri 网是活的,不会有死锁发生。基于这种理论,人们研究了很多方

法来预防死锁的发生。如Viswanadham [4]等人提出搜索系统可达标识图,去除会使死锁发生的变迁来避免死锁,但这种方法搜索步数很难确定,不易实施。而Mu Der Jeng [5]提出了一种利用启发式搜索算法,搜索系统的局部可达标识图,剔出死锁标识来得到系统可行的变迁发射序列σ。

这种方法利用启发式信息减小了搜索空间,可以快速的找到没有死锁发生的变迁发射序列。但是随着Petri 网的复杂化,会发生“状态空间爆炸”问题,遇到这种情况即使是局部可达标识图都很难生成。鉴于这种情况,可引入遗传算法这种有效的全局搜索算法,对Petri 网模型的变迁序列进行搜索,得到无死锁的发射序列σ。它比启发式搜索具有更高的搜索效率。

3 基于遗传算法的发射序列求解

3.1 Petri 网的发射序列

Petri 网的状态方程为:

1k k k M M CV −=+ (1)

其中C 是Petri 网的关联矩阵,是发射序列k V σ中第个发射向量。每个发射向量必须满足的变迁发射条件是:C C ,k C +−=−1k k M C V −−>。假设初始状态标识通过发射序列0M σ到达终止状态标识f M ,那么Petri 网的状态方程可以写为:

01

f k k M M C V σ

==+∑ (2)

由于状态方程缺乏变迁发射顺序的信息,所以一般利用状态方程求解发射序列σ,经常会出现伪解[6]。迄今为止,寻找Petri 网模型的无死锁发射序列σ一直是一个NP 难题[7]。

3.2 染色体编码

在利用遗传算法的过程中,将变迁序列作为染色体。如图1所举的例子,染色体为

,,等等。

12345678t t t t t t t t 21346578t t t t t t t t 15263748t t t t t t t t 3.3 适应度函数的计算

在染色体中,有很多变迁序列是无法成为发射序列的,如中不可能先于发射,因为同一任务的各个参数测试顺序一般不会改变。又如 中和发射之后,就会出现图2所示的死锁现象,和根本无法继续发射。引入遗传算法的目的主要是从变迁序列中剔出无法发射的死锁序列,找到满足21346578t t t t t t t t 2t 1t 15263748t t t t t t t t 1t 5t 2t 6t 0:(f M M σσ∃>条件的发射序列σ。为了完成这个目的,设适应度函数为

()f c c = (3)

其中为变迁序列中能够发射的变迁的个数。变迁序列中能够发射成功的变迁的个数一定小于等于Petri 网模型中变迁总个数,c c n ()f c c n =≤,

因为每个参数在测试过程中只测试一次,即每个变迁最多成功发射一次。如果它们相等()f c c n ==,即每一个变迁都是可以发射成功

相关文档
最新文档