Watchdog

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj
Ten artykuł dotyczy systemu zabezpieczającego. Zobacz też: nieinformatyczne znaczenie wyrazu 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[edytuj]

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

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]

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]

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

Zobacz też[edytuj]

Przypisy

Bibliografia[edytuj]

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