소프트웨어 폴트 톨러런스

Software fault tolerance

소프트웨어 폴트 톨러런스란 시스템 또는 하드웨어 장애가 있어도 컴퓨터 소프트웨어가 정상 동작을 계속할 수 있는 기능입니다.폴트 톨러런스 소프트웨어[1][2]장애에도 불구하고 요건을 충족할 수 있습니다.

서론

변하지 않는 유일한 것은 변화이다.이는 소프트웨어 시스템에서 발생하는 현상보다 [3]더 사실이며, 모든 소프트웨어가 동일한 방식으로 변경되는 것은 아닙니다.따라서 소프트웨어 폴트 톨러런스 방법은 허용 가능한 프로그램 [4]상태를 만들기 위해 변수 값을 수정함으로써 실행 오류를 극복하도록 설계되었습니다.소프트웨어 장애를 제어할 필요성이 오늘날 소프트웨어 업계가 직면한 가장 큰 과제 중 하나입니다.내결함성은 소프트웨어 개발 초기 단계에서 중요한 고려 사항이어야 합니다.

소프트웨어 폴트 톨러런스에는 다음과 같은 다양한 메커니즘이 있습니다.

  • 복구 블록
  • N 버전 소프트웨어
  • 셀프 체크 소프트웨어

오퍼레이팅시스템

컴퓨터 애플리케이션은 Application Programming Interface(API; 응용 프로그램프로그래밍 인터페이스)를 사용하여 키보드, 마우스, 화면, 디스크 드라이브, 네트워크, 프린터 등의 공유 리소스에 액세스하기 위해 호출합니다.이것들은 두 가지 방법으로 실패할 수 있습니다.

  • 차단된 콜
  • 장애

차단된 콜

차단된 콜은 결과가 나올 때까지 컴퓨터 프로그램을 중단하는 운영 체제로부터의 서비스 요청입니다.

예를 들어 리모트서버로부터의 응답을 사용할 수 있게 될 때까지 TCP 콜은 차단됩니다.이 문제는 웹 브라우저에서 작업을 수행할 때마다 발생합니다.집중적인 계산으로 인해 차단된 API 호출과 동일한 효과가 있는 장시간 지연이 발생합니다.

블로킹을 처리하는 방법에는 두 가지가 있습니다.

  • 스레드
  • 타이머

스레딩을 사용하면 가 차단할 수 있는 각 API 호출에 대해 별도의 실행 시퀀스를 수행할 수 있습니다.그러면 리소스를 기다리는 동안 전체 응용 프로그램이 지연되는 것을 방지할 수 있습니다.이를 통해 다른 액티비티가 실행되는 동안 API 호출 상태에 대한 정보가 손실되지 않는다는 이점이 있습니다.

스레드 언어에는 다음이 포함됩니다.

아다 아픽스 C++ C# CILK 에펠 얼랑
자바 리스프 마젠타 모듈라 3 네이피어 88 오즈 매우 빠르게
새터 Perl 5.8.7+ PHP 파이썬 R 루비 스몰토크
Tcl/Tk V 유니콘 발레리나

타이머를 사용하면 차단된 콜이 중단됩니다.정기적인 타이머를 사용하면 프로그래머는 스레드를 에뮬레이트할 수 있습니다.인터럽트는 일반적으로 차단된 API 호출 상태 또는 집중적인 계산과 관련된 모든 정보를 파괴하므로 프로그래머는 이 정보를 별도로 추적해야 합니다.

스레드화되지 않은 언어에는 다음이 포함됩니다.

배쉬 자바스크립트 SQL 비주얼 베이직

타이머와 함께 파손 상태가 발생합니다.이 문제는 다음과 같이 회피합니다.

장애

장애는 POSIX 준거 시스템의 신호에 의해 유발되며, 이러한 신호는 API 호출, 운영 체제 및 기타 애플리케이션에서 발생합니다.

핸들러 코드가 없는 신호는 어플리케이션의 조기 종료의 원인이 되는 장애가 됩니다.

핸들러는 응용 프로그램이 신호를 수신할 때 온 디맨드로 실행되는 기능입니다.이를 예외 처리라고 합니다.

종단 신호는 처리할 수 없는 유일한 신호입니다.다른 모든 신호는 핸들러 기능으로 유도할 수 있습니다.

핸들러 기능은 크게 두 가지 종류가 있습니다.

  • 초기화 완료
  • 인라인

초기화된 핸들러 기능은 소프트웨어가 시작될 때 각 신호와 쌍을 이룹니다.이것에 의해, 대응하는 신호가 도착하면, 핸들러 기능이 기동합니다.이 기술을 타이머와 함께 사용하여 스레딩을 에뮬레이트할 수 있습니다.

인라인 핸들러 함수는 특수한 구문을 사용한 콜과 관련지어집니다.가장 친숙한 것은 C++ 및 Java에서 사용되는 다음과 같습니다.

해라
{
API_call();
}
또 만나
{
signal_signal_code;
}

하드웨어 장애

소프트웨어의 하드웨어 폴트 톨러런스에는 다음이 필요합니다.

백업은 하드웨어를 교체해야 하는 경우 정보를 유지합니다.이 작업은 두 가지 방법 중 하나로 수행할 수 있습니다.

  • 소프트웨어를 사용한 자동 일정 백업
  • 정기적인 일정에 따른 수동 백업
  • 정보 복원

백업에는 대체 시스템에서 백업 정보를 사용할 수 있도록 하기 위한 정보 복원 전략이 필요합니다.복원 프로세스는 일반적으로 시간이 많이 걸리고 복원 프로세스가 완료될 때까지 정보를 사용할 수 없습니다.

용장성은 복구 지연을 짧게 하기 위해 둘 이상의 컴퓨터 컴퓨팅 장치에 정보를 복제해야 합니다.이 작업은 필요할 때까지 비활성 상태로 유지되는 라이브 시스템에 대한 연속 백업을 사용하여 수행할 수 있습니다(동기화된 백업).

또한 동일한 여러 시스템에서 생성되는 정보를 복제하여 복구 지연을 제거할 수도 있습니다.


「 」를 참조해 주세요.

레퍼런스

  1. ^ "Software Fault Tolerance". Carnegie Mellon University.
  2. ^ "Portable and Fault Tolerant Software Systems" (PDF). Massachusetts Institute of Technology.
  3. ^ Eckhardt, D. E., "N-모듈형 용장성과 N-버전 프로그래밍의 신뢰성의 근본적인 차이", 시스템과 소프트웨어 저널, 8, 1988, 페이지 313–318.
  4. ^ Ray Giguette와 Johnette Hassell, "Toward A Resourceful Method of Software Fault Tolerance", ACM 남동부 지역 회의, 1999년 4월

추가 정보