5.2 Migrate-VM自愈技术对比分析 36
6 结语 41
6.1 结论 41
6.2 下一步研究方向 41
致 谢 42
参考文献 43
1 绪论
1.1 论文的背景和意义
随着软件系统复杂度的提高和规模的扩大,因计算机系统错误而造成重大损失的现象越来越常见,这要求软件必须要有更高的可靠性和可用性:要求缩短系统的宕机时间,减少软件运行的出错率。但是,这些要求难以通过设计来达到。计算机系统理想中是从来不出现错误的,但在现实中是不可能的。研究表明:相较于由系统硬件引起的故障,计算机系统的错误主要还是由软件的缺陷引起的,计算系统的老化更多的是由软件错误引起的。软件可靠是计算机系统可靠的必要条件,发展可靠性软件的一个主要限制因素是试验和证明过程,要完全检验和证明一个软件没有缺陷基本不可能,形式化的证明不能应用于大型的程序,另外,形式化证明所依赖的数学推导过程的缺陷使得检验和证明更加难以实现。由于对软件无错误运行的严格标准以及这些限制使得软件容错成为必要。
当软件出现如下状态时称之为软件失效:功能部件无法按照要求执行其功能;系统或系统部件无法在规定限度内执行所要求功能;程序操作不符合程序需求。在实际软件应用中,软件失效分为:死机,软件停止输出;计算精度不够。大多数对软件失效数据的研究表明:在软件失效中,源[自[751^`论`文]网·www.751com.cn/ 大多数都是因为软件负载过大、意外的软件错误引起的暂时性软件失效。通过研究Tandem的容错计算系统的失效数据:暂时性失效在所有软件失效中所占比率为70%左右,一般出现在有竞争问题和有计时问题的情况下。Tandem的容错计算系统是由两个执行组件组成的,它们具有同等的功能。应用软件如果在第一个处理组件上运行时发生错误,那么该软件在另一个处理组件上重新运行时,不会再发生相同的软件错误。这是因为第二个处理过程提供的运行环境和第一个处理过程不同,因此,就不具备引起和第一个处理过程相同的错误条件。通过观察所有暂时性软件失效可得:如果软件在不同于发生错误的运行环境的环境下重新运行,可能就不会发生同样的错误。亦即,许多软件错误在系统重启以后就会消失(尽管错误依旧存在于程序中,但是不定期的或周期性的执行软件自愈可以阻止这些软件失效),它们在本质上不是永久性的。由于很难找到发生这些错误的根源,因此,系统运行过程中必须容忍这类错误的发生。通常应对这类错误的策略是反应型的,即在系统失效以后采取措施。
软件老化现象是指软件在连续运行一段时间以后,由于缺陷的积累导致软件性能逐渐下降,甚至导致整个系统失效。软件老化能够影响系统性能,最终导致系统失效。软件老化主要是由于软件在长期不间断的运行中,各种无法检测到的错误或异常逐渐导致系统资源的不断损耗,软件性能因此发生衰退,当资源被耗尽时,将导致服务瘫痪甚至系统宕机。
容错技术成为提高软件可靠性的一种重要方法。软件容错的目的是为了使系统可靠性不受软件内部潜在错误的影响,或者将这种影响降到最低,使得软件能够继续正常运行。软件容错技术在一定程度上,减少了软件失效造成的损失,增加了系统的可靠性。但是,该技术无法避免软件失效,只能在失效后采取相应的措施来降低失效带来的损失。这些方法在本质上是反应性的。