目录

一、系统可靠性

1.1 系统故障模型

1.1.1 逻辑级的故障

1.1.2 数据结构级的故障

1.1.3 软件故障和软件差错

1.1.4 系统级的故障

1.2 系统可靠性指标

1.3 系统可靠性模型

1.4 系统可靠性分析

1.4.1 串并联系统可靠性

1.4.2 N模冗余系统

二、冗余技术

2.1 冗余技术的分类

2.2 冗余系统

三、软件容错技术

3.1 N 版本程序设计(静态冗余)

3.2 恢复块方法(动态冗余)

3.3 防卫式程序设计

相关推荐


一、系统可靠性

系统可靠性是系统在规定的时间内及规定的环境条件下,完成规定功能的能力,也就是系统无故障运行的概率。包括成熟性、容错性、易恢复性和可靠性的依从性 4 个子特性。

1.1 系统故障模型

系统故障是指由于部件的失效、环境的物理干扰、操作错误或不正确的设计所引起的硬件或软件中的错误 (或差错) 状态,其中错误是指故障在系统中的具体位置。在信息系统中,故障或错误有如下几种表现形式:

(1) 永久性。是指连续稳定的失效、故障或错误。在计算机硬件中,永久性失效反映了不可恢复的物理改变。
(2) 间歇性。是指那些由于不稳定的硬件或软件状态所引起的、仅仅是偶然出现的故障或错误。
(3) 瞬时性。是指那些由于暂时的环境条件而引起的故障或错误。

1.1.1 逻辑级的故障

逻辑级的故障是指硬件逻辑上出现的故障,一般是指电路中元器件的输入或输出固定为 0(或 1)。又可分为短路故障、开路故障和桥接故障。短路故障是指一个元件的输出线的逻辑值恒等于输入线的逻辑值;开路故障是指元件的输出线悬空,逻辑值可根据具体电路来决定;桥接故障是指两条不应相连的线连接在一起而发生的故障。

1.1.2 数据结构级的故障

故障在数据结构上的表现称为差错。常见的差错有以下三种:

(1) 独立差错。一个故障的影响表现为使一个二进制位发生改变。
(2) 算术差错。一个故障的影响表现为使一个数据的值增加或减少。
(3) 单向差错。一个故障的影响表现为使一个二进制向量中的某些位朝一个方向 (0 或 1)改变。

1.1.3 软件故障和软件差错

软件故障是指软件设计过程造成的与设计说明的不一致,软件故障在数据结构或程序输出中的表现称为软件差错。与硬件不同,软件不会因为环境应力而疲劳,也不会因为时间的推移而衰老。因此,软件故障只与设计有关。常见的软件差错有以下几种:

(1) 非法转移:程序执行了说明中不存在的转移。
(2) 误转移:程序执行了尽管说明中存在,但依据当前控制数据不应进行的转移。
(3) 死循环:程序执行时间超过了规定界限。
(4) 空间溢出:程序使用的空间超过了规定的界限。
(5) 数据执行:指令计数器指向数据单元。
(6) 无理数据:程序输出的数据不合理。

1.1.4 系统级的故障

故障在系统级上的表现为功能错误,即系统输出与系统设计说明的不一致。如果系统输出无故障保护机构,则故障在系统级上的表现就会造成系统失效。

1.2 系统可靠性指标

(1)规定时间:自然时间、运行时间、执行时间(占用CPU)。
(2)失效概率:软件运行初始时为0,随着时间增加单调递增,不断趋向于1。
(3)可靠度:软件系统在规定的条件下、规定的时间内不发生失效的概率。等于1-失效概率。
(4)失效强度:单位时间软件系统出现失效的概率。
(5)平均失效前时间(MTTF):平均无故障时间,发生故障前正常运行的时间。
(6)平均恢复前时间(MTTR):平均故障修复时间,发生故障后的修复时间。
(7)平均故障间隔时间(MTBF):失效或维护中所需的平均时间,包括故障时间以及检测和维护设备的时间。

  • 平均无故障时间MTTF=1/失效率。
  • 平均故障修复时间MTTR=1/修复率。
  • 平均故障间隔时间MTBF=MTTF+MTTR。
  • 系统可用性=MTTF/(MTTF+MTTR)*100%。

1.3 系统可靠性模型

时间模型基于这样一个假设:系统中的故障数目在 t=0 时是常数,随着故障被纠正,故障数目逐渐减少

故障植入模型是一个面向错误数的数学模型,其目的是以系统中的错误数作为衡量可靠性的标准。故障植入模型的基本假设如下:

(1) 系统中的固有错误数是一个未知的常数。
(2) 系统中的人为错误数按均匀分布随机植入。
(3) 系统中的固有错误数和人为错误被检测到的概率相同。
(4) 检测到的错误立即改正。

数据模型。对于一个预先确定的输入环境,系统的可靠度定义为在 n 次连续运行中系统完成指定任务的概率

1.4 系统可靠性分析

1.4.1 串并联系统可靠性

无论什么系统,都是由多个设备组成的,协同工作,而这多个设备的组合方式可以是串联、并联,也可以是混合模式,假设每个设备的可靠性为R1,R2....Rn,则不同的系统的可靠性公式如下:

串联系统,一个设备不可靠,整个系统崩溃,整个系统可靠性R=R1*R2*..*Rn。

并联系统,所有设备都不可靠,整个系统才崩溃,整个系统可靠性R=1-(1-R1)*(1-R2)*...*(1-Rn)。

1.4.2 N模冗余系统

N模冗余系统由N个(N=2n+1)相同的子系统和一个表决器组成,表决器把N 个子系统中占多数相同结果的输出作为输出系统的输出,如图所示。在N个子系统中,只要有n+1个或n+1个以上子系统能正常工作,系统就能正常工作,输出正确的结果

二、冗余技术

提高系统可靠性的技术可以分为避错 (排错) 技术和容错技术。避错是通过技术评审、系统测试和正确性证明等技术,在系统正式运行之前避免、发现和改正错误。容错是指系统在运行过程中发生一定的硬件故障或软件错误时,仍能保持正常工作而不影响正确结果的一种性能或措施。容错技术主要是采用冗余方法来消除故障的影响。

2.1 冗余技术的分类

结构冗余。按其工作方式,可分为静态冗余、动态冗余和混合冗余三种。

  • (1) 静态冗余。又称为屏蔽冗余或被动冗余,常用的有三模冗余和多模冗余。静态冗余通过表决和比较来屏蔽系统中出现的错误
  • (2) 动态冗余。又称为主动冗余,它是通过故障检测、故障定位及故障恢复等手段达到容错的目的。其主要方式是多重模块待机储备,当系统检测到某工作模块出现错误时,就用一个备用的模块来顶替它并重新运行。
  • (3) 混合冗余。是将静态冗余和动态冗余结合起来。它先使用静态冗余中的故障屏蔽技术,使系统免受某些可以被屏蔽的故障的影响。而对那些无法屏蔽的故障则采用主动冗余中的故障检测、故障定位和故障恢复等技术。成本很高。

信息冗余是在实现正常功能所需要的信息外,再添加一些信息,以保证运行结果正确性的方法。

时间冗余是以时间(即降低系统运行速度)为代价来减少硬件冗余和信息冗余的开销,以达到提高可靠性的目的。基本概念是重复多次进行相同的计算,称为重复执行(简称复执),以达到故障检测的目的。

冗余附加是指为实现上述冗余技术所需的资源和技术,包括程序、指令、数据,以及存放和调用它们的空间等。

2.2 冗余系统

将各种冗余技术融合在一个系统中, 就称之为冗余系统。一般来说,一个较为完整的冗余系统,在处理运行中出现的故障时,大致有 10 个步骤:故障检测、故障屏蔽、故障限制、复执、故障诊断、系统重配置、系统恢复、系统重新启动、修复、系统重组合。

三、软件容错技术

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

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

3.1 N 版本程序设计(静态冗余)

N 版本程序设计是一种静态的故障屏蔽技术,采用前向恢复的策略

N 版本程序的设计思想是用 n 个具有相同功能的程序同时执行一项计算,结果通过多数表决来选择。其中 n 个版本的程序必须由不同的人(小组)独立设计,使用不同的方法、不同的设计语言、不同的开发环境和工具来实现,目的是减少 n 个版本的程序在表决点上相关错误的概率。

与通常软件开发过程不同的是,N 版本程序设计增加了三个新的阶段

(1) 相异成分规范评审。每个版本的工作组均接收到一份相同的 SRS(软件需求规格说明书,Software Requirements Specification)。为了保证相异性,这些工作组之间不允许进行任何形式的交流,有关 SRS 的问题只能在工作组和项目管理人员之间进行交换,这种交换是通过问题单的形式进行的。
(2) 相异性确认。在相异成分详细设计后进行,其目的是对相异性进行评估。
(3) 背对背测试。使用同样的测试数据对 N 版本程序进行测试,将 n 个版本程序的运行结果进行比较,用以发现版本中的软件故障。

与通常的软件开发相比,除了开发过程不同之外,N 版本程序设计还需要注意以下问题

(1)N 版本程序的同步
(2)N 版本程序之间的通信
(3)表决算法。通常有三种表决算法:全等表决(主要适用于布尔量的表决)、非精确表决(允许设置一个偏差,主要适用于数值量的表决)和 Cosmetie 表决 (适用于字符串的表决)。
(4)一致比较问题。在进行有限精度运算的情况下,计算的结果与所使用的特定算法和计算的顺序有关,在进行计算量比较时,虽然这些计算量能满足 SRS 要求,但比较结果可以全然不同,最终导致在 N 版本表决时不能得出正确的结果。
(5)数据相异性。对数据空间的任一点,往往允许有一定的误差,只要数据点在允许的误差范围内,则可看作是逻辑上等效的。

3.2 恢复块方法(动态冗余)

恢复块方法是一种动态的故障屏蔽技术,采用后向恢复策略。恢复块方法提供具有相同功能的主块和几个后备块,一个块就是一个执行完整的程序段,主块首先投入运行,结束后进行验证测试,如果没有通过验证测试,系统经现场恢复后由后备块运行。

恢复快方法和N版本程序设计的比较

3.3 防卫式程序设计

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

(1)错误检测。在程序中插入状态断言,就是包含状态变量的逻辑谓词。这些断言可插入到一些重要的赋值语句之前,使得那些可能导致错误的赋值在变量状态发生变化之前被检测出来。
(2)破坏估计。插入断言法是试图在变量状态改变之前对可能引起错误的操作予以避免,而破坏估计的任务是在变量可能已经遭到破坏的情况下,判断破坏是否已发生,以及状态空间的哪些部分受到了错误的影响。
(3)错误恢复。在防卫式程序设计中,既可使用前向恢复策略,也可使用后向恢复策略,其中后向恢复是一种更易于实现的技术,可以保持一个安全状态的细节,发生错误时再对该状态进行恢复。通常有两种处理办法,一种是数据状态的变换先不写入,等到处理全部完毕而没有出现错误时,才写入变换后的状态,这种处理多用于数据库系统中;另一种是在一定时间间隔的检查点制作安全状态的备份,当发生错误时,恢复最近检查点的状态。

相关推荐

信息安全-通信与网络安全技术&系统访问控制技术

信息安全的容灾与业务持续&安全管理的措施

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐