[论文翻译]Why Software Hangs and What Can Be Done With It.docxVIP

[论文翻译]Why Software Hangs and What Can Be Done With It.docx

  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文档。上传文档
查看更多
[论文翻译]Why Software Hangs and What Can Be Done With It

Why Software Hangs and What Can Be Done With ItXiang Song,Haibo Chen and Binyu ZangParallel Processing Institute,Fudan University{xiangsong,hbchen,byzang}@2010 IEEE/IFIP International Conference on Dependable Systems Networks (DSN)软件为什么会挂起及如何处理它摘要软件挂起是一种烦人的行为,它对很多软件系统的可靠性构成了主要威胁。为了在设计阶段避免软件挂起或在运行阶段修复它,我们需要了解它的特性。可惜,对于为何软件会挂起以及如何来处理软件挂起这些方面的问题,当前还没有进行过综合的研究。为了进一步认识软件挂起的特性,为了在第一阶段修复它或在产品运行时纠正它提供一些指导,在这篇文章中,我们研究了四款典型开源应用程序已报告的挂起相关的错误。1 前言软件可靠性对于服务器和用户应用程序至关重要,尤其是一些任务要求比较高的应用。可是,软件挂起这种无应答现象,仍然对软件可靠性构成主要威胁。这种错误存在于很多商业软件系统,比如web浏览器、数据库服务器和办公软件。大多数挂起相关的错误在正常运行时并没有明显的影响。然而,当他们出现时,用户将无法在期望时间内得到响应。更糟糕的是,一个严重的挂起错误可能会冻结整个系统,并导致重启。大部分以前的软件错误研究集中在特殊的系统,比如操作系统错误[1]和网络服务错误[9]。但他们都没有集中在软件挂起错误。虽然有几项研究涉及可能导致挂起的特殊原因,比如死锁错误[3,4],无限循环,I/O阻塞错误[13,10]和并发性错误[5],但还不清楚它们是否是主要的原因以及它们如何引起软件挂起的。在本文中,我们首次全面研究现实世界中的软件挂起错误。我们研究了四款流行的开源应用程序的挂起相关错误报告:MySQL,PostGre,Apache-httpd服务器和Firefox,它们都广泛使用于三层的浏览器-服务器架构中。我们总共收集307个已证实的挂起错误,分析了已知根源的233个错误(称为:确定根源错误)的特性。我们还检查了其余74个错误(称为:不确定根源错误),以便研究修复这些错误的障碍。我们的研究得到了以下的观察结果:应用程序不仅受已知挂起因素的影响,比如死锁、数据竞争、无限循,还受其他因素的影响,比如设计错误和执行环境。挂起错误根源的不确定性是修复错误的主要障碍,而可使错误重现的简洁的测试用例可以明显加快错误修正的进度。修复时间跨度研究表明,环境相关错误、无限循环错误和并发错误,与其他类型的错误相比,会持续更长时间。为了减轻挂起相关的错误,操作者应该在进行软件更新前检查协议的一致性,在运行应用程序前检查运行时的资源使用状况,在部署应用前仿真模拟运行环境。本文剩下的部分组织如下,第2部分主要讲了我们进行研究时所使用的错误调查方法。第3部分主要对软件挂起错误中的确定根源错误进行了全面分析。第4部分主要讲了如何修复错误。第5部分主要讨论了我们的观察结果,提出了一些避免软件挂起错误的建议。在第6部分,我们调查了相关的工作,并在第7部分总结了我们所做的工作。2 错误调查方法2.1 挂起错误的来源我们的研究选择了3个服务器端应用程序和1个客户端应用程序:MySQL、PostGre、Apache HTTPD server和Firefox。这些程序广泛应用于三层客服架构中,并且有着维护良好的错误数据库。在这些应用程序中,为处理多个请求,并行处理被广泛使用。我们相信这些应用程序中挂起错误的特性可以作为很多其他应用程序的代表。2.2 调查方法我们从这4个应用程序的错误数据库中搜集一些挂起错误。为了搜集到挂起相关的错误,我们使用了一些关键字比如挂起、无应答、冻结来进行搜索。在搜集到错误报告之后,我们亲自分析每一个错误报告的评论、测试用例、补丁和源代码,以确定它是否是一个挂起错误,并找出每个挂起错误的根源。我们也设法重现其中的几种错误,以便分析它们的特性。最后,我们总共研究了307个已证实的挂起错误。通常,我们把这些收集来的挂起错误分为两类:确定根源错误和不确定根源错误,二者的主要区别于能否找到错误根源。通过分类,我们得到了233个确定根源错误和74个不确定根源错误。详细的分类信息参见表格1。对于不确定根源的挂起错误,我们通过寻找用户和维护人员的证明或者手动实验使错误重现来证实它们是真正的挂起错误。应用程序描述确定根源错误不确定根源错误MySQL数据库9739PostGre数据库6115ApacheWeb服务器358FirefoxWeb浏览器4012总计23374表格1:确定根源错误和不确定根源错误的分布3 错误分

文档评论(0)

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

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

1亿VIP精品文档

相关文档