重点1:系统可靠性分析
要点1:可靠性相关基本概念
1、系统可靠性是系统在规定的时间、环境下完成规定功能的能力,也就是系统无故障运行的概率。
2、系统可用性是指在某个给定时间点上系统能够按照需求执行的概率。
3、软件可靠性与硬件可靠性是不等同的:
(1)复杂性:软件复杂性比硬件高,大部分失效来自于软件失效。
(2)物理退化:硬件失效主要是物理退化所致,软件不存在物理退化。
(3)唯一性:软件是唯一的,而两个硬件不可能完全一样。
(4)版本更新周期:硬件较慢,软件较快。
要点2:可靠性指标
1、平均无故障时间MTTF
,为失效率����=1/λ,λ为失效率
2、平均故障修复时间MTTR
,为失效率����=1/μ,μ为失效率
3、平均故障间隔时间MTBF
����=����+����
4、系统可用性
系统可用性系统可用性=����/(����+����)×100
要点3:串联系统与并联系统
重点2:系统可靠性设计
要点1:常用的可靠性保证技术
1、避错技术
2、容错技术
(1)容错技术涉及到的关键方式是冗余。
(2)冗余分为结构冗余(硬件冗余、软件冗余)、信息冗余(校验码)、时间冗余(重复多次进行相同的计算)。
(3)实现冗余的方式包括N版程序设计(静态冗余)、恢复块设计(动态冗余)、防卫式程序设计。
3、检错技术
(1)检错技术实现的代价一般低于容错技术和冗余技术,但明显的缺点是不能自动解决故障,出现故障后如果不进行人工干预,将最终导致软件系统不能正常运行。
(2)检错技术常见的实现方式:最直接的一种实现方式是判断返回结果,如果返回结果超出正常范围,则进行异常处理;计算运行时间也是一种常用技术,如果某个模块或函数运行时间超过预期时间,可以判断出现故障;还有置状态标志位等多种方法,自检的实现方式需要根据实际情况来选用。
(3)检错技术的处理方式大多采用“查处故障-停止软件运行-报警”的模式,但根据故障的不同,也有采用不停止或部分停止软件系统运行的情况,这一般由故障是否需要实时处理来决定。
4、降低复杂度技术
要点2:N版本程序设计
与通常软件开发过程不同的是,N版本程序设计增加了三个新的阶段:相异成份规范评审、相异性确认、背对背测试。
N版本程序的同步、N版本程序之间的通信、表决算法(全等表决、非全等表决、Cosmetie表决)、一致比较问题、数据相异性。
要点3:恢复块方法
1、设计时应保证实现主块和后备块之间的独立性,避免相关错误的产生,使主块和备份块之间的共性错误降到最低程度。
2、恢复块方法的关键是必须保证验证测试程序的正确性。
3、与N版本程序设计的比较:
恢复块方法 | 恢复块方法 | |
---|---|---|
硬件运行环境 | 单机 | 多机 |
错误检测方法 | 验证测试程序 | 表决 |
恢复策略 | 后向恢复:系统恢复到前一个正确状态,继续执行 | 前向恢复:使当前的计算继续下去,把系统恢复成连贯的正确状态,弥补当前状态的不连贯情况 |
实时性 | 差 | 好 |
要点4:防卫式程序设计
对于程序中存在的错误和不一致性,通过在程序中包含错误检查代码和错误恢复代码,使得一旦错误发生,程序能撤销错误状态并恢复到一个已知的正确状态中去。
实现策略:错误检测、破坏估计、错误恢复。
要点5:双机容错
1、双机热备份模式:主系统工作、备用系统同步主系统状态。
2、双机互备模式:同时提供不同的服务,心跳中断则接管。
3、双机双工模式:同时提供相同的服务,属于集群的一种。