Watchdog

Watchdog – urządzenie lub program, najczęściej układ elektroniczny, wykrywający błędne działanie systemu, próbujący je naprawić bez udziału człowieka i zapobiec poważniejszej awarii.

Potocznie: układ zabezpieczający system mikroprocesorowy przed zbyt długim przebywaniem w stanie zawieszenia.

Zasada działania

Watchdog jednopoziomowy
Watchdog dwupoziomowy
Watchdog trzypoziomowy

Watchdog jest układem czasowym oczekującym na potwierdzenie poprawnej pracy przez kontrolowane urządzenia, co określony przedział czasu. Brak potwierdzenia uważa za błąd i naprawia go najczęściej poprzez restart, rzadziej przerwanie niemaskowalne lub chwilowe wyłączenie zasilania.

Występuje w dwóch głównych wariantach: sprzętowym oraz programowym. Rozwiązanie sprzętowe jest znacznie bardziej niezawodne, natomiast programowe pozwala na rozbudowanie możliwości i konfiguracji. Przykładowo, jeżeli przyczyną problemu jest wyciek pamięci, watchdog programowy zareaguje na zbyt małą ilość wolnej pamięci systemowej, dając czas na łagodne zamknięcie systemu bez utraty danych, natomiast sprzętowy bezwzględnie zresetuje system (ale dopiero po jego zawieszeniu). Watchdog sprzętowy jednak znacznie lepiej radzi sobie z nieokreślonymi zakłóceniami (np. zasilania) oraz zabezpiecza w przypadku błędów, które mogą wystąpić przed załadowaniem systemu. Czasami oba rozwiązania stosuje się jednocześnie łącząc ich zalety – programowy jako podstawowy oraz sprzętowy dla reakcji na błędy niewykryte przez ten pierwszy.

Działanie watchdoga polega na umieszczeniu w systemie funkcji ustawiającej licznik na pewną wartość początkową. Z upływem czasu, mierzonego przez niezależny od procesora zegar, wartość tego licznika zmienia się – przeważnie maleje. Jeśli osiągnie pewną wartość, zwykle jest nią 0, następuje wspomniane zresetowanie procesora, wygenerowanie odpowiedniego przerwania lub wykonanie innej ustalonej wcześniej akcji. Jednym z założeń poprawnej pracy systemu z watchdogiem jest ustawianie co pewien czas wartości licznika na wartość początkową. Ta funkcja jest zaprojektowana tak, by wykonywać się w interwałach krótszych niż czas wyzerowania licznika. Jeśli program przestanie działać poprawnie – np. wpadnie w nieskończoną pętlę lub ulegnie zakleszczeniu i nie będzie ustawiał licznika na nowo – można założyć, że restart systemu jest uzasadniony, a nawet niezbędny dla dalszej jego dostępności. W ten sposób watchdog chroni system komputerowy przed nieprzewidzianym wstrzymaniem działania.

Zastosowanie

Watchdog jest instalowany w systemach, które działają często bez obsługi człowieka, ich nieprzerwane działanie jest bardzo ważne, a działanie nieprzewidziane może być niebezpieczne. Są standardem w systemach wbudowanych funkcjonujących w różnych urządzeniach.

W większości współczesnych mikrokontrolerów watchdog jest jednym z elementów ich architektury i nie ma wtedy potrzeby stosowania dodatkowego rozwiązania sprzętowego, a system udostępnia rozkazy procesora do ustawiania parametrów i resetowania watchdoga.

Niektóre systemy operacyjne udostępniają mechanizmy zapobiegające zawieszeniu się (zablokowaniu) systemu w przypadku jego błędu (panika jądra) oraz oprogramowanie obsługi watchdoga programowego i sprzętowego, np. pakiet watchdog w Linuksie.

Podobne urządzenia

Analogią watchdoga w technice niekomputerowej jest czuwak aktywny – maszynista musi co pewien czas naciskać przycisk. Jeśli nie zauważy sygnału świetlnego każącego mu nacisnąć ten przycisk lub nie naciśnie przycisku w odpowiednim czasie, można założyć, że przestał kierować pociągiem. W tej alarmowej sytuacji pociąg zostaje zatrzymany automatycznie.

Sprawdzenie działania

Watchdog serwera lub PC można sprawdzić np. atakiem fork-bomba[1].

Zobacz też

Przypisy

Bibliografia

  • Magdalena Szymczyk "Projektowanie wbudowanych systemów sterowania odpornych na zakłócenia" (Pomiary Automatyka Robotyka 4/2009).

Media użyte na tej stronie

Nuvola apps important orange.svg
Autor: David Vignoni (original), Bastique (SVG), Rocket000 (recolored), Licencja: LGPL
Orange warning icon.
Watchdog3stage.gif
Autor: Lambtron, Licencja: CC BY-SA 3.0
A three-stage electronic watchdog timer. Each stage triggers one or more corrective actions and starts the next stage. The final stage restarts the computer.
SimpleWatchdogTimer.gif
Autor: Lambtron, Licencja: CC BY-SA 3.0
Block diagram of a simple, single-stage watchdog timer. The common clock is characteristic of basic watchdog circuits found in simple microcontrollers.
WatchdogNmiReset.gif
Autor: Lambtron, Licencja: CC BY-SA 3.0
Block diagram of 2-stage watchdog timer.