首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到14条相似文献,搜索用时 156 毫秒
1.
一种基于依赖分析的并发程序潜在死锁检测算法   总被引:1,自引:0,他引:1  
死锁是并发程序特有的一种运行时错误,由于并发程序在执行时的不确定性,死锁的检测和定位是非常困难的.本文提出了一种基于依赖分析的并发程序潜在死锁检测算法,该算法是一种静态分析算法,能检测并发程序中是否存在潜在死锁,并能定位死锁发生时各线程可能被挂起的语句节点.本文给出了算法的形式化定义和时间复杂度分析,实验测试结果表明算法是正确且有效的.  相似文献   

2.
OpenMP Fortran程序中死锁的静态检测   总被引:1,自引:0,他引:1  
与BARRIER相关的死锁是导致OpenMP程序失效的重要隐患之一.对该类隐患的静态检测有助于在OpenMP程序运行之前提高其正确性.为了便于检测,将这种死锁分为两类.借助搜索与数据流分析分别按照存在性规则和非一致性规则检测第1类和第2类死锁.扩展了传统的控制流图以表示OpenMP程序.对于每个检测到的死锁,通过回溯记录控制流图中相关的路径,并利用静态分支预测量化其严重程度.基于上述思想,实现了一个OpenMP Fortran程序中死锁的静态检测工具C-Checker.实验表明,该工具能有效地检测OpenMP程序中与BARRIER相关的死锁.  相似文献   

3.
基于Java多线程的并发机制的研究和实现   总被引:4,自引:0,他引:4  
针对高可靠性、高质量的Java并行多任务程序设计,分析了Java多线程机制的原理及其实现技术,研究了程序并发过程中的同步机制和交互通信机制,比较了基于操作系统级和基于Java多线程级并发机制的实现结构,总结了并发程序中死锁预防的一些编程规则和策略。所构造的一个具有完全意义上的并发同步的框架实例有一定的实用价值。  相似文献   

4.
针对高可靠性、高质量的Java并行多任务程序设计,分析了Java多线程机制的原理及其实现技术,研究了程序并发过程中的同步机制和交互通信机制,比较了基于操作系统级和基于Java多线程级并发机制的实现结构,总结了并发程序中死锁预防的一些编程规则和策略.所构造的一个具有完全意义上的并发同步的框架实例有一定的实用价值.  相似文献   

5.
死锁是并发程序中最为常见的一类错误,直到现在并没有得到很好地解决.本文以Java并发程序为例,重点研究针对资源死锁较为有效的动态检测算法:根据并发程序的动态执行追踪信息,分析出加锁控制依赖关系,再根据死锁所应满足的条件在该依赖关系集上作适量演算便得到潜在死锁关系对.进一步地,结合线程间控制流图所反映的部分静态依赖关系,剔除假性死锁关系对,提高了计算结果的精度.该算法显著的特点是简单易于实现,且无需构造锁树或锁图等图形表示.  相似文献   

6.
Java并发机制研究   总被引:5,自引:0,他引:5  
针对高质量Java多线程并发程序设计,结合实例分析研究了Java多线程同步机制、通信机制以及并发机制的扩展,给出了防止死锁现象的编程策略,有助于解决实际编程中的并发问题。  相似文献   

7.
数据库是网络环境下多用户使用的共享资源,数据库在处理多线程大量数据存取过程中很可能出现死锁现象。文中介绍了Oracle数据库锁机制和死锁发生的原因,Oracle数据库检测死锁采用的相关视图。详细叙述了SQL语句检测死锁、死锁的定位方法和解决数据库死锁的方法。编写了在Linux环境中死锁检测脚本,模拟Oracle数据库死锁测试了脚本的正确性。实际应用表明该方法可以有效监测程序中的主要模块是否发生死锁,而且简单有效。  相似文献   

8.
静态检测MPI程序同步通信死锁比较困难,通常需要建立程序模型。顺序模型是其他所有复杂模型的基础。通过一种映射方法将顺序模型转化为字符串集合,将死锁检测问题转化为等价的多队列字符串匹配问题,从而设计并实现了一种MPI同步通信顺序模型的静态死锁检测算法。该算法的性能优于通常的环检测方法,并能适应动态消息流。  相似文献   

9.
随着国产处理器和国产操作系统的逐步推广应用,越来越多的开发人员在国产平台下开发多线程程序.目前国产平台普遍采用的Qt Creator工具中缺乏可视化的并发性能分析工具,使得优化由于多线程同步/互斥和资源竞争带来的性能问题变得特别困难.设计一种Qt Creator下的并发性能分析方案,通过实时监控程序并发事件,采集程序运行过程中的并发性能数据,分析程序并发性能瓶颈和死锁原因,并以插件形式进行多视图数据显示.通过实验表明,该并发性能分析方案可以方便、快捷地辅助用户开发多线程并发程序,提高软件开发效率.  相似文献   

10.
多线程并发程序的广泛使用引发了更多的数据竞争问题,竞争检测对于提高软件质量具有重要意义。将竞争静态检测和静态切片分析结合起来,提出了一种基于类的Java数据竞争静态检测算法,该算法利用函数调用层次获得函数调用链,对类域进行分析,找出可能数据竞争,通过静态切片缩小程序分析范围,并结合数据竞争的必要条件,去掉不可能数据竞争。实例表明,该算法可用于指导修复程序中的竞争缺陷。  相似文献   

11.
崔焕庆  刘强 《计算机工程》2008,34(23):50-52
无死锁是并行程序正确性的主要条件之一,已有研究成果关注于死锁检测,但对死锁预防研究较少。该文在对消息传递模式并行程序各种通信过程进行分类介绍的基础上,借助Petri网进行建模,提出程序死锁与Petri网死标识的对应关系,给出通信死锁检测算法,进而针对2种引起通信死锁的原因提出了3种预防方法,通过比较提出最佳方案。该方法既有较好的通用性,又可用于并行算法设计阶段的死锁预防以提高并行编程效率。  相似文献   

12.
分布式系统技术为采用低成本购建高性能系统提供了有效的途径,但是由于资源的分配与需求可能产生冲突,造成系统中发生死锁,导致系统运行陷入停滞.在不可靠的分布式系统中,故障会干扰正常的死锁检测,但现有的死锁检测算法不具有容错功能.对失效形式进行了归类,提出一个容错的死锁检测解除算法.算法建立在通用的AND-OR模型基础上,采用扩散计算和集中规约方式,不仅能够检测到死锁,而且能给出死锁环的全部成员.若死锁拓扑处于静态且为环状,算法的消息复杂度的上限为e n-1,时间复杂度为d,其中e为死锁等待图中边的个数,n和d为构成死锁环的节点的个数,分析表明算法性能等于或优于同类算法.  相似文献   

13.
The message passing interface (MPI) has become a de facto standard for programming models of highperformance computing, but its rich and flexible interface semantics makes the program easy to generate communication deadlock, which seriously affects the usability of the system. However, the existing detection tools for MPI communication deadlock are not scalable enough to adapt to the continuous expansion of system scale. In this context, we propose a framework for MPI runtime communication deadlock detection, namely MPI-RCDD, which contains three kinds of main mechanisms. Firstly, MPI-RCDD has a message logging protocol that is associated with deadlock detection to ensure that the communication messages required for deadlock analysis are not lost. Secondly, it uses the asynchronous processing thread provided by the MPI to implement the transfer of dependencies between processes, so that multiple processes can participate in deadlock detection simultaneously, thus alleviating the performance bottleneck problem of centralized analysis. In addition, it uses an AND⊕OR model based algorithm named AODA to perform deadlock analysis work. The AODA algorithm combines the advantages of both timeout-based and dependency-based deadlock analysis approaches, and allows the processes in the timeout state to search for a deadlock circle or knot in the process of dependency transfer. Further, the AODA algorithm cannot lead to false positives and can represent the source of the deadlock accurately. The experimental results on typical MPI communication deadlock benchmarks such as Umpire Test Suit demonstrate the capability of MPIRCDD. Additionally, the experiments on the NPB benchmarks obtain the satisfying performance cost, which show that the MPI-RCDD has strong scalability.  相似文献   

14.
Deadlock detection is an important service that the run-time system of a parallel environment should provide. In parallel programs deadlock can occur when the different processes are waiting for various events, as opposed to concurrent systems, where deadlock occurs when processes wait for resources held by other processes. Therefore classical deadlock detection techniques such as checking for cycles in the wait-for graph are unapplicable. An alternative algorithm that checks whether all the processes are blocked is presented. This algorithm deals with situations in which the state transition from blocked to unblocked is indirect, as may happen when busy-waiting is used.  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号