728x90
반응형
SMALL

결함 허용

결함허용에는 4가지 방식이 있다 
1. 결함탐지 - Fault Detection : 시스템은 시스템장애를 유발 할 수있는 결함을 탐지해야 함 
                                            -> 시스템상태가 일관성이 있는가를 검사
2. 손상측정 - Damage Assetment : 결함에 영향을 받은 시스템상태의 부분을 탐지
3. 결함복구 - Fault Recovery : 알려진 '안전' 상태로 복구 (일시적)
                            전방오류복구 - 손상된 상태를 수정
                            후방오류복구 - 안정 상태로 회복  
4. 결함수리 - Fault Repair - 수정을 통한 결함재발생방지
                                  , SW결함은 일시적 --> 시스템입력의 특별한 조합에 기인        


결함 내성 아키텍처

많은 시스템에서 소트프웨어적으로 검사와 복구기능을 포함시켜 결함내성을 구현할 수 있다.
이것을 Defensive programming(방어적 프로그래밍) 이라고 한다. 그러나 이 방법은 H/W와 S/W 의 상호작용으로 
생기는 결함에 대해서는 효과적이지 못하다. 따라서 가용성이 중요한 시스템에서는 결함내성을 지원하기 위한 
특별한 아키텍쳐가 필요하다.


1.결함내성을 위한 구현기술 

기술 설명
(1) Defensive Programming - 시스템의 코드에 에러가 있다고 가정하여 상태를 검사하는 코드를 삽입해둔다. 
- 만약 에러가 감지될 때 이를 처리할 수 있는 코드를 미리 삽입해둔다.
- 그러나 이것은 HJ/W와 S/W간의 상호작용으로 발생하는 에러를 처리하기는 어렵다. 
(2) Fault-tolerant 아키텍쳐 - 결함내성을 지원하는 하드웨서 또는 소프트웨어 아키텍쳐를 사용한다.
1) H/W결함내성 (Hardware Fault tolerance) 
     TMR (Tirple Moduler Redundancy) :
           3중모듈중복  (설계결함 < 개별부품장애) 

           :  동일한 입력을 받는 3개의 동일한 컴포넌트를 중복 사용하여 결과를
              비교한다.  

              만약 하나의 결과가 다르다면 그것은 무시되고 컴포넌트는 오류가 발생한
              것으로
간주한다. 
           : 설계상의 오류라기 보다는 컴포넌트 자체의 오류를 허용하기 위한
            것이며, 동시에
컴포넌트들이 오류를 발생을 일으킬 확률은 아주 낮다. 
           : 하드웨어 컴포넌트는 공통적인 설계 결함을 가지지 않는다. 
                  * 하드웨어의 경우에는 동일한 설계의 컴포넌트라 할지라도 서로
                    다른 결과를내는 경우가 발생하
지만 소프트웨어 경우에는 설계가
                    동일한 경우는 완전히 동일하다고 볼수 있기 때문에 TMR을  
                    동일한 소트프웨어로 실행시킨다는 것은 큰 의미가 없다.
              따라서 하드웨어적으로는 TMR이 의미
가 있고 소프트웨어적으로는
              다른 설계방법으로 구현된것을 가지고 비교하여야 한다

 2) S/W결함내성 (Software Fault tolerance)
     ① TMR은 기본적으로 다음을 가정하고 있다. 
         * 하드웨어 컴포넌트는 공통적인 설계 결함을 가지지 않는다.
         * 컴포넌트는 임의적으로 오동작하며. 모든 컴퓨터가 동시에 오동작할 확률은
           아주 낫다.
     ② 하지만 S/W는 이러한 가정이 성립되지 않는다.
          H/W의 경우에는 동일한 설계의 컴포넌트라 할지라도 서로 다른 결과를
          낼 수 있지만 S/W의 경우는 설계가 동일한 경우는 동일하 결과를 내게 
          되므로 TMR의 비교의미가 없다.
         대신 설계의 다양성이 요구된다.

    2-1) N버전 프로그래밍 (병행수행)
      ① 동일명세서에 대해 서로 다른 팀들에 의해 다양한 구현이 이루어진다 .
          각각의 버전들은 동시에 입력을 받아 계산을 하고 그 결과를 모아서 
          비교하게 된다.
      ② 별도컴퓨터에서 동시실행 시 출력 중 적어도 두 개 버전은 동일 출력값 산출
          (1개 버전 결함허용)
      ③ 구현은 다르지만 둘 이상의 개발팀이 명세서를 구현하기 위해 동일 알고리즘
          선택
      ④ 예) 철도신호시스템, 항공기, 원자로보호시스템
    2-2) 복구블록 (Recovery Block/순차수행)
      ① 동일한 명세에 대해 명시적으로 다른 버전을 만들어서 순차적으로 실행된다.
          각각의 프로그램 컴포넌트는 컴포넌트가 성공적으로 실행되었는지를
          점검하고 시험을 포함 장애발견시 시스템 백업 후 계산 반복하도록 
          대안코드 포함. 순차수행 (HW불필요)
      ② 각 블록마다 명시적으로 다른 알고리즘 사용 -> 동일오류 발생확률 감소 
           ** 위 두 방법은 설계와 구현의 다양성. 즉 같은 명세에 대해서는 다른 
              버전의 소트프웨어는 같은 결함을 가지지 않을 꺼라는 가정에 
              기초하고 있다


2. 결함내성제어기 

- SW가 결함내성제어기의 통제하에서 수행필요,  
  결함을 견디기위해 포함된 단게들이 소프트웨어 실행을 보장 
  출력을 조사 및 비교해서 출력상이시 복구활동 수행 


3. 설계와 구현의 다양성 (결함내성기본원리) 

 - 동일하기 위해 명세서 구현시 다양한 기법사용 시 SW의 상이한 버전이 똑 같은 결함을 포함하지 않아 공통적인 
    장애확률 최소화 
  1) 설계요구사항 : 상이한 설계기법 사용  
  2) 구현요구사항 : 3개버전 시스템을 ada, c++, Java 이용 
  3) 상이개발환경과 도구 요구 
  4) 상이한 알고리즘 개발 요구 
  5) 설계의 다양성  
 -> 시스템 전체의 확실성을 증가시킴

 

728x90
반응형
LIST

'CA' 카테고리의 다른 글

CPU 스케줄링 알고리즘  (0) 2019.10.15

+ Recent posts