Watchdog

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

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[edytuj | edytuj kod]

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, a sprzętowy bezwzględnie zresetuje system, jednak dopiero po jego zawieszeniu. Jednakże watchdog sprzętowy 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ę – zwykle 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[edytuj | edytuj kod]

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[edytuj | edytuj kod]

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[edytuj | edytuj kod]

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

Zobacz też[edytuj | edytuj kod]

Przypisy

Bibliografia[edytuj | edytuj kod]

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