1.4 软件容错技术

由于硬件系统的故障主要来自生产和使用阶段,因此容错可以通过相同部件的重复,即相同资源的累积设置来实现;而软件故障主要来自说明、设计和实现阶段,因此程序的简单重复不能实现容错,它只能防止硬件损坏或者环境干扰等引起的物理性故障,而不能防止软件本身缺陷造成的故障。实现软件容错的基本方法,是将若干个根据同一需求说明编写的不同程序(即多版本程序),在不同空间同时运行,然后在每一个设置点通过表决或接收测试进行表决。

最基本的软件容错技术是Algirdas Avizienis提出的基于静态冗余的N版本编程方法和B. Randell提出的基于动态冗余的恢复块技术。

1.4.1 软件的相异性设计

对于软件容错,考虑的重点是软件设计的相异性和版本的独立性。软件的相异性设计是为了防止由于软件发生共性故障而采用的一种设计方法。软件设计时的共性越小,出现相同故障的概率也就越小,容错性能就越强。

相异性设计要求,对于同一需求说明的软件功能,不同的研发设计人员及不同的研发设计小组对于这同一功能的软件设计禁止谈论和沟通,在不同的环境空间中独立进行设计;另外,还要求软件设计的多样性,如采取不同的设计方法、开发工具、编程语言、编译器、算法等。在航空航天、核电站控制以及铁路交通的控制等对软件的可靠性要求很高的场合,软件的相异性设计可以有效提高软件的容错能力和软件的可靠性,对提高整个系统的可靠性有很重要的作用。

1.4.2 软件容错的基本结构

软件容错的基本结构有两种:

一种是NVP(NVersion Programming)结构(多版本编程设计),这种结构方法是Algirdas Avizienis于1977年在参考文献[6]中提出的,它是一种静态冗余方法,其基本的设计思想是用N个具有同一功能而采用不同编程方法的程序执行一项运算,其结果通过多数表决器输出。NVP系统中的多版本是指根据同一需求说明由不同的设计人员或由不同的设计方法、开发工具、编程语言等开发的具有同一功能的软件版本,即所谓的版本设计的相异性。这种容错结构方法有效避免了由于软件共性故障所造成的系统出错,提高了软件的可靠性。NNP结构如图2所示。

图2 NVP结构

另一种是RB(Recovery Block,恢复快结构),它是Randell于1975年在参考文献[7]中提出的一种的软件容错技术,它是一种动态冗余方法。在RB结构中,有主程序块和一些备用程序块构,这里的主程序块和备用程序块采用不同编程方法但具有相同的功能。每个主程序块都可以用一个根据同一需求说明设计的备用程序块替换。首先运行主程序块,然后进行接收测试,如果测试通过则将结果输出给后续程序,否则调用第一个备用块,依次类推,在N个备用程序块替换完后仍没有通过测试,则要进行故障处理。RB结构如图3所示。

图3 RB结构

其他的软件容错结构都是基于这两个基本结构而来的,例如NVPP(多版本阶段程序设计),它要求程序的版本运行分多个阶段进行,而且每个阶段运行的程序都包括适当的版本数量。运行一个阶段后,要通过表决程序来对这一阶段运行的程序进行表决,如果得到正确的结果就结束运行,否则继续下一个阶段版本的运行,直到得出正确的结果。

NVP和RB这两种基本结构在软件容错中用得最广泛,占据很重要的地位。这里要注意的是,验证表决程序的可靠性以及表决结果的正确性是个难点,因为如果表决程序本身就是错误的,那表决的结果就不可信了,所以要用正确性证明技术来保证表决程序的正确。

2 结论

本文详细介绍了计算机容错的各种方法,包括硬件容错、时间容错、信息容错以及软件容错等,这些容错方法在其他工业场合有广泛的应用,现在很多工业系统都是采用基于三模冗余的容错技术来提高系统的可靠性。对于其他要求可靠性高的场合,计算机容错技术的方法有着良好的应用前景。

软件定义的容错计算机体系,1.4 软件容错技术 - 计算机系统容错技术方法相关推荐

  1. 软件定义雷达(SDR)和软件化雷达(SR)

    [正文] 在如今4D毫米波雷达遍地横行的年代,出现了一些新的概念. 4D毫米波雷达与传统雷达不同,为了解决传统毫米波雷达角分辨率低.点云密度低的问题,当下出现了四种4D毫米波雷达解决方案: 一是基于传 ...

  2. 开启报名 | AI芯片体系架构和软件专题报告会2020

    近年来,专用的人工智能芯片为人工智能应用提供了强大的算力.面对日新月异的人工智能应用,人工智能芯片的体系架构,系统软件,安全成为计算机体系结构和系统软件的热点研究问题.为了推进国内在该领域的发展,由北 ...

  3. 仿真体系建模工具软件

    仿真体系建模工具软件是一款功能强大的体系结构建模工具,支持DoDAF企业架构框架和IDEF.UML.BPMN等多种建模语言,以基于IDEF的结构化分析为主,兼顾业务流程建模 (BPM).UML建模.数 ...

  4. 数字孪生厦门隧道,打造智慧交通闭环行车安全体系 | 图扑软件

    隧道作为重要交通建筑设施,为缩短运行距离.提高运输能力.减少事故等方面起到重要作用.同时隧道交通具有流量大.行车速度快的特点,且内部含有大量照明.风机.水泵.指示器.情报板.供电等设备设施,若隧道内出 ...

  5. 计算机网络系统容错检测,计算机系统的容错技术方法

    摘要: 随着计算机技术的发展,计算机系统的可靠性越来越受到人们的重视,而容错技术是提高可靠性的一种有效方法.本文研究了计算机容错技术的各种方法,如硬件容错.信息容错.软件容错等,介绍了TMR(三模冗余 ...

  6. 【华为云技术分享】“技术-经济范式”视角下的开源软件演进剖析-part 1

    前言 以互联网为代表的信息技术的迅猛发展对整个经济体系产生了巨大的影响.信息技术的发展一方面使知识的积累和传播更加迅速,知识爆炸性的增长:另一方面,使信息的获取变得越来越容易,信息交流的强度逐渐增加, ...

  7. 科普系列—低速容错CAN的容错机制介绍

    汽车的CAN总线大致可以分为三大类,分别是:单线CAN(GM专用的低速CAN).高速CAN(通信速率高)以及低速容错CAN(通信速率较低但容错性能好).本文所要讲述的是低速容错CAN.在传统的分布式架 ...

  8. 软件的基于生命周期开发方法

    软件的基于生命周期开发方法 ​ 早期软件开发处于一种无序状态,经历软件危机之后,开始采用系统工程方法论指导开发,根据软件开发的的生命周期将整个开发划为5个阶段(规划阶段.分析阶段.设计阶段.实施阶段. ...

  9. 什么是容错技术?容错技术是什么

    本文讲的是什么是容错技术?容错技术是什么,[IT168 资讯]简单地说,容错就是当由于种种原因在系统中出现了数据.文件损坏或丢失时,系统能够自动将这些损坏或丢失的文件和数据恢复到发生事故以前的状态,使 ...

最新文章

  1. Vue简单用法目录总结 以及 前端基础总结传送门:
  2. c++与C# winform的消息通讯--(结构体与byte数组的使用)
  3. 以“用户播放行为与体验”为核心的视频服务质量优化
  4. 北京开源人linux运维实战
  5. 在JSP页面中,对同名的CHECKBOX的处理
  6. 贴片晶振脚位_贴片晶振的焊接方法和注意事项
  7. 重学JavaScript系列之一_引用类型
  8. JavaScript(3)基础
  9. Comparator.comparing排序使用示例
  10. 视频演示-Snapper快捷优秀的音频预览播放器演示
  11. 神圣的QA——写给应届毕业生
  12. Selenium版本与浏览器版本
  13. BAT 大厂Java 面试题集锦之核心篇附参考答案
  14. 【数量技术宅|金融数据分析系列分享】为什么中证500(IC)是最适合长期做多的指数
  15. clickhouse SLB 服务搭建
  16. 现在有哪些web前端开发框架呢?
  17. 【HTML】HTML网页设计---智能动物园系统网站端
  18. PHP Web应用开发 -用PHP实现简单的个人博客网站
  19. 农产品质量溯源区块链方案
  20. 安卓手机管理器_亿连手机互联连接失败?搞定它

热门文章

  1. POJ3107Godfather找重心
  2. 【逐梦云服务平台研究之redis启动】
  3. 【Dubbo】图解Dubbo官方文档
  4. JavaScript ES6函数:优点
  5. Python字典列表读取存储
  6. 赛维时代IPO过会:第一季净利降71% 出口跨境电商热度降温
  7. 仿微信图片查看器入场退场动画
  8. 草柴返利APP:淘宝天猫满减店铺优惠券领取入口怎么免费领淘宝天猫粉丝福利购大额内部隐藏优惠券?
  9. Java ~ Reference
  10. WMS Top10 软件服务商