免费智能真题库 > 历年试卷 > 系统架构设计师 > 2010年下半年 系统架构设计师 下午试卷 案例
  第5题      
  知识点:   N版本程序设计   冗余技术   软件容错   程序设计   检错技术   可靠度   可靠性   模块设计   容错   软件系统   失效率   数据流   维护   系统的可靠性   系统可靠性

 
阅读以下信息系统可靠性的问题,在答题纸上回答问题1至问题3。
某软件公司开发一项基于数据流的软件,其系统的主要功能是对输入的数据进行多次分析、处理和加工,生成需要的输出数据。需求方对该系统的软件可靠性要求很高,要求系统能够长时间无故障运行。该公司将该系统设计交给王工负责。王工给出该系统的模块示意图,如图5-1所示。王工解释:只要各个模块的可靠度足够高,失效率足够低,则整个软件系统的可靠性是有保证的。


李工对王工的方案提出了异议。李工认为王工的说法有两个问题:第一,即使每个模块的可靠度足够高,假设各个模块的可靠度均为0.99,但是整个软件系统模块之间全 部采用串联,则整个软件系统的可靠度为0.994=0.96,即整个软件系统的可靠度下降明显;第二,软件系统模块全部采用串联结构,一旦某个模块失效,则意味着整个软件系统失效。
李工认为,应该在软件系统中采用冗余技术中的动态冗余或者软件容错的N版本程序设计技术,对容易失效或者非常重要的模块进行冗余设计,将模块之间的串联结构部分变为并联结构,来提高整个软件系统的可靠性。同时,李工给出了采用动态冗余技术后的软件系统模块示意图,如图5-2所示。

刘工建议,李工方案中Ml和M4模块没有釆用容错设计,但Ml和M4发生故障有可能导致严重后果。因此,可以在Ml和M4模块设计上采用检错技术,在软件出现故障后能及时发现并报警,提醒维护人员进行处理。
注:假设各个模块的可靠度均为0.99。

 
问题:5.1   在系统可靠性中,可靠度和失效率是两个非常关键的指标,请分别解释其含义。
 
问题:5.2  

请解释李工提出的动态冗余和N版本程序设计技术,给出图5-1中模块M2采用图5-2动态冗余技术后的可靠度。
请给出采用李工设计方案后整个系统可靠度的计算方法,并计算结果。
 

 
问题:5.3   请给出检错技术的优缺点,并说明检测技术常见的实现方式和处理方式。
 
 
 

   知识点讲解    
   · N版本程序设计    · 冗余技术    · 软件容错    · 程序设计    · 检错技术    · 可靠度    · 可靠性    · 模块设计    · 容错    · 软件系统    · 失效率    · 数据流    · 维护    · 系统的可靠性    · 系统可靠性
 
       N版本程序设计
        N版本程序设计是一种静态的故障屏蔽技术,采用前向恢复的策略,如下图所示。其设计思想是用N个具有相同功能的程序同时执行一项计算,结果通过多数表决来选择。其中N份程序必须由不同的人独立设计,使用不同的方法,不同的设计语言,不同的开发环境和工具来实现。目的是减少N版本软件在表决点上相关错误的概率。另外,由于各种不同版本并行执行,有时甚至在不同的计算机中执行,必须解决彼此之间的同步问题。
        
        N版本程序设计
 
       冗余技术
        实现容错的主要手段就是冗余。冗余是指所有对于实现系统规定功能来说是多余的那部分的资源,包括硬件、软件、信息和时间。通过冗余资源的加入,可以使系统的可靠性得到较大的提高。主要的冗余技术包括结构冗余、信息冗余、时间冗余、冗余附加四种。
               结构冗余
               结构冗余是常用的冗余技术,按其工作方式,可分为静态冗余、动态冗余和混合冗余3种。
               (1)静态冗余。常用的有三模冗余和多模冗余。静态冗余通过表决和比较来屏蔽系统中出现的错误。例如,三模冗余是对3个功能相同,但由不同的人采用不同的方法开发出的模块的运行结果进行表决,以多数结果作为系统的最终结果。即如果模块中有一个出错,这个错误能够被其他模块的正确结果“屏蔽”。由于无需对错误进行特别的测试,也不必进行模块的切换就能实现容错,故称为静态容错。
               (2)动态冗余。动态冗余的主要方式是多重模块待机储备,当系统检测到某工作模块出现错误时,就用一个备用的模块来顶替它并重新运行。这里须有检测、切换和恢复过程,故称其为动态冗余。每当一个出错模块被备用模块顶替后,冗余系统相当于进行了一次重构。各备用模块在待机时,可与主模块一样工作,也可不工作。前者叫做热备份系统(双重系统),后者叫做冷备份系统(双工系统、双份系统)。在热备份系统中,两套系统同时、同步运行,当联机子系统检测到错误时,退出服务进行检修,而由热备份子系统接替工作,备用模块在待机过程中其失效率为0;处于冷备份的子系统平时停机或者运行与联机系统无关的运算,当联机子系统产生故障时,人工或自动进行切换,使冷备份系统成为联机系统。在运行冷备份时,不能保证从程序端点处精确地连续工作,因为备份机不能取得原来机器上当前运行的全部数据。
               (3)混合冗余。它兼有静态冗余和动态冗余的长处。
               信息冗余
               信息冗余是在实现正常功能所需要的信息外,再添加一些信息,以保证运行结果正确的方法。例如,纠错码就是信息冗余的例子。
               时间冗余
               时间冗余使用附加一定时间的方法来完成系统功能。这些附加的时间主要用在故障检测、复查或故障屏蔽上。时间冗余以重复执行指令(指令复执)或程序(程序复算)来消除瞬时错误带来的影响。
               冗余附加技术
               冗余附加技术指为实现上述冗余技术所需的资源和技术,包括程序、指令、数据、存放和调动它们的空间和通道等。
               系统一旦发生故障,就需要采用某种方法进行恢复。故障的恢复策略一般有两种,分别是前向恢复和后向恢复。前向恢复是指使当前的计算继续下去,把系统恢复成连贯的正确状态,弥补当前状态的不连贯情况,这需要有错误的详细说明;后向恢复是指系统恢复到前一个正确状态,继续执行。这种方法显然不适合实时处理场合。
 
       软件容错
        软件容错的主要目的是提供足够的冗余信息和算法程序,使系统在实际运行时能够及时发现程序设计错误,采取补救措施,以提高软件可靠性,保证整个计算机系统的正常运行。软件容错技术主要有恢复块方法、N版本程序设计和防卫式程序设计等。
               恢复块方法
               恢复块方法是一种动态的故障屏蔽技术,采用后向恢复策略,如下图所示。它提供具有相同功能的主块和几个后备块,一个块就是一个执行完整的程序段,主块首先投入运行,结束后进行验证测试,如果没有通过验证测试,系统经现场恢复后由一后备块运行。这一过程可以重复到耗尽所有的后备块,或者某个程序故障行为超出了预料,从而导致不可恢复的后果。设计时应保证实现主块和后备块之间的独立性,避免相关错误的产生,使主块和后备块之间的共性错误降到最低限度。验证测试程序完成故障检测功能,它本身的故障对恢复块方法而言是共性,因此,必须保证它的正确性。
               
               恢复块方法
               N版本程序设计
               N版本程序设计是一种静态的故障屏蔽技术,采用前向恢复的策略,如下图所示。其设计思想是用N个具有相同功能的程序同时执行一项计算,结果通过多数表决来选择。其中N份程序必须由不同的人独立设计,使用不同的方法,不同的设计语言,不同的开发环境和工具来实现。目的是减少N版本软件在表决点上相关错误的概率。另外,由于各种不同版本并行执行,有时甚至在不同的计算机中执行,必须解决彼此之间的同步问题。
               
               N版本程序设计
               防卫式程序设计
               防卫式程序设计是一种不采用任何一种传统的容错技术就能实现软件容错的方法,对于程序中存在的错误和不一致性,防卫式程序设计的基本思想是通过在程序中包含错误检查代码和错误恢复代码,使得一旦错误发生,程序能撤销错误状态,恢复到一个已知的正确状态中去。其实现策略包括错误检测、破坏估计和错误恢复3个方法。
               除上述3种方法外,提高软件容错能力也可以从计算机平台环境、软件工程和构造异常处理模块等不同方面达到。此外,利用高级程序设计语言本身的容错能力,采取相应的策略,也是可行的办法。例如,C++语言中的try_except处理法和try_finally中止法等。
 
       程序设计
               类和继承
               1)类
               一个类是一些属性和方法的封装体,类的定义用关键字class声明,用关键字public、protected、 private指定类的成员的存取控制属性:private(私有)成员只有类内部的方法才能访问,protected(保护)成员派生类和同一文件夹下的类可以访问,public(公有)成员可以从类的外部访问。默认是public。这体现了面向对象的以下指导思想:尽量将类内部的细节隐藏起来,对类的属性的操作应该通过类的方法来进行。
               另外,public还可以用来修饰类,public类能够被其他文件夹下的类访问,非public类只能被同一文件夹下的类访问。一个.java文件中可以包含多个类,会被编译成多个.class文件,但只能有一个public类,而且该类名要和文件名一样。
               2)继承
               Java中用关键字extends表示类间的继承关系。父类的公有属性和方法成为子类的属性和方法,子类如果有和父类的同名、同参数类型的方法,那么子类对象在调用该方法时,调用的是子类的方法,亦即方法的重置。如果想要调用父类的同名方法,需要用super关键字(属性同理)。
               子类的对象可以作为祖先类的对象使用,即所谓类的向上转换,反之则不行。具体表现在:可以用子类对象来对祖先类对象赋值,可以用子类对象作为实参去调用以父类对象为形参的函数。
               对象的引用本质
               Java中的对象实际上是对象的引用,本质上和C语言中的指针是一样的;但也和C语言指针不尽相同,例如,不能自增、自减,不能强制转换成其他类型。
               例如:
               
               构造方法
               构造方法就是类的对象生成时会被调用的方法。每个类至少有一个构造方法(Constructor),也称构造函数。构造方法的名字和类名相同,没有任何返回类型。每个类都有一个默认的构造方法,但当用户自定义了构造方法后,默认的构造函数就不再有效了。
               重载
               同一个类中的两个或两个以上方法,名字相同,而参数个数不同或参数类型不同,称为重载。注意:不能有各方法名字和参数都一样,而仅仅返回值类型不同。
               静态属性和静态方法
               静态属性和静态方法的声明用关键字static实现,一个类的静态属性只有一份,由所有该类的对象共享。不需要创建对象也能访问类的静态属性和方法,访问方式为"类名.静态属性或静态方法",静态方法与对象无关,因此不能在静态方法中访问非静态属性和调用非静态方法。
               this和super关键字
               这两个关键字颇为重要。this代表当前对象,super代表当前对象的父类的东西。
               this主要用途有以下两个。
               (1)一个构造函数调用另一个构造函数,对构造函数的调用必须是第一条语句。
               (2)将对象自身作为参数来调用一个函数。
               super的用途如下:在子类中调用父类的同名方法,或在子类的构造函数中调用父类的构造函数,此时亦必须是第一条语句。
               多态
               所谓多态,是指通过基类对象调用一个基类和派生类都有的方法时,在运行时才能确定到底调用的是基类的方法还是派生类的方法。多态的好处是增加了程序的可扩展性。多态是通过动态联编实现的,即编译时不确定,程序运行时才确定调用哪个函数。
               抽象类与接口
               1)抽象类
               抽象类通过关键字abstract实现,抽象类的目的是定义一个框架,规定某些类必须具有的一些共性。
               包含抽象方法的类一定是抽象类,所谓抽象方法是指没有函数体的方法。
               抽象类的直接派生类必须实现其抽象方法;抽象类只能用于继承,不能创建对象。
               2)接口(Interface)
               接口用关键字interface声明,只能用于继承。注意:此时关键字为implements(实现)。接口用于替代多继承的概念,能实现多继承的部分特点,又避免了多继承的混乱,还能起到规定程序框架的作用。注意:接口也可以用于多态。
               直接继承了接口的类,必须实现接口中的抽象方法;间接的则可以实现,也可以不实现。
               3)抽象类与接口的异同
               接口和抽象类都不能创建对象。
               抽象类不能参与多继承,抽象类可以有非静态的成员变量,可以有非抽象方法;接口可以参与多继承,所有属性都是静态常量,所有方法都是public抽象方法。
               异常处理
               1)异常概念
               异常,即出错,比如0作为除数、找不到类、打开文件错误、数组越界等。异常如果不进行处理,那么程序运行就会结束;如果进行处理,那么会在执行完异常处理代码后继续运行。
               Java中所有异常类均继承自类Exception。
               Java中的异常类层次结构如下:
               
               此外,还有EOFException、 FileNotFoundException、 MalformedURLException等。
               2)捕获异常
               异常处理的典型用法如下,将可能出现异常的代码放在try块中,其后由一个或多个catch捕获相应异常进行处理,注意只执行第一个匹配的catch块,忽略后面的。
               
               如果某个方法中所产生的异常该方法自己没有处理,那么可以在调用该方法的方法中进行处理,如果自己处理了,那么调用它的方法就无法得到该异常。
               3)抛出异常
               异常除了运行中系统产生的之外,也可以主动抛出异常,用关键字throw,如throw new Exception()。注意:throw只能抛出Throwable子类的异常。
               4)带throws关键字的方法
               带throws关键字的方法声明如下:
               
               强制调用该方法的方法必须处理可能发生的异常,或者将异常重新定向。假定方法A带throws关键字,而方法B中调用了方法A,则方法B中必须有处理方法A中可能产生的异常的语句,或者方法B也带throws关键字,指明调用方法B的方法必须处理异常。
               final关键字
               用final关键字定义的常量,在其初始化或第一次赋值后,其值不能被改变。常量必须先有值,然后才能使用。对于常量的第一次赋值只能在构造函数中进行。
               final对象的值不能被改变,指的是该对象不能再指向其他对象,而不是指不能改变当前对象内部的属性值。
               函数参数声明为final后,函数中不能改变其值。
               final方法是不能被重置的方法。
               final类不能被继承,其所有方法都是final的,但属性可以不是final的。
 
       检错技术
        在软件系统中,无需在线容错的地方,或不能采用冗余设计技术的部分,如果对可靠性要求较高,故障有可能导致严重的后果,一般采用检错技术,在软件出现故障后能及时发现并报警,提醒维护人员进行处理。检错技术实现的代价一般低于容错技术和冗余技术,但它有一个明显的缺点,就是不能自动解决故障,出现故障后如果不进行人工干预,将最终导致软件系统不能正常运行。
        采用检错设计技术要着重考虑几个要素:检测对象、检测延时、实现方式、处理方式。
        . 检测对象:检测对象包含两个层次的含义,检测点和检测内容。在设计时应考虑把检测点放在容易出错的地方,和出错对软件系统影响较大的地方;检测内容选取那些有代表性的、易于判断的指标。
        . 检测延时:从软件发生故障到被自检出来是有一定延时的,这段延时的长短对故障的处理是非常重要的,因此,在软件检错设计时要充分考虑到检测延时。如果延时长到影响故障的及时报警,则需要更换检测对象或检测方式。
        . 实现方式:最直接的一种实现方式是判断返回结果,如果返回结果超出正常范围,则进行异常处理。计算运行时间也是一种常用的技术,如果某个模块或函数运行超过预期的时间,可以判断出现故障。另外,还有置状态标志位等多种方法,自检的实现方式要根据实际情况来选用。
        . 处理方式:大多数检错采用“查出故障-停止软件系统运行-报警”的处理方式,但也有采用不停止或部分停止软件系统运行的情况,这一般由故障是否需要实时处理来决定。
 
       可靠度
        我们用来表示可靠性最为直接的方式就是可靠度,根据可靠性的定义,可靠度就是软件系统在规定的条件下,规定的时间内不发生失效的概率,如果用Ft)来表示到t时刻止,软件不出现失效的概率,则可靠度的公式为
        
        同样,我们知道R(0)=1,R(+∞)=0
 
       可靠性
        (1)完备性。完备性评价指标及测量,如下表所示。
        
        完备性评价指标及测量
        (2)连续性。连续性评价指标及测量,如下表所示。
        
        连续性评价指标及测量
        
        (3)稳定性。稳定性评价指标及测量,如下表所示。
        
        稳定性评价指标及测量
        (4)有效性。有效性评价指标及测量,如下表所示。
        
        有效性评价指标及测量
        (5)可追溯性。可追溯性评价指标及测量,如下表所示。
        
        可追溯性评价指标及测量
        
 
       模块设计
        模块设计阶段中,在系统内部划分成各个基础部分——模块结构,确定系统的总体结构。总体结构与各个分层模块结构的关系是程序实施的重要依据。模块结构采用模块结构图来表示。模块结构图是采用HIPO图形式绘制而成的框图。
        .名称,列出系统中各主要功能的结构图名称和它们之间的关系。
        .功能,用文字简单说明主要模块结构应具有的功能。
        .功能说明,说明是用伪码形式还是用结构化语言形式,或者其他自然语言形式描述模块结构图的。
        .评价。
        .验收,指设计人员验收的决定和处理情况。
 
       容错
        提高计算机可靠性的技术可以分为避错技术和容错技术。避错是指预防和避免系统在运行中出错。容错是指系统在其某一组件故障存在的情况下不失效,仍然能够正常工作的特性。简单地说,容错就是当计算机由于种种原因在系统中出现了数据、文件损坏或丢失时,系统能够自动将这些损坏或丢失的文件和数据恢复到发生事故以前的状态,使系统能够连续正常运行。容错功能一般通过冗余组件设计来实现。计算机系统的容错性通常可以从系统的可靠性、可用性和可测性等方面来衡量。
        冗余技术是计算机容错技术的基础,一般可分为下列几种类型。
        (1)硬件冗余。以检测或屏蔽故障为目的而增加一定硬件设备的方法。
        (2)软件冗余。为了检测或屏蔽软件中的差错而增加一些在正常运行时所不需要的软件。
        (3)信息冗余。除实现正常功能所需要的信息外,再添加一些信息,以保证运行结果正确性的方法。纠错码就是信息冗余的例子。
        (4)时间冗余。使用附加一定时间的方法完成系统功能。这些附加的时间主要用在故障检测、故障屏蔽等方面。
        在20世纪60年代,主要利用双处理机或双机的方法来达到容错的目的。例如把关键的元件(处理机、存储器等)或整个计算机设置两套:一套在系统运行时使用,另一套用做备份。根据系统的工作情况又可分为热备份和冷备份两种。
        (1)热备份(双重系统):两套系统同时同步运行,当联机子系统检测到错误时,退出服务进行检修,而由热备份子系统接替工作。
        (2)冷备份(双工系统):处于冷备份的子系统平时停机,或者运行与联机系统无关的运算,当联机子系统产生故障时,人工或自动进行切换,使冷备份系统成为联机系统。在冷备份时,不能保证从程序端点处精确地连续工作,因为备份机不能取得原来机器上当前运行的全部数据。
        20世纪70年代中期出现了软件和硬件结构的容错方法。该方法在操作系统的层次上支持联机维修,即故障部分退出后运行、进行维修并重新投入运行都不影响正在运行的应用程序。该结构的特点是系统内包括双处理器、双存储器、双输入输出控制器、不间断工作的电源,以及与之适应的操作系统等。因此上述硬件的任何一部分发生故障都不会影响系统的继续工作。系统容错是在操作系统控制下进行的,在每个处理机上都保持了反映所有系统资源状态的表格,以及本机和其他处理机的工作进程。
 
       软件系统
        网络系统软件包括网络操作系统和网络协议等。网络操作系统是指能够控制和管理网络资源的软件,是由多个系统软件组成,在基本系统上有多种配置和选项可供选择,使得用户可根据不同的需要和设备构成最佳组合的互联网络操作系统。网络协议是保证网络中两台设备之间正确传送数据的约定。
 
       失效率
        失效率(Failure Rate)又称风险函数(Hazard Function),也可以称为条件失效强度,物理解释就是在运行至此软件系统未出现失效的情况下,单位时间软件系统出现失效的概率。具体用数学用语来描述,就是当软件在0~t时刻内没有发生失效的条件下,t时刻软件系统的失效强度,用λt)表示失效率,则
        
        代入公式(15-1)可得从可靠度到失效率的转换表达式:
        
 
       数据流
        数据流由一组固定成分的数据组成,表示数据的流向。在DFD中,数据流的流向可以有以下几种:从一个加工流向另一个加工;从加工流向数据存储(写);从数据存储流向加工(读);从外部实体流向加工(输入);从加工流向外部实体(输出)。
        DFD中的每个数据流用一个定义明确的名字表示。除了流向数据存储或从数据存储流出的数据流不必命名外,每个数据流都必须有一个合适的名字,以反映该数据流的含义。
        数据流或者由具体的数据属性(也称为数据结构)构成,或者由其他数据流构成。组合数据流是由其他数据流构成的数据流,它们用于在高层的数据流图中组合相似的数据流,以使数据流图更便于阅读。
        控制流是对数据流图的补充,采用虚线表示,是对由触发系统功能的事件进行描述。
        另外,一个加工可以有多个输入数据流和多个输出数据流,此时可以加上一些扩充字符符号或图形元素来描述多个数据流之间的关系。如:
        (1)星号(*)。星号表示数据流之间存在“与”关系。如果是输入流则表示所有输入数据流全部到达后才能进行加工处理;如果是输出流则表示加工结束将同时产生所有的输出数据流。
        (2)加号(+)。加号表示数据流之间存在“或”关系。如果是输入流则表示其中任何一个输入数据流到达后就能进行加工处理;如果是输出流则表示加工处理的结果是至少产生其中一个输出数据流。
        (3)异或(⊕)。异或表示数据流之间存在“互斥”关系。如果是输入流则表示当且仅当其中一个输入流到达后才能进行加工处理;如果是输出流则表示加工处理的结果是仅产生这些输出数据流中的一个。
 
       维护
        维护阶段是软件生存期中时间最长的阶段。软件一旦交付正式投入运行后便进入软件维护阶段。该阶段的关键任务是通过各种必要的维护活动使系统持久地满足用户的需要。每一项维护活动都应该准确地记录下来,作为正式的文档资料加以保存。
 
       系统的可靠性
        系统的可靠性是只保证系统正常工作的能力。这是对系统的基本要求,系统在工作时,应当对所有可能发生的情况都予以考虑,并采取适当的防范措施,提高系统的可靠性。系统的可靠性主要分系统硬件和软件的可靠性。衡量系统可靠性的重要指标是系统的平均故障间隔时间(Mean Time Between Failure, MTBF)和平均维护时间(Mean Time To Repair,MTTR)。前者指平均的系统前后两次发生故障的间隔时间,后者指发生故障后平均没修复所需要的时间。系统平均故障间隔时间越长,系统可靠性就越高;系统平均维护时间越短,则说明系统的可维护性就越高。
        要提高系统的可靠性需要从多个方面进行考察,采取多种相应的措施,可以选用可靠性较高的设备;在设计中尽可能地避免出错,在程序中设置各种检验措施,防止误操作和非法使用;采取软件和硬件的各种安全保障措施和操作,例如,对输入数据进行完整性检验,建立运行日志和审计跟踪,规定文件存取权限以及定期备份,等等。
 
       系统可靠性
        系统可靠性是系统在规定的时间内及规定的环境条件下,完成规定功能的能力,也就是系统无故障运行的概率。这里的故障是系统行为与需求的不符,故障有等级之分。系统可靠性可以通过历史数据和开发数据直接测量和估算出来,与之相关的概念主要有平均无故障时间、平均故障修复时间、平均故障间隔时间、系统可用性等。
        (1)平均无故障时间。可靠度为Rt)的系统的平均无故障时间(Mean Time To Failure, MTTF)定义为从t=0时到故障发生时系统的持续运行时间的期望值,计算公式如下:
        
        如果Rt)=e-λt,则MTTF=1/λλ为失效率,是指器件或系统在单位时间内发生失效的预期次数,在此处假设为常数。例如,假设同一型号的1000台计算机,在规定的条件下工作1000小时,其中有10台出现故障。这种计算机千小时的可靠度R为(1000-10)/1000=0.99。失效率为10/(1000×1000)=1×10-5。因为平均无故障时间与失效率的关系为MTTF=1/λ,因此,MTTF=105小时。
        (2)平均故障修复时间。可用度为At)的系统的平均故障修复时间(Mean Time ToFix, MTTR)可以用类似于求MTTF的方法求得。设A1t)是在风险函数Zt)=0且系统的初始状态为1状态的条件下At)的特殊情况,则
        
        此处假设修复率μt)=μ(常数),修复率是指单位时间内可修复系统的平均次数,则:
        MTTR=1/μ
        (3)平均故障间隔时间。平均故障间隔时间(Mean Time Between Failure, MTBF)常常与MTTF发生混淆。因为两次故障(失败)之间必然有修复行为,因此,MTBF中应包含MTTR。对于可靠度服从指数分布的系统,从任一时刻t0到达故障的期望时间都是相等的,因此有:
        MTBF=MTTR+MTTF
        在实际应用中,一般MTTR很小,所以通常认为MTBF≈MTTF。
        (4)系统可用性。系统可用性是指在某个给定时间点上程序能够按照需求执行的概率,其定义为
        可用性=MTTF/(MTTF+MTTR)×100%
        计算机系统是一个复杂的系统,而且影响其可靠性的因素也非常繁复,很难直接对其进行可靠性分析。但通过建立适当的数学模型,把大系统分割成若干子系统,可以简化其分析过程。
               串联系统
               假设一个系统由n个子系统组成,当且仅当所有的子系统都能正常工作时,系统才能正常工作,这种系统称为串联系统,如下图所示。
               
               串联系统
               设系统各个子系统的可靠性分别用R1R2,…,Rn表示,则系统的可靠性为:
               R=R1×R2×…×Rn
               如果系统的各个子系统的失效率分别用λ1λ2,…,λn来表示,则系统的失效率为:
               λ=λ1+λ2+…+λn
               并联系统
               假如一个系统由n个子系统组成,只要有一个子系统能够正常工作,系统就能正常工作,如下图所示。
               
               并联系统
               设系统各个子系统的可靠性分别用R1R2,…,Rn表示,则系统的可靠性为:
               R=1-(1-R1)×(1-R2)×…×(1-Rn
               假如所有的子系统的失效率均为λ,则系统的失效率为:
               
               在并联系统中只有一个子系统是真正需要的,其余n-1个子系统称为冗余子系统,随着冗余子系统数量的增加,系统的平均无故障时间也增加了。
               模冗余系统
               m模冗余系统由m个(m=2n+1为奇数)相同的子系统和一个表决器组成,经过表决器表决后,m个子系统中占多数相同结果的输出作为系统的输出,如下图所示。
               
               模冗余系统
               在m个子系统中,只有n+1个或n+1个以上子系统能正常工作,系统就能正常工作,输出正确结果。假设表决器是完全可靠的,每个子系统的可靠性为R0,则m模冗余系统的可靠性为:
               
               其中为从m个元素中取j个元素的组合数。
               在实际应用系统中,往往是多种结构的混联系统。例如,某高可靠性计算机系统由下图所示的冗余部件构成。
               显然,该系统为一个串并联综合系统,我们可以先计算出中间2个并联系统的可靠度,根据并联公式R=1-(1-R1)×(1-R2)×…×(1-Rn),可得到3个部件并联的可靠度为1-(1-R3,2个部件并联的可靠度为1-(1-R2。然后,再根据串联公式R=R1×R2×…×Rn,可得到整个系统的可靠度为:R×(1-(1-R3)×(1-(1-R2)×R
               
               某计算机系统
   题号导航      2010年下半年 系统架构设计师 下午试卷 案例   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
 
第5题    在手机中做本题