并行入侵检测系统

2024-09-02

并行入侵检测系统(精选七篇)

并行入侵检测系统 篇1

1 研究的意义

对并行入侵检测系统进行研究是必不可少的环节,而且也具有一定的使用价值,现在已经成为全球关注的重要话题。通过使用一台主机的方式进行检测,已经不能满足于当前的发展情况。所以,采取多台机器一起进行的方式能够较好的达到入侵检测系统所需要的技术效果。并行入侵检测系统中的流量怎样进行分配给不同的分析器是目前应该值得研究的问题。流量分配对并行入侵系统产生一定的影响,所以针对上面所述问题展开讨论,对入侵检测系统进行合理的讨论具有很重要的意义。

2 入侵检测系统的基本含义

“入侵”可以理解为是没有在使用过程中进行授权,由此导致数据遭到破坏,连合法用户都不能使用,其产生的影响是十分严重的。入侵检测是对网络安全进行主动的防御,能够在入侵时被察觉。这一检测主要是对计算机体系里面较多信息进行仔细研究,发现是否存在异常的情况发生。它不但能够检查出外部系统的入侵方式,而且也能够对内部没有正式授权的用户时刻监督。因此,由相关的软件和检测的性能进行有效组合就形成了入侵检测系统。

3 入侵检测系统的优势

入侵检车系统不但能够保护网络安全,而且还能够提高网络效率。对此,将其分成以下几种功能:

3.1 识别黑客常用入侵与攻击手段。

相关人员采取入侵检测技术能够对不同种类的攻击特点进行合理分析,能够充分的将黑客攻击的手段快速查出,并且能够对此做好恰当的解决。通常情况下,黑客在入侵过程中在收集信息时,会在第一时间被抓到。

3.2 鉴别对系统漏洞及后门的利用。

一般来说,入侵检测系统普遍都会存在有关系统漏洞的相关资料,采取网络数据包进行连接的方式,能够将指定的相关内容进行合理研究,并且能够及时的对网络通信中出现的问题及时察觉。

3.3 监控网络异常通信。

入侵系统能够识别网络中存在异常的通信情况而产生提示,确保网络通信具有一定的合法性。无论哪种网络数据只要出现不符合相关制度的情况都会在第一时间检查出来并且做出提醒。

3.4 完善网络安全管理。

入侵检测系统是对攻击或者相应的破坏予以及时的发现,能够对不法网络侵略者进行合理的预防,促进安全管理体系能够顺利的开展。通常采取入侵检测系统的方式能够对数据等相关内容进行恰当分析,从而提高网络管理的整体水平。

4 异常入侵检测方法

基于特征选择的异常检测方法基于特征选择的异常检测方法是通过从一组度量中选择出能够检测入侵的度量构成子集,从而预测或分类检测到的入侵行为。异常检测的关键在于难以区分异常行为和入侵行为,选择合适的度量也很困难。度量子集的选取依赖于入侵的类型,一个度量不可能适应于所有的入侵类型。预先定义好度量可能会造成漏报入侵行为,最理想的入侵度量集应该是能够判断和决策。假设与入侵检测相关的度量有n个,则这n个度量可构成2个子集,从中可以看出搜索的空间与度量集成指数关系,所以采用穷举搜索理想的度量子集是不实际的。MACCABE提出用遗传方法搜索整个度量子空间来寻找正确的度量子集,其方法是采用学习分类器方案来生成遗传交叉算子和基因突变算子。

5 误用入侵检测解决

基于专家系统的误用检测方法是根据安全专家对可疑行为进行分析的经验形成一套推理的规则,然后运用推理算法来检测入侵。所以基于专家系统的检测方法也称为基于规则的检测方法。Snort入侵检测系统就采用了这种方法。该方法按照其规则的组成方式可以分为向前推理规则和向后推理规则两类。向前推理规则是根据收集到的数据,规则按预定的结果进行推理直至推出结果为止。而向后推理规则是根据结果推测可能发生的原因,然后再根据收集到的信息来判断真正发生的原因。前者能比较准确的检测出入侵行为,误报率低,但无法检测未知的入侵行为,而后者虽然能够检测出未知的入侵行为,但误报率很高,所以目前大部分的IDS都采用向前推理规则。

6 基于网络的入侵检测系统

基于网络的入侵检测系统是通过监听网络中的数据包来获得必要的数据来源,并通过协议分析、特征匹配、统计分析等手段发现当前发生的攻击行为。它能够实时监控网络中的数据流量,并发现潜在的攻击行为和做出迅速的响应。但这种方式不能解析监听到的加密信息以及交换网络上的数据包,而且在高速网络上监听数据包时会大大增加系统的开销。另外,它的分析对象是网络协议,通常而言是标准化的,独立于主机的操作系统类型,因此一般不存在移植性的问题。同时,它的运行丝毫不会影响主机或服务器的自身运行。

7 入侵检测系统面临的问题

在最近几年里,尽管入侵检测系统取得了一定的进步,但是因为人们不能全面的对检测系统进行熟练的掌握,因此入侵检测手段处在发展的前期阶段,技术较生疏,从以下内容可以看出相关问题:

入侵检测系统是对网络的相关数据进行截获的方式做出合理分析,以此来对攻击行为进行判断的系统,这个阶段资源的使用会很多。但是,目前的入侵检测系统不能满足于当今网络传输的效率,因此就会出现漏掉数据的情况发生,从而发生漏报的现象。与此同时,因为特征库在组织过程中比较简便,所以不能对繁琐的攻击方式进行有效监督,也是造成漏报的一个主要因素。

8 结论

总而言之,通过上述内容可以了解到并行入侵检测系统存在较多的优势,因此相关人员应当做到合理的运用。文中也表明了并行入侵检测系统中还存在一些不足之处,这就需要相关人员通过不断的创新,从而制定出恰当的方案来完善该系统,能够造福于人类,营造一个和谐、健康的网络环境。加大相关系统的研究力度,为我国的网络信息化做出贡献,促进我国经济的不断繁荣昌盛。

摘要:随着网络时代的不断发展,以往集中入侵检测体系存在一定的不足,相关人员在检测过程中会出现数据不完整的情况,从而对准确性产生一定的影响。对此,本篇文章主要对数据分流的并行入侵检测系统进行合理分析,进而结合实际情况提出相关建议,仅供参考。

关键词:数据分流,并行入侵检测系统,研究

参考文献

[1]赖海光,黄皓,谢俊元.PABCS:一种用于并行入侵检测的流量划分算法[J].计算机学报,2007(4).

[2]陈训逊,方滨兴,李蕾.高速网络环境下入侵检测系统结构研究[J].计算机研究与发展,2004(9).

[3]刘航,戴冠中,李晖晖,慕德俊.基于FPGA的高速网络入侵检测系统[J].计算机应用,2004(5).

[4]彭蔓蔓,喻飞,李仁发.一种基于网络处理器的入侵检测系统[J].计算机应用研究,2004(4).

并行入侵检测系统 篇2

接触网高度测量主要分为两大主流方向, 即接触式测量与非接触式测量[5,6]。接触式测量, 一般是在受电弓上安装角位移传感器, 受电弓弓板高度发生变化时, 主轴的角度发生变化, 根据此角度变化值即可反演出接触网的高度变化[7]。非接触式测量主要是基于光学原理, 一端由光源对准接触网发射准直光束, 另一端由探测器接收反射光束, 根据光束在探测器靶面的投影位置得出接触网高度[8]。

接触式测量一般为间接式测量, 无法真实反映出接触网高度的实际变化情况, 因而不能为受电弓提供反馈预测, 而非接触式测量则可有效规避上述问题, 同时不会对被检测受电弓的力学特性产生任何影响, 所以成为当前主流的测试手段。但是, 现有非接触式测量大多基于光学方法, 容易受到外界光线环境干扰, 特别是接触网高度测量大部分是以天空为背景, 在太阳直射的情况下, 会在一定程度上影响测量结果, 因此应在减弱非相干光源干扰等方面加以改进。本文所设计的接触网高度快速检测系统 ( 见图1) , 在现有的非接触式测量设备的基础上, 增加了GPS太阳高度角定位模块, 通过激光雷达对准角度的反向调整使其尽量避免太阳直射对测量结果的影响, 测量示意图如图2 所示。

1 系统的硬件结构

该接触网高度检测系统主要由激光雷达阵列、GPS太阳高度角定位模块、数据采集及处理模块、激光雷达对准角度调整结构、接触网高度输出模块等几部分组成 ( 见图3) , 固定在电力机车顶部受电弓装置附近。

1. 1 数据采集及处理模块

作为整个系统的数据处理及时序控制的核心部分, 采用FPGA + DSP双处理器结构。其中, FPGA用于时序信号的产生、信号采集芯片的驱动、控制命令的收发; 而DSP则主要是用于高速信号的提取与处理。

1. 2 激光雷达阵列

为了减小受电弓的单点磨损, 接触网沿导轨的水平方向呈“之”字形分布, 因此, 不同时刻接触线与受电弓接触点位置不同。要想测量其当前高度, 必须首先对其位置进行快速定位后再进行测量。在实际测量中, 接触网高度起伏在5. 3 ~ 6. 5 m, 去除车体及结构高度, 测量高度范围小于2 m。由于动车的接触网线径为12. 9 mm, 为检测出接触线高度, 要求激光雷达角分辨率不大于0. 37° 即可[9]。为此, 本系统选择UTM - 30LX - EW型2 维激光扫描雷达对机车上方接触线可能存在的位置进行快速扫描, 通过信号处理, 可计算出当前接触网位置和高度。该雷达测量范围270°, 可在100 000lx光强下工作, 且扫描角分辨率高达0. 25°。与本文数据采集及处理模块相结合, 单次扫描及高度测量时间小于30 ms。

为了进一步缩短单次测量时间, 提高检测频率, 采用了激光雷达阵列结构。该结构由若干激光雷达排列组成, 用于实现对当前接触网高度进行等间隔分时循环采样, 时序图如图4 所示, 以进一步提高测量频率。本系统采取的雷达阵列数为2。

1. 3 GPS定位模块及雷达对准角度调整结构

本系统通过GPS模块实时获取机车当前位置、时间信息, 计算出当前太阳高度角后, 根据计算的角度通过反向调整激光雷达的对准角度调整结构, 使雷达阵列背对太阳的角度进行接触网高度测量, 以避免太阳直射的影响。为了避免对准角度调整结构的频繁调整对测量速度产生影响, 仅将机车上表面以上的半球空间平分为两大部分, 如图5 所示。当太阳高度角位于空间1 范围内时, 调整雷达阵列对准1 位置;当太阳高度角位于空间2 范围内时, 调整雷达阵列对准2 位置。只有太阳高度角在空间1 和空间2 发生角度变换时, 才进行角度调整, 其他时刻雷达阵列位置保持不变, 从而避免了调整结构的频繁扰动。

1. 4 接触网高度输出模块

每次接触网高度计算结束后, 实时通过该模块的RS485 串行接口将计算结果反馈给受电弓控制器, 以便为受电弓的搭接角度提供信息参考。

2 系统的软件控制流程

结合上述硬件部分的描述, 本检测系统主要实现如下功能: GPS信息采集及太阳高度角计算、雷达阵列对准角度的调整、雷达阵列的驱动与数据采集、接触网高度的数据处理与计算、检测结果的反馈输出。系统流程图如图6 所示。

设备在运行过程中, 数据采集及处理模块首先利用GPS定位模块, 读取机车当前的位置和时间信息, 按照太阳高度角计算公式对当前位置太阳高度角进行计算。根据计算得到的太阳高度角范围, 按照图5 方式, 通过角度调整结构对激光雷达阵列的对准角度进行判断和调整。角度调整结束后, 数据采集及处理模块通过时序驱动信号, 对激光雷达阵列依次进行等间隔驱动控制, 如此循环往复。激光雷达阵列将采集到的扫描数据依次传输给数据采集及处理模块。数据处理模块将扫描数据进行提取和计算, 将计算结果实时反馈给受电弓控制器, 以实现对接触网高度的持续测量。

3 实验结果

检测精度是衡量整个系统性能的最为关键性的指标。利用该系统分别对500 mm、1 000 mm、1 500mm、2 000 mm的给定距离进行100次连续测量, 测得的误差范围分别为±14 mm、±10.5 mm、±10.5mm和±8.5 mm。

在500 ~2 000 mm测量范围内, 本系统的测量精度小于 ± 15 mm。此外, 在系统实时性方面, 通过实际测量, 平均单次采样及处理时间小于16 ms, 即测量频率小于50 Hz。

4 结论

非接触式接触网高度快速检测系统与现有常规接触网高度检测设备相比, 引入了多个激光雷达等时差并行循环测量, 大大缩短了单次扫描与测量所消耗的时间。此外, 还将太阳高度角测量模块引入系统中, 作为参考值反向调整激光雷达测量时的对准角度, 进一步降低太阳直射对测量结果造成的干扰, 增强了系统的适应性和稳定性。

参考文献

[1]占栋, 于龙, 肖建, 等.接触网几何参数高速动态视觉测量方法研究[J].仪器仪表学报, 2014, 35 (8) :1852-1859.

[2]林邓伟, 李东亮.铁路接触网导线几何参数的激光测量系统[J].电子器件, 2015, 38 (1) :174-177.

[3]王春革.铁路接触网融冰电器系统设计[J].工业控制计算机, 2015, 28 (2) :113-115.

[4]郭晓旭, 刘志刚, 张桂南, 等.角点配准与图像查分的接触网绝缘子故障检测[J].电力系统及其自动化学报, 2015, 27 (2) :8-14.

[5]马金芳, 于龙.我国地铁接触网检测现状及发展趋势[J].都市快轨交通, 2013, 26 (2) :26-29.

[6]彭朝勇.便携式接触网导线几何参数检测系统[D].四川:西南交通大学, 2005.

[7]朱德胜.德国接触网动态检测技术[J].电气化铁道, 2004 (3) :13-17.

[8]牛大鹏.非接触式接触网几何参数检测系统研究[D].四川:西南交通大学, 2004.

并行入侵检测系统 篇3

随着网络信息量的爆炸式增长,网路攻击手段层出不穷,入侵检测在保护网络安全方面起着至关重要的作用,如何高效准确地对大量数据进行处理成为目前急需解决的问题。因此,先进的智能分类技术在入侵检测领域的应用研究具有重要的现实意义[1,2]。相对向量机(RVM)具有SVM良好非线性处理能力与泛化能力,能够有效解决非线性、小样本问题等优势[3]。但RVM核函数参数的选择太依赖经验性,学者们提出一种相对向量机自动优化核宽(AKO-RVM)的算法[4],它可以有效减少RVM对其内核初始参数选择的依赖,提高分类精度,但在收敛速度与计算复杂度方面的优化有明显不足之处。本文提出一种基于概率的并行粒子群优化AKO-RVM的方法[5,6],首先通过AKO-RVM算法对样本分组并进行训练,其次使用并行主辅式粒子群(PSO)算法[7]对分组后的核宽进行优化,在保证AKO-RVM算法进度的同时有效提高了其收敛速度并降低了其计算复杂度,进而探索相关向量机的快速算法,提高入侵检测的精度。

1 自动优化相关向量机核宽算法

1.1 相关向量机

相关向量机(RVM)是建立在支持向量机(SVM)上的稀疏概率学习模型。给定训练样本集D={xk,tk}Nk=1,目标值tk∈R与xk∈RN都相互独立分布,式(1)给出两者关系:

其中λk为相对独立的附加噪声,且满足期望为0、方差为σ2的高斯分布,估计函数y(xk)可由线性加权模型y(x|w)给出,通常线性加权模型y(x|w)为:

其中w=[w0,w1,…,wN]T为线性模型的权重因子,K(x,xk)为训练样本预先设定的核函数,由线性加权模型可得估计函数y(xk),虽然RVM模型对核函数的选择没有任何限制,但在RVM模型中应用最为广泛的是高斯核函数,其核函数模型定义为:

其中b为核函数核宽。而在实际应用中,由于训练数样本是随着时间动态变化的,因此固定的核宽可能会导致RVM模型性能的下降。据此根据AKO-RVM算法提出一种动态改变RVM核宽的方法。

若想求得式(1),即对样本集进行分组训练,就必须了解RVM边缘似然函数的对数模型,其模型为:

由以上可以看出对RVM样本集训练分类过程就是迭代求解α的过程,并最终通过RVM边缘似然函数的模型求得式(1),之后根据式(1)对样本进行分类。

1.2 AKO-RVM算法

AKO-RVM算法根据训练样本的不同自动改变高斯核函数的核宽,保证了RVM训练结果与RVM核宽的初始值设定无关,因此式(2)可改写为:

其中Kbk(x,xk)中的bk表示第k个训练样本xk所对应的核宽。AKO-RVM使用最大化期望值(EM)来对核宽进行优化。其算法的核心思想为求RVM最优核宽bch的最大化约束问题,由式(4)可得:

其中γ为几何平均值。为解决式(6)约束性问题,引入拉格朗日乘子λ,将约束问题变为无约束问题求解,最优核宽bch可变为式(7)所示:

之后通过将自变量bk与λ对Γ1进行微分计算,并结合式(7)来计算核宽的迭代公式。

由以上可以看出AKO-RVM算法主要是针对不同的训练样本迭代出适合的核宽,进而迭代求解α,最终求得式(1),并根据式(1)对样本进行分类。

2 基于概率的主辅式并行粒子群AKO-RVM优化算法

粒子群算法(PSO)是通过追随当前搜索到的最优值来进行全局最优值的计算,其追随速度Vi=(vi,1,vi,2,…,vi,d)与位置Si=(si,1,si,2,…,si,d)更新公式为:

其中τ1、τ2为(0,1)之间的随机数,Pbest与Gbest分别为粒子群的当前局部最优解与全局最优解。由文献[8]可知,当θ取随机数,且Lmax为最大迭代次数,C1=2.5-2l/Lmax,C2=3-C1时,可以使PSO算法性能得到增强。

标准粒子群算法采取串行比较方式,局限性较大。为获得更好的性能,本文提出一种基于概率的主辅式并行粒子群AKO-RVM模型(P2AKO-RVM)。

如图1所示,P2AKO-RVM算法首先对训练样本进行分组,分组后的样本根据式(7)分别求出核宽b,然后将其分别送入辅处理器中,辅处理器将粒子个体最优信息通过概率计算后发送给主处理器,主处理器寻找概率适应度最大的核宽粒子,将其作为新的全局最优解,辅处理器接收新的全局最优解,并使用其进行下一次的速度更新与适应度的计算。文中定义ξ为概率系数,且P2AKO-RVM的适应度值Ffitness的公式定义如下:

其中,T为当前输入的训练样本的信号长度,zt为每组中的粒子个数,Mt为训练样本分组的个数,q3为加速比。

P2AKO-RVM算法具体步骤如下:

(1)对总训练样本进行分组,每组训练样本的数目为m,文中选取m为3,若存在剩余训练样本,则舍弃。

(2)通过式(7)对分组后的训练样本分别计算RVM核宽粒子b。

(3)将核宽粒子b均分为m组,并将分组后的RVM核宽粒子b发送至对应的m个辅处理器,若存在剩余粒子,则舍弃。

(4)在m组并行辅处理器中对RVM核宽粒子群初始化,随机给出每个粒子的初始速度与位置,确定其迭代精度、加速系数等参数。

(5)在m组并行辅处理器中根据式(10)计算RVM核宽粒子b的适应度。

(6)并行辅处理器进行寻优并将其个体最优信息发送至主处理器中。

(7)主处理器寻找概率适应度最大的RVM核宽粒子b并将其作为新的全局最优解发送回m个并行辅处理器。

(8)并行辅处理器判断迭代是否满足设置的精度要求或者粒子已完成迭代,若满足则终止迭代,否则将主处理器发送的新的核宽粒子跟新为的全局最优解,重复步骤(6)。

(9)将优选出的最优RVM核宽粒子代入式(3)进行相关向量机的训练与检测。

2.1 P2AKO-RVM算法主处理器流程

(1)接收辅处理器发送的概率适应度。

(2)在接收的所有的m个粒子中找到其概率适应度最大的Ffitness。

(3)若当前全局极值的适应度值大于所选Ffitness,则将Ffitness对应的粒子位置作为新的全局极值。

(4)将新的全局极值送至辅处理器中。

2.2 P2AKO-RVM算法辅处理器流程

(1)接收主处理器发送的全局极值,并判断核宽粒子是否达到预设精度要求或者已完成迭代,若是辅处理器结束迭代,否则进行步骤(2)。

(2)由式(8)与(9)更新当前粒子的速度与位置信息,并将其发送至主处理器。

3 实际应用

本文实验样本选取kddcup_data_10precent入侵检测数据包作为实验样本,共选取4种模式进行实验验证:normal、ipsweep、neptune、smurf,分别定义为1、2、3、4。除Normal外都为异常的入侵模式。每种模式各自选取500组数据,其中选取各模式的前100组数据作为训练样本其余的为检测样本,即共计400组训练样本,以及1 600组训练样本。文章分别采用RVM、AKO-RVM、P2AKO-RVM进行入侵检测,如图2所示。

图2中P2AKO-RVM算法选用3个并行辅处理器(m=3)对400组样本进行训练,由此可知每个辅处理器最多迭代45次,每次迭代都会选取一个最优核宽,大幅缩减了AKO-RVM算法的迭代次数。

图3为AKO-RVM、P2AKO-RVM两种算法的边缘似然变量随迭代次数的变化曲线。

由图3可看出,P2AKO-RVM算法大幅度缩短训练迭代次数的同时保证了内核宽度的最大化。在一定程度上,其最大化速度快于AKO-RVM。

表1为分别基于3种算法的入侵检测性能方面的比较,文中使用了检测准确率、检测误报率以及检测用时3种种指标进行衡量。定义分别为:

由表1可看出在相同的实验条件下,相对于RVM,AKO-RVM与P2AKO-RVM算法在入侵检测上的检测精度得到较大提高,尤其是P2AKO-RVM算法,相对于AKO-RVM,在保证了较高检测精度的同时大幅度降低了训练迭代次数,并减少了一定的检测时间。

4 结论

本文提出一种基于概率的主辅式并行粒子群AKO-RVM的网络入侵检测方法(P2AKO-RVM),P2AKO-RVM可以在保证了AKO-RVM算法分类精度的同时,快速优化出适合当前训练样本集的核宽参数。通过实验验证表明,P2AKO-RVM方法不仅减少了RVM初始化值对训练与检测精度的影响,而且在保证了较高检测精度的同时大幅度降低了训练迭代次数,在入侵检测领域应用更优于RVM与AKO-RVM算法,具有较好的应用前景,后续还可以针对RVM多核函数等方向进行一定研究。

参考文献

[1]RAMAN S,HARISH K,SINGLA R K.An intrusion detection system using network traffic profiling and online sequential extreme learning machine[J].Expert Systems with Applications,2015,42(22):8609-8624.

[2]吴良海.基于粒子群优化相关向量机的网络入侵检测[J].微电子学与计算机,2010(5):181-184.

[3]TIPPING M E.Sparse Bayesian learning and the relevance vector machine[J].Journal of Machine Learning Research,2001,1(3):211-244.

[4]YALDA M,HAMID S.Gaussian kernel width optimization for sparse Bayesian[J].IEEE Transactions on Neural Networks and Learning Systems Learning,2015(4):709-719.

[5]李国栋,胡建平,夏克文.基于云PSO的RVM入侵检测[J].控制与决策,2015(4):698-702.

[6]SABAN G,HALIFE K.A novel parallel multi-swarm algorithm based on comprehensive learning particle swarm optimization[J].Engineering Applications of Artificial Intelligence,2015(10):33-45.

[7]MALIK A J,SHAHZAD W,KHAN F A.Network intrusion detection using hybrid binary PSO and random forests algorithm[J].Security and Communication Networks,2015,8(16):2646-2660.

并行入侵检测系统 篇4

1 并行遗传算法

遗传算法始于一个初始群体, 群体中的个体都要进行这三种运算。运算后的结果如自然选择一样, 比初始群体具有更好的适应性。并行遗传算法就是一种很好的选择, 它能很容易的实现并得到一个很好数值解。除此之外, 并行遗传算法比遗传算法运算速度更快, 并且能得到一个更优结果[2,3,4,5]。标准的遗传算法以群体集合为运算对象, 对个体所进行的各种遗传操作都有一定的相互独立性, 所以它具有一种天然的并行结构。由于遗传算法的天然并行性, 人们认识到了对其进行并行处理的可能性, 从而基于各种并行计算机或局域网开发了多种并行遗传算法 (Parallel Genetic Algorithm, 简称PGA) 。开发并行遗传算法的主要目的是为了提高遗传算法的运算速度[7,8]。

2 目标函数

损伤由刚度减小率βi表示, 定义为减小刚度与初始刚度的比值。损伤结构的刚度矩阵[Kd]表示所有单元矩阵乘以减小因数的和[4]:

βi=0表示结构未损伤, 0<βi<1表示结构部分或全部损伤。

频率变化:

式中:下标0———初始未损伤状态;

λi———第i个特征值;

ωi———第i个频率。

模态保证标准:

式中:φiu———未损伤的第i阶模态向量;

φid———损伤后的第i阶模态向量。

MAC是一个无量纲的量, 范围从0到1, 代表了两组模态向量之间的关联程度, 1指完全关联, 0指完全不关联。

目标函数:

Fλ, 0, FMAC, 0表示结构未损伤时的值 (β=0) 。FD表示损伤补偿函数。当损伤补偿函数加到目标函数中, 还要包括最小损伤。由此, 由计算误差引起的错误损伤检测就可以避免了。罚函数如下:

此等式由Meruance和Heylen提出, 补偿了全部的损伤, 常数γ取决于计算模型的精确度。

最优问题定义如下:

3 算例

3.1 计算模型及基本假定

用一跨预应力混凝土简支梁进行数值模拟, 为了更好地观察结果, 简支梁外伸形成悬臂梁。如图1所示, 该模型有30个单元, 31个节点, 弹性模量是3.0×1010Pa, 密度是2500kg/m3, 面积是0.06m2, 惯性矩是4.5×10-4m4。

模态观测数据用结构的有限元模型模拟获得, 损伤用弹性模量折减来模拟。损伤工况设计如下[5, 7, 10]:

工况一:10号单元10%损伤, 20号单元35%损伤;

工况二:10号单元20%损伤, 20号单元35%损伤;

工况三:10号单元35%损伤, 20号单元35%损伤。

3.2 初始参数的确定

为了提高收敛速度, 避免过早收敛, 遗传算法的参数和算子取值如下:种群大小:N=75;变异概率pm=0.02;交叉概率ps=0.8。初始种群值为1[5,6,7,8,9]。

3.3 计算结果与讨论

迁移时段如图2所示, 以敏感度分析定义。得到的最优迁移时段是70。图3示出的是通过并行遗传算法收敛率的提高。

并行遗传算法 (PGA) 求解最优解的时间是500多秒钟, 而遗传算法 (GA) 则需要1000多秒。并行遗传算法运算时间是遗传算法的0.5倍。

三种工况的下的损伤探测如图4所示。

从图中可以看出, 损伤检测结果已经达到了完美的程度, 和模拟的损伤很接近, 但并不能说明实际的应用当中也有很好的应用, 所以这方面的研究工作将在以后进行讨论。

4 结论

本文提出了并行遗传算法检测结构损伤的方法。数值模拟结果表明相比于遗传算法, 并行遗传算法在表现上更进一步, 在计算结果相同的条件下, 计算速度是遗传算法的1.5倍。因此, 对于明确问题的并行遗传算法可以使结果得到改进。

本文提出的方法只是针对于预应力简支梁桥模型的损伤识别进行了研究, 对于其他结构, 如高层结构、框架结构等的损伤识别同样有很好的表现。提出的并行遗传算法定位、定量的识别了模拟的损伤, 但是没有考虑损伤发生时刻的检测。其在实际结构损伤中的应用也未做具体的分析实验。这些将在以后进行研究分析, 在损伤识别领域中, 并行遗传算法会有更好的发展。

参考文献

[1]Mares, C.and Surace, C.An application of genetic algorithms to identify damage in elastic structures[J].Journal of Sound and Vibration, 1996, (195) :195-215.

[2]袁颖.遗传算法在结构损伤识别中的应用研究[J].防灾减灾工程学报, 2005, 25 (4) :114-116.

[3]曾国荪.并行遗传算法分析[J].计算机工程, 2001, 29 (9) :96-98.

[4]Meruane, V.and Heylen, W.Damage detection with Parallel Genetic Algorithms and Operational Modes[J].Structural Health Monitoring, 2010, (9) .

并行入侵检测系统 篇5

TBB的概念在2004年产生于Intel的内部,到了目前已经有了4.2的版本。TBB在编程的时候使用模板作为通常的并行迭代模型。它提供了丰富的C++模板类,这使得程序员不需要专业地去学习同步、缓存优化、负载平衡等问题,就能很容易地自动调度并行程序,并能使CPU的多个核心都高效的运转起来。TTB是一种能使程序的伸缩性得以提升,且对嵌套完全支持的并行编程模型,可以在Windows、MacX和Linux的系统上运行,支持Intel C++、VC7/和gcc编译器。并且为了构建大型的并行程序,允许程序员创建自己的并行组件[1]。1 TBB的任务调度器线程构建模块的核心组件就是TBB的任务调度器(Task Schedule),任务调度器使用之前,每个线程都会通过tbb::taskschedul-erint来初始化线程构建模块库,并且在同时还会隐含地初始化一个全局线程池,通过调度与任务机制自动地来管理线程池。任务的管理由任务调度器通过线程池来进行,通过使用让每一个逻辑线程都对应一个物理线程的方法来解决负荷问题。使用TBB的任务调度机制task与taskschedule可以将线程与任务结合,任务就是计算的逻辑单元,用户可以不必关注线程,而只关心任务本身,通过使用把这些任务映射到物理线程的方法以减少系统的开销。任务调度器不需要用户考虑负载平衡问题,只需要把程序分成若干个小任务,调度器就会将任务自动分配给线程,做到在多核处理器上的负载均衡。任务调度器将任务映射到物理线程,这个映射是非抢占式的。每个线程都有一个execute()方法,当线程开始执行execute()方法之后,这个任务将被绑定到线程上,直到execute()方法返回。在这期间,线程只有在子任务上等待时,才会执行其他任务,这时它可以执行同一线程中的其他子任务或(如果没有正在等待的子任务)执行在其他线程中创建的任务。任务调度器主要是将计算高度密集的工作进行并行化。由于任务对象不会被抢先调度,故在执行时不可以有长时间的阻塞,因阻塞的线程(及其相应的处理器)将无法为其他任务服务了。调度器是对任务图进行计算的。任务图就是一张有向图,图中的一个节点表示一个任务,每个节点都指向其各自的父节点,根节点的父节点是NULL,或是正在等待根节点完成的其他任务。通过task::parent()方法能访问父指针。3162第10卷第13期(2014年5月)Computer Knowledge and Technology电脑知识与技术计算机工程应用技术本栏目责任编辑:梁书2 Hough变换检测直线的原理Hough变换的基本思想是:利用点—线的对偶性,即图像空间中共线的点与参数空间中相交的线相对应;而反过来,相交于参数空间里同一个点上的所有直线(曲线)与在图像空间中共线的点相对应[2-3]。在图像空间X-Y中,所有共线的点(x,y)均能用公式(1)所示的直线方程来描述:y=mx+c(1)其中截距是c,斜率是m,公式(1)又可以改写成公式(2):c=-xm+y(2)该方程是参数空间M-C中的一条直线方程,其中y是截距,x是斜率。比较公式(1)与公式(2)可以知道,在图像空间中的一点(x,y)至少要与参数空间中的一条直线相对应,而图像空间中的一条直线又是由参数空间中的一个点(m,c)来决定的。Hough变换的基本思想就是将公式(1)和公式(2)这两个式子看作是对图像空间里的点与参数空间里的线的约束条件,并定义了一个一对多的从图像空间到参数空间的映射关系。假若被检测直线的斜率为无限大(例直线x=a),公式(2)将无法完成该直线的检测工作,要想使任意方向或位置的直线都能够被正确的识别和检测[4],我们可以利用Hart与Duda提出的直线极坐标方程公式来替代公式(1):ρ=ycosθ+xsinθ(3)3利用TBB并行检测直线由检测直线的串行算法可以得到在整个检测过程中最耗时的是:对任意一个给定的θ值,对X-Y平面上的每一个边缘像素点应用Hough变换,利用公式ρn=[icosθ]m+jsinθm,计算相应的ρ值,并在相应的累加器上加l,A(ρ,θ)=A(ρ,θ)+1[5]。又因这一步是一个循环迭代过程(其中所有的迭代都可以同时运行,不互相影响),而循环迭代又是可扩展并行的简单形式,故对此算法的并行化改造应主要针对这个最耗时的循环进行[6]。在这个循环迭代中,由于各个迭代是相互独立的,故可以通过TBB中的模板类parallelfor或模板类parallelreduce将这个循环并行化。又因程序中的累加是不可重入的,即下一次循环依赖上一次循环的结果,故只能通过模板类parallelreduce来并行。在应用模板类parallelreduce时,线程私有的函数副本在最后要被合并起来,故operator()不能被声明为const。OpSum拥有一个join方法和一个划分构造函数。在划分构造函数中有一个split类型的哑参数和一个指向初始对象的引用参数。这个哑参数的作用是将划分构造函数与构造函数副本(在构造副本中没有这个参数)区分开来[7]。当任务完成了它的工作且开始将结果汇合到整体工作中去时,就需要调用join方法。传递给这个方法的参数是已经完成工作的结果,故这个方法只需要重复在每个元素上执行相同的运算(在这里是求和运算)即可。当任务调度器发现有一个工作线程可用时,parallelreduce将首先调用划分构造函数来创建子任务,然后把子任务传递给这个线程来执行。当任务完成时,parallelreduce将使用join方法来汇合各个子任务的结果[8]。注意,划分构造函数可能会并发地进行,故当在划分构造函数中需要增加其他共享对象的引用计数时,应该使用原子递增操作。以下是用TBB检测直线程序的核心代码:struct OpSum{int r;void operator()(const tbb::blockedrange<int>&t){for(int i=t.begin();i!=t.end();++i)for(int j=0;j<width;j++){if(image[i*step+j]!=0)for(int n=0;n<numangle;n++){r=cvRound(j*tabCos[n]+i*tabSin[n]);r+=(numrho-1)/2;accum[(n+1)*(numrho+2)+r+1]++;}}}void join(OpSum&x){r+=x.r;}OpSum(OpSum&x,tbb::split):r(0){;}OpSum():r(0){;}};4实验结果分析在Hough变换检测直线的串行程序和TBB并行程序执行时间的对比中,应用的硬件环境:CPU为Intel Core2 Quad Q94002.66GHz,内存为DDR3 4G;软件环境:Windows XP;编程环境:Microsoft Visual Studio 2008,tbb30_20100915oss。线检测串并行程序执行时间比较表:3163Computer Knowledge and Technology电脑知识与技术第10卷第13期(2014年5月)计算机工程应用技术本栏目责任编辑:梁书表1直线检测串并行程序执行时间比较表图片编号图片1图片2图片3图片4图片5图片6图片大小1.48M34.3M18.1M35.8M60.1M152M图片宽高(像素)868*6004000*30002772*22862795*44815973*448111922*4481串行执行时间(秒)0.5781.4688.15619.04642.781122.109并行执行时间(秒)0.2570.5182.4775.62512.43834.601加速比2.2492.8343.2923.3863.4403.52900.511.522.533.54图片1图片2图片3图片4图片5图片6加速比图1 TBB检测直线的加速比比较图有上表1和图1可得出如下结论:1)实验中所用的图片2的图片大小和像素数虽然比图片3要大,但由于其所选的图片比较简单,其中存在的直线条数比图片3要少的多,故其执行时间要比图片3短很多。2)在启动了多个线程的时候,刚开始由于问题的规模较小,线程间的切换也比较频繁并且初始化多个线程也要占用较多的时间,故加速比不是很大。随着问题规模的扩大,CPU的使用率也越来越高,多核优势逐渐体现出来,而启动多个线程所用的时间在程序总的执行时间中所占的比例也越来越小,故加速比越来越大。5结束语本文在实现串行Hough变换算法的基础上,使用TBB工具对其进行了并行化改造加速,都取得了较好的效果。但论文还有一些不足需要进一步改进和提高:由于时间的关系,该文只做了Hough变换对直线检测的并行化研究工作,而对圆、椭圆及抛物线之类的其他曲线检测的并行化有待进一步研究。

摘要:Hough变换存在着运算时间长的缺点,用了并行处理这种解决海量数据计算的有效方法来减少其运行时间。该文主要研究了:利用TBB(Threading Building Blocks)这种线程构建模块在多核机上对Hough变换中可并行的部分进行并行化;实验表明这种方法对Hough变换的并行化都有很好的加速效果。

关键词:Hough变换,TBB

并行入侵检测系统 篇6

关键词:虚拟手术,碰撞检测,CUDA,并行化,AABB,层次包围盒

1 引言

虚拟手术系统在医学手术排练演习、手术教学、手术技能训练等方面有着非常重要的作用, 它靠术前获得的医学影像信息, 建立三维模型, 在计算机建立的虚拟的环境中设计手术过程、进刀的部位、角度, 从而提高手术的成功率。由于在虚拟手术环境中尽可能满足沉浸感和真实感, 因而实行性要求非常高。碰撞检测作为虚拟手术中的重要一环, 承担大量复杂的计算, 是制约实时性的最主要因素。

碰撞检测是游戏、虚拟现实中重点研究的问题, 对于能否产生真实感的场景至关重要。研究学者对此进行了许多有意义的工作, 针对不同的应用场景, 采用不同的方法提出了很多实用的碰撞检测算法。这些算法主要分为以下四类:

(1) 基于层次包围盒的碰撞检测算法。

(2) 基于空间层次分割的碰撞检测算法。

(3) 基于CPU多核多线程的碰撞检测算法。

(4) 基于GPU的碰撞检测算法。

其中, 基于层次包围盒的算法根据包围盒类型的不同, 又可分为包围球、轴对齐包围盒 (AABB) 、方向包围盒 (OBB) 、离散方向凸包围盒 (k-dop) 和凸包的层次树算法。基于空间层次分割的碰撞检测是将整个虚拟空间划分为体积相等的单元格, 只对占据同一单元或领域的单元格的对象进行相交测试。常用的空间分割方法有K-D树、八叉树、BSP树等。基于CPU多核多线程和基于GPU的的算法是在这些碰撞检测算法的基础上进行的一种改进, 然而, 前者效率提升并不十分明显, 后者算法的实现较为复杂, 且有很大的提升空间。

随着虚拟系统的规模越来越大, 模型也越来越复杂, 很多算法将无法满足实时性的要求。本文在分析了已有算法的基础上, 利用GPU可以大量并行计算的优点, 对碰撞检测算法分成两个阶段进行并行处理, 同时采用CUDA平台简化算法的实现, 使之较传统的基于CPU算法, 效率提升了3-5倍, 完全满足虚拟手术中实时性的要求。

2 并行碰撞检测算法的思想

本文采用基于AABB的层次包围盒的并行碰撞检测算法。该方法是利用体积略大而形状简单的包围盒把复杂的几何对象包裹起来。在进行碰撞检测时, 首先进行包围盒之间的相交测试, 当包围盒之间相交时, 再进行几何对象之间精确的碰撞检测。基于AABB的层次包围盒的碰撞检测算法由于具有良好的计算性能, 适用于复杂环境中的碰撞检测, 因而得到了广泛的关注。具体而言, 对于虚拟场景中的两个对象, 首先分别生成层次包围盒树, 然后通过递归遍历层次包围盒树来确定发生碰撞的区域。另外, 在虚拟手术过程中, 由于要实时地对标定的干扰点或区域进行剔除, 因而在下一次进行碰撞检测前应对包围树进行更新, 实时地生成包围盒树。通过实验和分析, 生成包围盒树和遍历包围盒树执行多次重复的代码, 每次处理不同的数据, 因此, 可以采用多线程的方式, 在同一时刻同时执行相同的代码, 同时完成处理不同的数据。由于CPU处理器数量有限, 而GPU处理流非常多且每个处理流可以作为一个计算单元, 因而可以利用GPU流处理单元进行并行计算, 从而可以大幅缩减计算的时间。

2.1 并行生成包围盒树

常用的生成包围盒树有两种方法, 分别是自顶向上和自底向上两种方法。自底向上生成包围盒树的方法与霍夫曼编码类似:

(1) 对于一个含有n个基本几何图元 (一般为三角面片) 的包围盒, 将每个基本几何图元用AABB进行包围, 组成n棵二叉树的集合F={T0, T1, …, Tn}, 其中每棵二叉树Ti中只有一个根结点, 其左右子树均为空。

(2) 遍历F中的每个Ti, 在其余的二叉树中找到与Ti距离最近的Tj, 将Ti与Tj作为左右子树重新合并成一棵新的二叉树, 并更新生成后的二叉树包围盒大小。重复该过程直到F中所有的二叉树被处理完成, 该过程的时间复杂度为O (n2) 。

(3) 每合并一颗二叉树, 将从F中删除原有的二叉树, 并将新生成的树加入到F中。

(4) 重复b和c过程, 直到F中只含有一棵树为止。

上述算法的时间复杂度为O (n2log2n) 。从上述算法的描述过程中可以看出, 遍历与合并都是做着重复的工作, 只是处理的数据不同, 因此, 可以使用并行的方式进行改进:

(1) 根据n个基本几何图元的包围盒构成n棵二叉树的集合F={T0, T1, …, Tn}, 初始时, 每棵二叉树只有一个根结点, 且其左右子树均为空。

(2) 从F中取出Ti, 并行计算其余根结点到Ti的距离, 再用并行的方式找到与Ti距离最小的根结点Tj, 然后将这两个节点合并为一个节点, 并以此节点并行计算到其他节点的距离。

重复该过程直到F中只含有一棵树为止。

上述过程如图1所示。

由并行树生成过程可知, 对于有n个基本几何元素的模型, 该算法在计算根节点之间距离的时间复杂度为O (n) , 在每一次寻找最小的距离根节点采用二分查找算法, 时间复杂度为log2n, 因而整个算法的时间复杂度为O (nlog2n) 。

2.2 并行遍历包围树

原始的遍历算法可以用图2所示伪代码进行描述。

从图2中可以发现, 对于含有n个模型的复杂场景, 假设每个模型平均含有m个多边形, 则此碰撞检测算法的时间复杂度为O (n2m2) , 即使问题退化到只含有几个模型的场景, 其复杂度也为O (m2) 。这对于实时性要求高的虚拟手术场合是无法满足的。很多研究者在此算法的基础上进行了深入的研究, 在权衡精度与速度之间提出了很多改进的算法, 但只满足一定场景的情形。

经过分析, 算法在遍历的过程中, 总是将每一个多边形 (可以用AABB进行近似, 简化计算) 串行与另一个模型的每一个多边形进行计算判断, 这个过程完全可以通过多线程的方式并行计算。因此, 对于将要发生碰撞的两个模型, 我们只对其中一个进行生成AABB包围盒树, 然后用另一个模型中的每个基本图元的包围盒并行的对这个包围盒树进行遍历, 从而获取碰撞信息, 并将其结果存放在一个数组中返回。

并行遍历包围树的过程如图3所示。

算法伪代码如下图4所示。

3 测试结果与性能分析

NVIDIA公司开发了一种称为CUDA通用并行计算架构, 它是一种基于NVIDIA图形处理器的并行计算体系架构, 并使用标准的C语言作为其编程语言, 因此很容易将上述算法在CUDA平台上进行实现。采用实验室配有的PC机及配置的GTX480显卡, 它含有480个SP (Streaming Processor) 基本处理单元, 对并行算法进行测试。为了对比说明效果, 分别采用了开源的碰撞检测库coldet和CUDA进行了对比测试, 测试结果如表1所示。

通过实验结果表明, 在虚拟手术仿真的过程中, 采用CUDA的并行加速算法的帧率达到60帧以上, 完全满足实时性的要求, 而采用coldet的开源碰撞检测库, 在整个过程中有明显的滞留感。

4 总结

本文对碰撞检测进行了分析, 将算法进行了并行化处理, 并采用CUDA对算法进行实现, 最后在虚拟手术系统中进行了测试, 结果表明, 采用CUDA的并行碰撞检测算法明显缩短了系统的耗时, 完全满足虚拟手术系统实时性的要求。该算法具有很好的通用性, 因此也可以用于视频游戏, CAD等场景。

参考文献

[1]马登武, 孙隆和, 佟明安.虚拟场景中的碰撞检测算法[J].火力与指挥控制.2004, 29 (4) :45-48.

[2]芦鸿雁.基于层次包围盒的碰撞检测算法研究[J].计算机与数字工程, 2008, 36 (2) :23-25.

[3]Tang M, Manocha D, Tong R.MCCD:Multicore collision detection between deformable models using front-based decomposition[C].SIAM/ACM Joint Conference on Geometric and physical modeling, 2009:355-360.

[4]A.Greβ, M.Guthe, R.Klein.GPU-based Collision Detection for Deformable Parameterized Surfaces[J].Eurographi cs, 2006, 25 (3) :497-506.

[5]Kim D, Heo J P, et al.HPCCD:Hybrid parallet continuous collision detection using CPUs and GPUs[J].Compter Graphics Forum, 2009, 28 (7) :1791-1800.

并行入侵检测系统 篇7

死锁的问题是一个严重和复杂的并发系统。建立一些方法来自动检测并发系统中的死锁已成为一个重要的课题。至于自动死锁的并发程序的检测方法和工具, 可分为两个类别:静态检测方法和动态检测方法。

至于静态检测方法, 我们试图寻找一个潜在的死锁形式与目标程序来使实际运行。由于他们的目的是找出所有可能的死锁, 那些不能出现在实际环境, 多线程的执行时间和输入数据可以包含在结果。大部分这类工具基于形式化分析和模型检查。

至于动态检测的方法, 我们试图通过运行实际, 与一些探测器通过某种方法使其目标在实际执行中查找死锁的发生。我们打算在实际的环境中发生死锁检测时间的多线程的执行, 并输入数据。

一种理想的动态检测方法应满足以下三个基本要求: (1) 完整性:方法必须是能够检测出任何死锁。 (2) 健全性:该方法必须报告任何存在的死锁。 (3) 效率性:该方法必须能够得到执行, 以便它可以检测到死锁的位置。

至于效率, 我们是既要执行它, 要尽可能减少成本。死锁检测组件应列入目标系统本身, 为了准确地检测到死锁, 我们的想法是基于自我实现的高度可靠的测量原理并发系统。

有对java的动态死锁检测多种产品。我们坚持他们没有足够的完整性。尤其是, 大部分不是正确识别的通知等关系。通过这一原因, 其中大部分无法检测的文件不能将Java死锁的文件检测清单表达出来。

Java平台特有的问题是依赖性:现有的手段是平台依赖新生凹痕, 因为它们取决于特定的虚拟机。既然是独立于平台的Java最显著特点, 有工作的工具之Java程序也希望将平台独立, 它是重要的自我检测的测量原理。

动态检测方法是目前最好的, 从死锁检测领域的角度看, 这是非常类似Java的并发设施, 我们应对与Java特有问题时的Java程序中的死锁检测问题应用此方法。我们将在本文中介绍方法、推行工具死锁报告的一个示例。

2 在Java多线程程序中的死锁

死锁的并发Java程序这样表示:两个或多个线程互相阻塞, 而试图访问所需的同步锁继续他们的活动。在Java死锁通常被视为形成一个公正锁观点, 换句话说, 我们必须意识到我们处理这个问题时的同步等待关系不是只有中止显示器。现在我们需要更严格地定义此问题。

定义1一个线程被认为是阻止处于执行状态的并发Java程序, 如果它在一个或多个线程的同步某些同步点等待着一或多个线程等待状态, 并且将保留此等待状态, 直到出现了同步, 否则该线程已停止。

定义2死锁是一个并发Java程序同步等候在那里的一些阻塞的线程之间的执行状况形成一个周期, 因而在周期所涉及的线程被认为发生死锁。

定义3在一个并发Java程序执行状态被阻塞的线程被认为是如果正在等待同步与死锁的线程被阻止, 但不是涉及周期中的死锁涉及被死锁的线程。

请注意死锁的线程应该被认为被阻止的线程等待不能改变任何被死锁的线程的死锁状态。

定义4一个活锁是一个Java程序的每个线程组的成员一组线程都保持线程组中的沟通, 并因此可以永远不会响应任何外界线程的同步请求, 否则在小组中的任何线程被认为是死锁。

定义5如果一个并发Java程序的执行状态是它正在等待与活锁的线程同步被阻塞就被认为是死锁。

请注意, 它也是重要的区别陷入僵局的形式活锁的线程的封锁, 因为打破了一活锁, 阻塞的线程等候不能改变任何陷入僵局线程死锁状态的线程。

3 运行时死锁检测器中使用Java虚拟机分析器界面

我们开发了基于Java程序的运行时死锁检测仪。它必须能够监视某种目标Java程序运行时所发生的事件。还有其他办法, 一个是运行时环境支持的方法, 而另一种是源代码转换的做法。

Java程序运行在Java虚拟机, 它很容易得到一些运行时间环境的信息。具体地说, Java虚拟机分析器界面 (JVMPI) 是我们的工具, 是监察的Java程序的行为。该JVMPI是在Java虚拟机和一个进程分析器界面, 用于我们的死锁检测的方法过程中探查器代理之间的接口。该死锁探测器部分包括本机代码 (不是字节代码) , 它在Java虚拟机进程运行。当与死锁检测有关每个事件发生时, 有关信息通过JVMPI传递给死锁检测仪。

运行时死锁检测仪使用源代码转换

我们开发了一个运行在死锁探测器上的源代码转换的方法, 目标在Java程序P是由一个预处理器到另一个Java程序P1'中, 使得P1当前行为和执行过程中的P沟通。运行时, 实时监测每个并发事件的P和P1, 并通过有关的运行信息实时监测事件发生的有关事件的信息传递到运行时显示器。

此事件通知时, 探测器需要一个线程被创建, 开始, 结束, 只是要求事件通知和直接进入同步的方法, 只是对接后转出和前后直接等待、加入或通知的所有方法被都调用。

4 此方法的优点和缺点

此方法的优点是它的平台独立性:任何目标程序的工具只不过是一个Java程序, 可以工作更在任何Java虚拟机。从独立测试原则的角度看, 它对测量有耐久性的优势, 因为它可以在任何虚拟机上。但是, 这一问题得到解决, 才能成为我们能够使用我们的僵局探测器上使用任何虚拟机JVMPI。

缺点是运算性能降低。其监测方案使用Java编写的, 其性能降低会比在运行时环境多。

5 结束语

我们研究Java程序中的死锁问题时讨论了如何在运行时及时地发现。同时, 我们制定了两个办法同时基于Java的程序运行时死锁探测器。我们成功的探测计划, 包括从一并发同步所有类型的等待关系陷入死锁。采用哪种方法应由设备的性能和平台独立性来权衡决定。

摘要:关于并行JAVA程序的可靠性, 死锁是最为严重和复杂的问题。在这篇论文中, 我们讨论了在并行JAVA程序运行时如何动态地检测死锁, 并提出了在一个JAVA程序的执行过程中, 处于等待状态的一个同步象征, 被称为JAVA线形等待图表。我们描述了各种类型的死锁, 并提出了一种计算程序来检测死锁和执行方法。

关键词:死锁,检测器,程序

参考文献

[1]卢超, 卢炎生, 谢晓东, 等.一种基于依赖分析的并发程序潜在算法[J].小型微型计算机系统, 2007, 28 (5) :841-844.

上一篇:信托业发展研究下一篇:细胞分裂素