Watchdog timer
![](http://178.128.105.246/content-http-upload.wikimedia.org/wikipedia/commons/thumb/d/d8/NASA_Mars_Rover.jpg/220px-NASA_Mars_Rover.jpg)
A watchdog timer (magyarul felügyeletidőzítő, néha computer operating properly (COP) timer vagy egyszerűen watchdog) egy elektronikus vagy szoftveres időzítő, melynek az a feladata, hogy felismerje és újraindítsa a számítógépet meghibásodás esetén. Normál működés közben a számítógép rendszeresen újraindítja az időzítőt, hogy megakadályozza az időtúllépést. Amennyiben egy rossz hardver vagy egy hibás program miatt a számítógép nem tudja újraindítani, az idő lejár, és ez időtúllépési jelet hoz létre. Az időtúllépési jel feladata, hogy helyreállító műveletet vagy műveleteket kezdeményezzen. A helyreállító műveletek általában magukban foglalják a számítógépes rendszer biztonságos állapotba helyezését és a rendszer normál működésének visszaállítását.
A watchdog timerek általában beágyazott rendszerekben és más számítógépes vezérlésű berendezésekben találhatók meg, ahol az emberek nem férnek hozzá könnyen a berendezéshez vagy nem tudnak időben reagálni a hibákra. Ilyen rendszerekben a számítógép nem függhet attól, hogy egy ember kezdeményez-e újraindítást, ha lefagy – önállónak kell lennie. A távoli beágyazott rendszerek, mint például az űrszondák fizikailag nem érhetők el a kezelő személyek számára; ezek véglegesen működésképtelenné válhatnak, ha nem tudnának önállóan helyreállni a hibákból. Ilyen esetekben általában watchdog timert alkalmaznak. Watchdog timereket akkor is használnak, ha nem megbízható kódot futtatnak egy homokozóban, hogy korlátozza a programkód rendelkezésére álló processzoridőt, és így megakadályozzon bizonyos szolgáltatásmegtagadással járó támadásokat.[1]
A watchdog timereket olyan operációs rendszerekben is használják, ahol bizonyos kiemelt fontossággal rendelkező műveletek elvégzéséhez egy meghatározott időintervallumban van szükség. Ha az időzítő lejár, mielőtt a művelet befejeződik, akkor az operációs rendszer a hibaadatok rögzítésével és a művelet befejezésével válaszol. Lehetséges, hogy egy rendszer mindkét típusú watchdog timert tartalmaz.
Felépítése és működése
[szerkesztés]A watchdog újraindítása
[szerkesztés]A watchdog timert úgy lehet újraindítani,[2][3] hogy írunk egy watchdog-vezérlő portra. Alternatív megoldásként azokban a mikrovezérlőkben, amelyek beépített watchdog timerrel rendelkeznek, az időzítőt néha egy speciális gépi nyelvű utasítás végrehajtásával vagy egy adott bit regiszterben való beállításával indítják újra. Erre példa a CLRWDT (clear watchdog timer) utasítás, amely néhány PIC mikrovezérlő utasításkészletében található.
Az operációs rendszert futtató számítógépekben a watchdog újraindítását illesztőprogramon keresztül hívják meg. Például a Linux operációs rendszerben egy felhasználói szintű program újraindítja az időzítőt a watchdog-illesztőprogram segítségével, általában egy nulla karaktert írva a /dev/watchdog helyre. Az illesztőprogramot, amely elválasztja a hardvert a felhasználói szintű programoktól, az időkorlát konfigurálására, valamint az időzítő indítására és leállítására is használják.
Egylépcsős watchdog
[szerkesztés]A watchdog timerek számos konfigurációban fordulnak elő, és sok lehetővé teszi a konfigurációjuk megváltoztatását. A mikrovezérlők gyakran tartalmaznak beépített watchdog timert. Más számítógépekben a watchdog egy közeli chipben helyezkedik el, amely közvetlenül kapcsolódik a processzorhoz, vagy egy külső bővítőkártyán található a számítógépben. A watchdog és a processzor működhet azonos órajelen, amint azt az alábbi blokkdiagram mutatja, illetve egymástól független órajelen is.
![Egy egyszerű, egylépcsős watchdog timer blokkdiagramja. A közös órajel jellemző az egyszerű mikrokontrollerekben található alapvető watchdog timerekre.](http://178.128.105.246/content-http-upload.wikimedia.org/wikipedia/commons/thumb/7/71/SimpleWatchdogTimer.gif/300px-SimpleWatchdogTimer.gif)
Többlépcsős watchdog
[szerkesztés]Időnként két vagy több időzítőt használnak, hogy egy többlépcsős watchdog timert képezzenek, ahol minden időzítőt egy időzítőszakasznak vagy egyszerűen szakasznak hívnak. Például az alábbi blokkdiagram háromlépcsős watchdogot mutat. Egy többlépcsős watchdogban a processzor csak az első szakaszt indítja el. Az első szakasz időkorlátjának lejáratakor megkezdődik a helyreállító művelet, és elindul a soron következő szakasz. Az utolsó szakasz időkorlátjának lejáratakor kezdeményezve lesz a helyreállító művelet, de nem indul el új szakasz. Általában az egylépcsős watchdogot a számítógép egyszerű újraindítására használják, míg a többlépcsős watchdogok sorrendben végrehajtják a helyreállító műveleteket, az utolsó szakasz után pedig a számítógép újraindítását.
![Egy háromlépcsős watchdog timer.](http://178.128.105.246/content-http-upload.wikimedia.org/wikipedia/commons/thumb/7/70/Watchdog3stage.gif/550px-Watchdog3stage.gif)
Időintervallumok
[szerkesztés]Az időintervallumok lehetnek állandó vagy programozható értékek. Egyes watchdog timerek lehetővé teszik az időintervallumok programozását úgy, hogy néhány különböző érték közül lehet választani. Másokban az intervallum tetszőleges értékekre programozható. Általában a watchdog időintervallumai tíz milliszekundumtól egy percig vagy annál nagyobbig terjednek. Egy többlépcsős watchdogban minden időzítőnek megvan a saját, egyedi időintervalluma.
Helyreállító műveletek
[szerkesztés]A watchdog timer különböző típusú helyreállító műveletet kezdeményezhet, beleértve a maszkolható megszakítást, a nem maszkolható megszakítást, a processzor újraindítását, hibabiztos állapot aktiválását vagy ezek kombinációit. Felépítéstől függően a helyreállító művelet vagy műveletek típusa, amelyet a watchdog kiválthat, rögzített vagy programozható. Néhány számítógép impulzusos jelet igényel a processzor újraindításához. Ilyen esetekben a watchdog rendszerint egy belső vagy külső impulzusgenerátor aktiválásával indítja el a processzor újraindítását, amely viszont létrehozza a szükséges újraindító jeleket.[3]
A beágyazott rendszerekben és a vezérlőrendszerekben a watchdog timereket gyakran használják a hibabiztos áramkörök aktiválására. Aktiváláskor a hibabiztos áramkör minden vezérlőkimenetet biztonságos állapotba kényszerít (pl. kikapcsolja a motorokat, a fűtőberendezéseket és a magasfeszültséget), hogy elkerülje a sérüléseket és a berendezés károsodását, amíg a hiba fennáll. Kétlépcsős watchdogban az első időzítőt gyakran használják a hibabiztos állapot aktiválására és a második időzítőszakasz indítására; a második szakasz újraindítja a számítógépet, ha a hibát az időzítő letelte előtt nem lehet kijavítani.
A watchdog timereket gyakran használják rendszerállapot-információk vagy hibakeresési információk rögzítésének elindítására egy háttértárolóra (előbbi hasznos lehet hibajavítás során,[3] utóbbi pedig a hiba okának meghatározására). Ilyen esetekben rendszerint használnak egy második időzítőt – amelyet az első időzítő letelte után indítanak – a számítógép későbbi újraindítására, miután elegendő időt hagytak az adatok rögzítésére. Ez biztosítja, hogy a számítógép akkor is újraindul, ha a rögzítési folyamat sikertelen.
![Egy kétlépcsős watchdog timer.](http://178.128.105.246/content-http-upload.wikimedia.org/wikipedia/commons/thumb/6/60/WatchdogNmiReset.gif/500px-WatchdogNmiReset.gif)
Például a fenti ábra egy kétlépcsős watchdog timer valószínű felépítését mutatja. Normál működés közben a számítógép rendszeresen újraindítja az első időzítőt, hogy elkerülje az időtúllépést. Ha a számítógép nem tudja újraindítani az első időzítőt (pl. hardverhiba vagy programozási hiba miatt), akkor az idővel lejár. Ez az esemény elindítja a második időzítőt, és ezzel egyidejűleg értesíti a számítógépet (nem maszkolható megszakítás révén), hogy az újraindítás hamarosan elkezdődik. A második időzítő lejáratáig a számítógép megpróbálhat állapotinformációkat és/vagy hibakeresési információkat rögzíteni. A számítógép a második időzítő lejáratakor újraindul.
Hibakeresés
[szerkesztés]A számítógépes rendszert általában úgy tervezik meg, hogy a watchdog timer csak akkor kerül újraindításra, ha a számítógép a rendszert működőképesnek tekinti. A számítógép egy vagy több hibakeresési teszt elvégzésével határozza meg, hogy a rendszer működik-e, és csak akkor indítja újra, ha az összes teszt sikeres volt. Egy operációs rendszert és több folyamatot futtató számítógépekben egy egyszerű teszt nem elegendő a normál működés garantálásához, mivel az nem képes észlelni egy apró hibát, ezért lehetővé teszi a watchdog újraindítását még akkor is, ha a rendszer hibásan működik.
Például a Linux operációs rendszer esetében a felhasználói szintű watchdog daemon rendszeresen újraindítja a watchdogot, anélkül, hogy bármilyen tesztet elvégezne. Mindaddig, amíg a daemon normálisan fut, a rendszert megvédi a súlyos rendszerösszeomlásoktól, például a kernelpániktól. A kevésbé súlyos hibák észlelésére a daemont[4] úgy konfigurálhatják, hogy az erőforrások rendelkezésre állását (pl. elegendő memória és fájlleíró, észszerű processzoridő) és a várható folyamattevékenység bizonyítékait (pl. rendszer daemonok futása, konkrét fájlok frissítése) lefedő teszteket elvégezze, a túlmelegedés és a hálózati tevékenység, valamint a rendszerspecifikus tesztszkriptek vagy -programok szintén futtathatók.[5]
Sikertelen teszt esetén a Linux watchdog daemon megkísérelhet egy szoftver által kezdeményezett újraindítást, amely előnyösebb lehet egy hardveres újraindítással szemben, mivel a fájlrendszer biztonságos leválasztásra, a hibainformációk pedig naplózásra kerülnek. Ugyanakkor elengedhetetlen egy hardveres időzítő biztosítása, mivel a szoftver újraindítása számos hiba esetén nem működhet. Valójában ez egy kétfokozatú watchdog, amelynek első lépése a szoftver, a második pedig a hardver újraindítása.
Jegyzetek
[szerkesztés]- ↑ „The Grenade Timer: Fortifying the Watchdog Timer Against Malicious Mobile Code” by Frank Stajano and Ross Anderson (2000).
- ↑ Watchdog Timers. Embedded Systems Programming. (Hozzáférés: 2013. február 18.)
- ↑ a b c Lamberson, Jim: Single and Multistage Watchdog Timers. Sensoray. (Hozzáférés: 2013. szeptember 10.)
- ↑ Watchdog 'man' page. (Hozzáférés: 2013. szeptember 10.)
- ↑ Linux Watchdog - General Tests. [2014. február 3-i dátummal az eredetiből archiválva]. (Hozzáférés: 2013. szeptember 10.)
Fordítás
[szerkesztés]- Ez a szócikk részben vagy egészben a Watchdog timer című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.
További információk
[szerkesztés]- Building a great watchdog – Article by Jack Ganssle