소프트웨어 폴트 톨러런스
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;
- }
하드웨어 장애
소프트웨어의 하드웨어 폴트 톨러런스에는 다음이 필요합니다.
백업은 하드웨어를 교체해야 하는 경우 정보를 유지합니다.이 작업은 두 가지 방법 중 하나로 수행할 수 있습니다.
- 소프트웨어를 사용한 자동 일정 백업
- 정기적인 일정에 따른 수동 백업
- 정보 복원
백업에는 대체 시스템에서 백업 정보를 사용할 수 있도록 하기 위한 정보 복원 전략이 필요합니다.복원 프로세스는 일반적으로 시간이 많이 걸리고 복원 프로세스가 완료될 때까지 정보를 사용할 수 없습니다.
용장성은 복구 지연을 짧게 하기 위해 둘 이상의 컴퓨터 컴퓨팅 장치에 정보를 복제해야 합니다.이 작업은 필요할 때까지 비활성 상태로 유지되는 라이브 시스템에 대한 연속 백업을 사용하여 수행할 수 있습니다(동기화된 백업).
또한 동일한 여러 시스템에서 생성되는 정보를 복제하여 복구 지연을 제거할 수도 있습니다.
「 」를 참조해 주세요.
- 빌트인 셀프 테스트
- 내장 테스트 기기
- 폴트 톨러런스 설계
- 폴트 톨러런스 시스템
- 내장해성 컴퓨터 시스템
- 면역 인식 프로그래밍
- 로직 빌트인 셀프 테스트
- N 버전 프로그래밍
- 안전공학
- OpenSAF - Service Availability
레퍼런스
- ^ "Software Fault Tolerance". Carnegie Mellon University.
- ^ "Portable and Fault Tolerant Software Systems" (PDF). Massachusetts Institute of Technology.
- ^ Eckhardt, D. E., "N-모듈형 용장성과 N-버전 프로그래밍의 신뢰성의 근본적인 차이", 시스템과 소프트웨어 저널, 8, 1988, 페이지 313–318.
- ^ Ray Giguette와 Johnette Hassell, "Toward A Resourceful Method of Software Fault Tolerance", ACM 남동부 지역 회의, 1999년 4월