워치독 타이머

Watchdog timer
워치독 타이머 집적회로(Texas Instruments TPS3823)한쪽 핀은 컴퓨터로부터 타이머 재시작("킥")[a] 신호를 수신하고 다른 쪽 핀은 타임아웃 신호를 출력합니다.

워치독 타이머(정상 동작하는 컴퓨터, COP 타이머 또는 단순히 워치독이라고도 함)는 컴퓨터 오작동을 검출하고 복구하는 데 사용되는 전자 타이머 또는 소프트웨어 타이머입니다.워치독 타이머는 일시적인 하드웨어 장애의 자동 수정을 용이하게 하고 오류 발생 또는 유해한 소프트웨어가 시스템 동작을 방해하는 것을 방지하기 위해 컴퓨터에서 널리 사용됩니다.

통상적인 동작중에, 컴퓨터는 정기적으로 워치독 타이머를 재기동해, 경과나 타임 아웃을 방지합니다.하드웨어 장애 또는 프로그램 오류로 인해 컴퓨터가 워치독을 재시작하지 못하면 타이머가 경과하여 타임아웃 신호를 생성합니다.타임아웃 신호는 수정 작업을 시작하는 데 사용됩니다.일반적으로 수정 조치에는 컴퓨터와 관련 하드웨어를 안전한 상태로 전환하고 컴퓨터를 재부팅하는 작업이 포함됩니다.

마이크로컨트롤러에는 통합된 온칩 워치독이 포함되어 있는 경우가 많습니다.다른 컴퓨터에서는 워치독이 CPU에 직접 접속되어 있는 칩에 있거나 컴퓨터 섀시의 외부 확장 카드에 있는 경우가 있습니다.

적용들

감시 타이머는 이 Mars Explorer와 같은 원격 자동화 시스템에 필수적입니다.

워치독 타이머는 임베디드 시스템 및 기타 컴퓨터 제어 장비에서 흔히 볼 수 있으며, 사람이 장비에 쉽게 접근할 수 없거나 고장에 적시에 대응할 수 없습니다.이러한 시스템에서는, 컴퓨터가 행업 했을 경우에 재기동을 기동하는 것은 사람에게 의존할 수 없습니다.자체적으로 동작할 필요가 있습니다.예를 들어 스페이스 프로브 등의 리모트임베디드 시스템은 인간 오퍼레이터가 물리적으로 액세스 할 수 없습니다.장애로부터 자율적으로 회복할 수 없는 경우, 이 시스템은 영속적으로 디세블이 될 가능성이 있습니다.로봇과 다른 자동화 기계에서는 제어 컴퓨터의 고장으로 인해 컴퓨터가 쉽게 접근하더라도 사람이 반응하기 전에 장비가 손상되거나 부상을 입을 수 있습니다.워치독 타이머는 보통 이런 경우에 사용됩니다.

워치독 타이머는 정상적으로 동작하는 컴퓨터상에서 소프트웨어의 실행 시간을 감시 및 제한하는 경우에도 사용됩니다.를 들어 샌드박스에서 신뢰할 수 없는 코드를 실행할 때 워치독타이머를 사용하여 코드에 사용 가능한 CPU 시간을 제한하고 일부 유형의 서비스 거부 [1]공격을 방지할 수 있습니다.실시간 운영체제시스템에서는 워치독타이머를 사용하여 할당된 최대 시간 내에 완료되도록 감시하고 실패했을 경우 작업을 종료하고 장애를 보고할 수 있습니다.

아키텍처와 운용

재기동

일부 워치독 타이머는 시간대에만 킥을 허용합니다.윈도우 밖에서 발생하는 킥은 타이머에 영향을 주지 않으며 장애로 처리될 수 있습니다.

워치독 타이머를 재기동하는 동작은 일반적으로 [2][3]워치독을 차는 동작이라고 불립니다[a].킥은 일반적으로 워치독 제어 포트에 쓰거나 레지스터에 특정 비트를 설정하여 수행됩니다.또는 특수 기계어 명령을 실행하여 밀접하게 결합된[b] 워치독 타이머를 기동한다.예를 들어 일부 PIC 마이크로컨트롤러의 명령어세트에 있는 CLRWDT(클리어 워치독타이머) 명령이 있습니다.

operating system을 실행하고 있는 컴퓨터에서는, 워치독의 재기동은 통상, 디바이스 드라이버를 개입시켜 기동됩니다.예를 들어, Linux 운영체제에서 사용자 공간 프로그램은 워치독 디바이스 드라이버와 상호 작용함으로써 워치독을 기동합니다.보통 워치독에 제로 문자를 씁니다./dev/watchdog 또는 KEEPALIVE ioctl[4]호출합니다.사용자 공간 프로그램에서 워치독하드웨어를 추상화하는 디바이스 드라이버는 타임아웃 기간을 설정하고 타이머를 시작 및 정지하는 데 사용할 수도 있습니다.

일부 워치독 타이머는 특정 시간대에만 킥을 허용합니다.윈도우 타이밍은 보통 이전 킥에 상대적입니다.또한 워치독이 아직 킥되지 않은 경우에는 워치독이 유효하게 되어 있는 순간에 상대적입니다.이 창은 이전 킥 후 지연된 후 시작되어 더 지연된 후 종료됩니다.윈도우 전후에 컴퓨터가 워치독을 기동하려고 하면 워치독이 재기동되지 않으며, 일부 구현에서는 장애로 처리되어 시정조치를 트리거합니다.

유효화

스크린샷wdctl워치독 상태를 표시하는 프로그램

워치독 타이머는 동작시에는 유효하고 아이돌시에는 무효라고 불립니다.전원을 켜면 워치독이 무조건 활성화되거나 처음에 비활성화되어 활성화하기 위해 외부 신호가 필요할 수 있습니다.후자의 경우 활성화 신호는 하드웨어에 의해 자동으로 생성되거나 소프트웨어 제어 하에 생성될 수 있다.

자동 생성 시 활성화 신호는 일반적으로 컴퓨터 재설정 신호에서 파생됩니다.일부 시스템에서는 리셋 신호가 워치독을 활성화하는 데 직접 사용됩니다.다른 경우에는 리셋 신호가 지연되어 리셋 후 나중에 워치독이 활성화됩니다.이 지연으로 인해 워치독이 활성화되기 전에 컴퓨터가 부팅될 수 있습니다.이 지연이 없으면 워치독은 타임아웃을 하고 이후의 리셋을 호출하여 컴퓨터가 애플리케이션 소프트웨어(워치독을 기동하는 소프트웨어)를 실행할 수 있게 됩니다.시스템은 끝없는 재기동 사이클에 머무르게 됩니다.

1단계 워치독

워치독 타이머에는 여러 가지 설정이 있으며 많은 경우 설정을 변경할 수 있습니다.예를 들어, 워치독과 CPU는 아래 블록 다이어그램과 같이 공통 클럭 신호를 공유하거나 독립적인 클럭 신호를 가질 수 있습니다.기본적인 워치독타이머에는 1개의 타이머 스테이지가 있어 타임아웃 시 보통 CPU가 리셋됩니다.

Block diagram of a simple, single-stage watchdog timer. The common clock is characteristic of basic watchdog microcontrollers.

다단계 워치독

2개 이상의 타이머가 캐스케이드 되어 다단 워치독타이머가 형성되는 경우가 있습니다각 타이머는 타이머 스테이지 또는 단순히 스테이지라고 불립니다.예를 들어, 아래 블록 다이어그램은 3단계 워치독을 보여줍니다.다단계 워치독에서는 프로세서에 의해 첫 번째 스테이지만 킥된다.첫 번째 스테이지가 타임아웃되면 수정 액션이 시작되고 캐스케이드 내의 다음 스테이지가 시작됩니다.각 후속 스테이지가 타임아웃되면 수정 액션이 트리거되고 다음 스테이지가 시작됩니다.최종 스테이지 타임아웃 시 수정 액션이 시작되지만 캐스케이드 끝에 도달했기 때문에 다른 스테이지는 시작되지 않습니다.일반적으로 1단계 워치독 타이머는 단순히 컴퓨터를 재부팅하는 데 사용되는 반면, 다단계 워치독 타이머는 순차적으로 일련의 수정 작업을 트리거하며, 최종 단계는 컴퓨터 [3]재부팅을 트리거합니다.

A three-stage electronic watchdog timer.

시간 간격

워치독 타이머에는 고정 시간 간격 또는 프로그램 가능한 시간 간격이 있습니다.일부 워치독 타이머에서는 선택 가능한 몇 가지 이산 값 중에서 선택하여 시간 간격을 프로그래밍할 수 있습니다.다른 경우에는 간격을 임의의 값으로 프로그래밍할 수 있습니다.일반적으로 워치독 시간 간격은 10밀리초에서1분 이상입니다다단계 워치독에서는 각 타이머에 고유한 시간 간격이 있을 수 있습니다.

시정 조치

워치독 타이머는 마스크 가능한 인터럽트, 마스크 불가능한 인터럽트, 하드웨어 리셋, 페일 세이프 상태의 액티베이션, 전원 재투입, 또는 이러한 조합 등, 몇개의 타입의 수정 액션을 개시할 수 있습니다.아키텍처에 따라 워치독이 트리거할 수 있는 수정 액션의 유형을 수정하거나 프로그래밍할 수 있습니다.일부 컴퓨터(PC 호환기 등)에서는 하드웨어 리셋을 실행하려면 펄스 신호가 필요합니다.이러한 경우 일반적으로 워치독은 내부 또는 외부 펄스 발생기를 활성화하여 하드웨어 재설정을 트리거하며, 이는 필요한 리셋 [3]펄스를 생성합니다.

임베디드 시스템 및 제어 시스템에서는 종종 워치독타이머를 사용하여 페일 세이프 회로를 활성화합니다.페일 세이프 회로가 활성화되면 모든 제어 출력이 안전 상태(예: 모터, 히터 및 고전압 전원 끄기)로 전환되어 고장이 지속되는 동안 부상 및 장비 손상을 방지합니다.2단계 워치독에서는 종종 첫 번째 타이머를 사용하여 페일 세이프 출력을 활성화하고 두 번째 타이머 단계를 시작합니다. 두 번째 단계는 타이머가 경과하기 전에 고장을 수정할 수 없는 경우 컴퓨터를 재설정합니다.

워치독 타이머를 사용하여 시스템 상태 정보(장애[3] 회복 중에 도움이 될 수 있음) 또는 디버깅 정보(장애 원인 판별에 도움이 될 수 있음)를 영속적인 매체에 기록하는 경우가 있습니다.이러한 경우 첫 번째 타이머가 경과했을 때 시작되는 두 번째 타이머는 일반적으로 데이터 기록이 완료될 때까지 충분한 시간을 두고 나중에 컴퓨터를 리셋하기 위해 사용됩니다.이것에 의해, 정보가 보존될 때까지의 시간은 확보됩니다만, 기록 프로세스가 실패해도 컴퓨터가 리셋 됩니다.

Two-stage watchdog timer

예를 들어, 위의 그림은 2 스테이지 워치독타이머의 설정을 나타내고 있습니다.통상의 동작중에, 컴퓨터는 타임 아웃을 막기 위해서 스테이지 1을 정기적으로 기동합니다.컴퓨터가 Stage1을 기동할 수 없는 경우(하드웨어 장애나 프로그래밍 에러 등), Stage1은 최종적으로 타임아웃 됩니다.이 이벤트는 2단계 타이머를 시작하는 동시에 (마스크 불가능한 인터럽트를 통해) 컴퓨터에 리셋이 임박했음을 알립니다.Stage2가 타임아웃 될 때까지 컴퓨터는 상태 정보, 디버깅 정보 또는 둘 다 기록하려고 할 수 있습니다.컴퓨터는 스테이지 2의 타임 아웃시에 리셋 됩니다.

장애 검출

워치독 타이머는 컴퓨터가 워치독 타이머를 기동할 수 없게 하는 치명적인 오동작을 자동적으로 검출합니다.그러나 컴퓨터에는 킥을 방해하지 않지만 여전히 감시 감시가 필요한 다른 덜 심각한 유형의 결함이 있는 경우가 많습니다.이러한 기능을 지원하기 위해 일반적으로 컴퓨터 시스템은 시스템이 작동한다고 판단되는 경우에만 워치독타이머를 기동하도록 설계되어 있습니다.컴퓨터는 1개 이상의 장애 검출 테스트를 실행하여 시스템이 기능하고 있는지 여부를 판단하고 모든 테스트를 통과한 경우에만 워치독을 기동합니다.

운영체제와 여러 프로세스를 실행하고 있는 컴퓨터에서는 하나의 간단한 테스트만으로는 정상적인 동작을 보증하기 어려울 수 있습니다.이는 미묘한 장애 상태를 검출하지 못하여 장애 상태가 존재하더라도 워치독을 기동할 수 있기 때문입니다.예를 들어 Linux 운영 체제의 경우 사용자 공간 워치독 데몬은 테스트를 수행하지 않고 워치독을 정기적으로 실행할 수 있습니다.데몬이 정상적으로 실행되고 있는 한 시스템은 커널 패닉 등의 심각한 시스템 크래시로부터 보호됩니다.덜 심각한 결함을 감지하기 위해서, daemon[5]는 자원의 이용 가능성(예를 들어, 충분한 메모리 및 파일 핸들이 합리적인 CPUtime), 기대 과정 활동(예를 들어, 시스템과는 달리기, 특정 파일 또는 업데이트에 출석하지), 과열 및 네트워크 활동, 그리고system-specific 시험 피하에의 증거를 시험을 수행해 구성할 수 있습니다.리pts 또는 프로그램을 [6]실행할 수도 있습니다.

실패한 테스트가 발견되면 컴퓨터는 소프트웨어 제어 하에 일련의 수정 작업을 수행하려고 할 수 있으며, 그 결과 소프트웨어가 재부팅됩니다.소프트웨어가 재기동에 실패하면 워치독타이머가 타임아웃되어 하드웨어 리셋이 실행됩니다.사실상, 이것은 소프트웨어가 첫 번째 및 중간 타이머 스테이지를 구성하고 하드웨어가 마지막 스테이지를 리셋하는 다단계 워치독 타이머입니다.예를 들어 Linux 시스템에서는 워치독 데몬이 소프트웨어 시작 재기동을 시도할 수 있습니다.이것은 파일 시스템이 안전하게 마운트 해제되고 장애 정보가 기록되기 때문에 하드웨어 리셋보다 바람직할 수 있습니다.단, 소프트웨어 재부팅은 여러 장애 조건에서 실패할 수 있으므로 하드웨어 타이머를 사용하는 것이 중요합니다.

「 」를 참조해 주세요.

메모들

  1. ^ a b 워치독 타이머를 재기동하는 동작에는 다양한 용어가 사용됩니다.일부(: 킥, 애완동물, 사료, 간지러움)는 보호견과 연결되고 다른 일부(: 태그, , 재설정)는 그렇지 않다.이 문서에서는 일관성을 유지하기 위해 을 사용합니다.
  2. ^ 밀접하게 결합된 워치독 타이머는 효과적으로 프로세서의 임베디드 확장이므로 프로세서에 고유한 특별한 기계어 명령에 의해 접근할 수 있다.

레퍼런스

  1. ^ 프랭크 스타자노와 로스 앤더슨(2000년)의 워치독 타이머: 악성 모바일 코드에 대한 워치독 타이머 강화.
  2. ^ Murphy, Niall & Barr, Michael (October 2001). "Watchdog Timers". Embedded Systems Programming. Retrieved 18 February 2013.
  3. ^ a b c d Lamberson, Jim. "Single and Multistage Watchdog Timers" (PDF). Sensoray. Retrieved 10 September 2013.
  4. ^ Weingel, Christer. "The Linux Watchdog driver API". Retrieved 20 January 2021.
  5. ^ "Watchdog 'man' page". Retrieved 10 September 2013.
  6. ^ "Linux Watchdog - General Tests". Retrieved 10 September 2013.

외부 링크

  • 위대한 워치독 구축 – Jack Gansle의 기사