본문 바로가기
Programming/C, C++

와치독? 워치독??? WatchDog!!

by Chan_찬 2011. 1. 26.
728x90

watch dog 
왓치독, 많이 들어보신 용어일겁니다.
왓치독은 특정시간마다 감시하여
프로세스등이 동작이 멈추었는지등을 검사하여 
재기동시키는등의 작동을 시키는 방식을 말합니다. 

네이버 용어 사전에서는 이렇게 설명하고 있습니다.
오(誤)동작을 방지하기 위해 프로그램으로 설정된 타이머로
어떤 조건을 만족하면 경보를 표시하게 하는 장치이다

여기에는 소프트웨어적인 방법과 하드웨어적인 방법이 있는데 
먼저 간단하게 소프트웨어적인 방법을 설명드립니다. 

서버프로그램은 보통 동시에 많은 유저데이터를 처리하기위하여 
많은 쓰레드를 사용하게 됩니다. 하지만 컴퓨터란 온도/습도및 주위영향과 자체 부품끼리의 간섭등에 인하여 오류가 날수있는 기기이기 때문에 프로그램이 언제든 비정상적인 동작을 할 확률이 있습니다. 일명 다운이라 하는 증상이 대표적인 예이기도 합니다. 
 이런 다운된 쓰레드나 프로세스를 감시하기 위하여 별도의 와치독 쓰레드를 두어 작업중인 쓰레드들이 주기적으로 와치독 프로세스에게 자신이 살아있음을 신호를 보네 다운이 안되었음을 알리게 됩니다. 
만약 일정시간이 지났는데도 살아있음신호가 안올경우 와치독 프로세스는 자동으로 해당 쓰레드를 강제종료시키고 그를 대신할 쓰레드를 재생성하게 됩니다. 
 하지만 이런 와치독 쓰레드마져 죽을 확률이 있을경우를 대비하여 상호 감시하는 와치독 쓰레드를 2개정도 만드는 경우도 있습니다. 

하지만 만약 윈도우자체에 이상이 생겨 윈도우 전체가 
동작이상을 보인다면 어떻게 할까요? 
대부분 이런경우 컴퓨터를 리셑시켜 재부팅하면 일이 해결되므로 
이런 작업을 사람이 해주기도 합니다만, 이를 하드웨어적으로 처리하는 경우도 많습니다.
 이를 하드웨어 워치독이라 합니다. 
일반적으로 하드웨워 워치독은 타이머를 가진 보드를 하나 꽂고 
해당보드에 프로그램이 주기적으로 특정값을 보네주면 
프로그램 및 윈도우가 살아있다고 판단하다가 일정시간이 지나도 신호가 안올경우 보드에서 메인보드의 reset 핀으로 신호를 보네 컴퓨터를 리셑시키도록 하는 기술입니다. 

이렇게 하드웨어/소프트웨어 watch dog를 알아보셧습니다만 
소프트웨어의 경우 윈도우자체 이상을 막을수 없다는 것이 단점이고,
하드웨어의 경우 잦은 리셑으로 부팅시간에 의한 서비스중단시간이 생긴다는 점과
리셑이 결코 하드웨어에 좋은 영향을 주진 않는단점이 있습니다.
 그래서 보통 이 둘의 방식을 절충하여 소프트웨어워치독으로 감시하면서
워치독 프로세스/쓰레드에서 주기적으로 하드웨어 워치독 기기에게 신호를 보내다가 소프트웨어 워치독까지 멎어버릴 경우 하드웨어 워치독에 의하여 리셑되는 방식을 많이 택하고 있습니다.
728x90
728x90
Buy me a coffeeBuy me a coffee

댓글