一种并行JAVA程序运行时死锁检测方法.docVIP

一种并行JAVA程序运行时死锁检测方法.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种并行JAVA程序运行时死锁检测方法

一种并行JAVA程序运行时的死锁检测方法   摘 要:关于并行JAVA程序的可靠性,死锁是最为严重和复杂的问题。在这篇论文中。我们讨论了在并行JAVA程序运行时如何动态地检测死锁,并提出了在一个JAVA程序的执行过程中,处于等待状态的一个同步象征,被称为JAVA线形等待图表。我们描述了各种类型的死锁,并提出了一种计算程序来检测死锁和执行方法。   关键词:死锁检测器 程序      1 简介      死锁的问题是一个严重和复杂的并发系统。建立一些方法来自动检测并发系统中的死锁已成为一个重要的课题。至于自动死锁的并发程序的检测方法和工具,可分为两个类别:静态检测方法和动态检测方法。   至于静态检测方法,我们试图寻找一个潜在的死锁形式与目标程序来使实际运行。由于他们的目的是找出所有可能的死锁,那些不能出现在实际环境,多线程的执行时间和输入数据可以包含在结果。大部分这类工具基于形式化分析和模型检查。   至于动态检测的方法,我们试图通过运行实际,与一些探测器通过某种方法使其目标在实际执行中查找死锁的发生。我们打算在实际的环境中发生死锁检测时间的多线程的执行,并输入数据。   一种理想的动态检测方法应满足以下三个基本要求:①完整性:方法必须是能够检测出任何死锁。②健全性:该方法必须报告任何存在的死锁。③效率性:该方法必须能够得到执行,以便它可以检测到死锁的位置。   至于效率,我们是既要执行它,要尽可能减少成本。死锁检测组件应列入目标系统本身,为了准确地检测到死锁,我们的想法是基于自我实现的高度可靠的测量原理并发系统。   有对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传递给死锁检测仪。   运行时死锁检测仪使用源代码转换   我们开发了一个运行在死锁探测器上的源代码转换的

文档评论(0)

erterye + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档