软件容错方法之——软件冗余

软件容错的主要目的是提供足够的冗余信息和算法程序,使系统在实际运行时能够及时发现程序设计错误,采取补救措施,以提高软件可靠性,保证整个计算机系统的正常运行。

软件容错技术主要有恢复块方法和N-版本程序设计,另外还有防卫式程序设计等。

(1)恢复块方法

故障的恢复策略一般有两种:前向恢复和后向恢复。所谓前向恢复是指使当前的计算继续下去,把系统恢复成连贯的正确状态,弥补当前状态的不连贯情况,这需有错误的详细说明。所谓后向恢复是指系统恢复到前一个正确状态,继续执行。这种方法显然不适合实时处理场合。

1975年B.Randell提出了一种动态屏蔽技术棗恢复块方法。恢复块方法采用后向恢复策略。它提供具有相同功能的主块和几个后备块,一个块就是一个执行完整的程序段,主块首先投入运行,结束后进行验收测试,如果没有通过验收测试,系统经现场恢复后由一后备块运行。这一过程可以重复到耗尽所有的后备块,或者某个程序故障行为超出了预料,从而导致不可恢复的后果。设计时应保证实现主块和后备块之间的独立性,避免相关错误的产生,使主块和后备块之间的共性错误降到最低限度。验收测试程序完成故障检测功能,它本身的故障对恢复块方法而言是共性,因此,必须保证它的正确性。

图 恢复块方法

(2)N-版本程序设计

1977年出现的N版本程序设计,是一种静态的故障屏蔽技术,采用前向恢复的策略,其设计思想是用N个具有相同功能的程序同时执行一项计算,结果通过多数表决来选择。其中N份程序必须由不同的人独立设计,使用不同的方法,不同的设计语言,不同的开发环境和工具来实现。目的是减少N版本软件在表决点上相关错误的概率。另外,由于各种不同版本并行执行,有时甚至在不同的计算机中执行,必须解决彼此之间的同步问题。

图 N版本程序设计

(3)防卫式程序设计

防卫式程序设计是一种不采用任何一种传统的容错技术就能实现软件容错的方法,对于程序中存在的错误和不一致性,防卫式程序设计的基本思想是通过在程序中包含错误检查代码和错误恢复代码,使得一旦错误发生,程序能撤消错误状态,恢复到一个已知的正确状态中去。其实现策略包括错误检测,破坏估计和错误恢复三个方面。

除上述三种方法外,提高软件容错能力亦可以从计算机平台环境、软件工程和构造异常处理模块等不同方面达到。此外,利用高级程序设计语言本身的容错能力,采取相应的策略,也是可行的办法。如c++语言中的try_except处理法:try_finally中止法等。

软件容错虽然起步较晚,但具有独特的优势,费用增加较少。而硬件容错的每一种策略都要增加费用。目前,软件容错已成为容错领域重要分支之一。

c语言编译软件容错策略,软件容错方法之——软件冗余相关推荐

  1. 安装php还要安装什么软件吗,PHP的安装方法及软件

    PHP的安装方法及软件 学习PHP 的前提条件是要安装好PHP的软件.下面是百分网小编精心为大家整理的关于PHP 的安装方法及软件,希望对大家有帮助,更多内容请关注应届毕业生网! 安装前需要做什么? ...

  2. c语言0xa9错误,16种C语言编译警告(Warning)类型的解决方法

    当编译程序发现程序中某个地方有疑问,可能有问题时就会给出一个警告信息.警告信息可能意味着程序中隐含的大错误,也可能确实没有问题.对于警告的正确处理方式应该是:尽可能地消除之.对于编译程序给出的每个警告 ...

  3. 相对于硬件计算机软件就是,计算机的软件是将解决问题的方法,软件是相对于硬件来说的...

    计算机网络管理软件是为计算机网络配置的系统软件.它负责对网络资源进行组织和管理,实现相互之间的通信.计算机网络管理软件包括网络操作系统和数据通信处理程序.前者用于协调网络中各计算机的操作系统及实现网络 ...

  4. c语言编译如何去掉warning,16种C语言编译警告(Warning)类型的解决方法

    当编译程序发现程序中某个地方有疑问,可能有问题时就会给出一个警告信息.警告信息可能意味着程序中隐含的大错误,也可能确实没有问题.对于警告的正确处理方式应该是:尽可能地消除之.对于编译程序给出的每个警告 ...

  5. C语言编译出现一个警告,16种C语言编译警告(Warning)类型的解决方法

    当编译程序发现程序中某个地方有疑问,可能有问题时就会给出一个警告信息.警告信息可能意味着程序中隐含的大错误,也可能确实没有问题.对于警告的正确处理方式应该是:尽可能地消除之.对于编译程序给出的每个警告 ...

  6. 组策略管理——软件限制策略(5)

    组策略管理--软件限制策略(5) 标签:安全 系统 管理 软件限制策略 组策略 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://m ...

  7. 组策略管理——软件限制策略(4)

    编写软件限制规则 在前面几篇文章中讲了软件限制规则的基本概念,现在就来学习如何编写自定义软件限制策略. 编写规则应遵循的原则 首先,需要大家注意的是,软件限制策略应本着方便.安全.实用的原则来编写.限 ...

  8. C语言编译的基本原理

    C语言编译的基本策略是使用程序将源代码文件转换为可执行文件. 这个过程分为三部分: 源代码文件 ------> 目标代码文件------>可执行文件 用到两个组件: 编译器.链接器. 编译 ...

  9. 软件定义的容错计算机体系,1.4 软件容错技术 - 计算机系统容错技术方法

    1.4 软件容错技术 由于硬件系统的故障主要来自生产和使用阶段,因此容错可以通过相同部件的重复,即相同资源的累积设置来实现;而软件故障主要来自说明.设计和实现阶段,因此程序的简单重复不能实现容错,它只 ...

最新文章

  1. 区别聚焦索引和非聚集索引
  2. mysql路由器配置文件_如何安装并配置mysql 5.7.13解压缩版?
  3. mybatis-plusspringboot
  4. 【报错】TypeError: ‘int‘ object is not callable_Python系列学习笔记
  5. 8月第4周国内IT网站/频道Top15:太平洋降至第三
  6. 听说你盗图都盗绿了?
  7. macOS下利用dSYM文件将crash文件中的内存地址转换为可读符号
  8. 小熊派开发实践丨漫谈LiteOS之传感器移植
  9. Django中Form组件的使用
  10. Nginx之二:nginx.conf简单配置(参数详解)
  11. 新手linux安装vasp_史上最简单的VASP安装教程-非虚拟机
  12. 浸没式液冷,阿里云新立项两大技术白皮书
  13. HTML5期末大作业:家乡网站设计——石家庄(10页) HTML+CSS+JavaScrip 旅游网页html 家乡介绍html网页设计 dw旅游景点网页设计 web课程设计网页规划与设计
  14. 小米开源文件管理器MiCodeFileExplorer-源码研究(9)-入口分析
  15. ScreenToClient 和 ClientToScreen
  16. buuctf web wp
  17. 宽松委托转换(Relaxed delegate conversion)
  18. 坚持责任和安全意识当先
  19. typora+PicGo上传图片 配置免费图床
  20. win10升级到win11教程

热门文章

  1. Linux网络:内核中的网络参数(net.xxx.xxx)
  2. python导入excel模块_python如何导入excel
  3. sklearn搭建线性模型的总结
  4. windwos下ffmpeg的安装
  5. lottie-android: 【Android】开源动画库(Airbnb开源)
  6. Mybatis解析(面试题)
  7. OpenShift 4 - 容器应用备份和恢复
  8. OpenShift 4 之AMQ Streams(4) - 用Prometheus监控Kafka
  9. TypeScript 3.9 发布
  10. 微软为 Chromium 版 Edge 浏览器推出新的 logo