Кіріспе
Компьютерлік ақауларды анықтау және қалпына келтіру үшін қолданылатын электрондық таймер. Күзетуші таймер (WDT, немесе қарапайым күзетші), кейде компьютердің дұрыс жұмыс істеу таймері (COP таймер) деп аталады. Нақты уақыт операциялық жүйелерінде күзетуші таймер уақыт бойынша маңызды міндетті бақылау үшін, оның белгіленген ең көп уақыт ішінде аяқталуын қамтамасыз ету үшін пайдаланылуы мүмкін, және егер міндет орындалмаса, оны тоқтатып, сәтсіздік туралы хабарлау үшін қолданылады.
A watchdog timer (WDT, or simply a watchdog), sometimes called a computer operating properly timer (COP timer), In real time operating systems, a watchdog timer may be used to monitor a time critical task to ensure it completes within its maximum allotted time and, if it fails to do so, to terminate the task and report the failure.
Қайта бастау
Күзетші таймерді қайта іске қосу әрекеті көбінесе "күзетші итті тепкілеу" деп аталады. Тепкілеу әдетте бақылау портына дерек жазу арқылы немесе регистрдегі белгілі бір битті орнату арқылы жасалады. Басқа жағдайда, кейбір тығыз байланысқан күзетші таймерлер арнайы машина тіліндегі команданы орындау арқылы тепкіленеді. Мысалы, кейбір PIC микроконтроллерлерінің командалар жиынтығында кездесетін CLRWDT (clear watchdog timer) командасы осыған жатады. Операциялық жүйе іске қосылған компьютерлерде күзетші таймерді қайта іске қосу әдетте құрылғы драйвері арқылы жүзеге асырылады. Мысалы, Linux операциялық жүйесінде пайдаланушы кеңістігіндегі бағдарлама күзетші таймерді күзетші таймер драйверімен өзара әрекеттесу арқылы, әдетте нөлдік символ жазу арқылы немесе KEEPALIVE ioctl функциясын шақыру арқылы тепкілейді. Құрылғы драйвері, пайдаланушы кеңістігіндегі бағдарламалардан күзетші таймер жабдығын абстракциялауға қызмет етеді және таймердің уақыт белгісін конфигурациялауға, сондай-ақ таймерді іске қосу және тоқтату үшін де қолданылуы мүмкін. Кейбір күзетші таймерлер тек белгілі бір уақыт терезесінде ғана тепкілеуге рұқсат береді. Терезенің уақыты әдетте алдыңғы тепкіге қатысты болады, ал егер күзетші таймер әлі тепкіленбесе, күзетші таймер қосылған сәттен бастап есептеледі. Терезе алдыңғы тепкіден кейін болатын кешігуден басталып, одан кейін тағы бір кешігуден аяқталады. Егер компьютер күзетші таймерді терезе аяқталар алдында немесе кейін тепкілеуге тырысса, күзетші таймер қайта іске қосылмайды, ал кейбір жағдайларда бұл ақау ретінде қарастырылып, түзету шаралары қолданылады.
Қолайландыру
Күзетші таймері жұмыс істеп тұрғанда қосылған, ал бос тұрғанда өшірілген деп есептеледі. Қосылған кезде күзетші таймер шартты түрде қосылуы мүмкін, немесе бастапқыда өшіріліп, оны қосу үшін сыртқы сигнал қажет болуы мүмкін. Екінші жағдайда, қосу сигналы аппараттық құралдар арқылы немесе бағдарламалық басқару арқылы автоматты түрде жасалуы мүмкін. Автоматты түрде жасалған жағдайда, қосу сигналы әдетте компьютерді қайта іске қосу сигналынан алынады. Кейбір жүйелерде қайта іске қосу сигналы тікелей күзетші таймерін қосу үшін қолданылады. Ал басқа жүйелерде қайта іске қосу сигналы кешіктіріледі, сондықтан күзетші таймер қайта іске қосудан кейін біраз уақыттан соң қосылады. Бұл кешігу компьютердің жүктелуіне күзетші таймер қосылғанға дейін уақыт береді. Егер бұл кешігу болмаса, күзетші таймер уақыты бітіп, компьютер өзінің қолданбалық бағдарламалық жасақтамасын іске қосудан бұрын қайта іске қосылады – күзетші таймерді жаңартатын бағдарламалық жасақтама – және жүйе толыққанды қайта іске қосылмаған аяқсыз циклға түсіп қалады.
Бір сатылы бақылаушы ит
Күзетші таймерлер көптеген конфигурацияларда келеді, және көптегендер олардың конфигурацияларын өзгертуге мүмкіндік береді. Мысалы, күзетші таймер мен процессор ортақ сағат сигналын бөлісе алады, төмендегі блок-схемада көрсетілгендей, немесе олардың тәуелсіз сағат сигналдары болуы мүмкін. Базалық күзетші таймерде бір таймерлік сатысы бар, ол уақыты біткен кезде, әдетте, процессорды қайта орнатады.
Көп сатылы бақылаушы ит
Кейде екі немесе одан да көп таймерлер бірнеше кезеңді бақылау таймерін құру үшін каскадталады, онда әрбір таймер таймер сатысы немесе жай ғана саты деп аталады. Мысалы, төмендегі блок-схема үш сатылы бақылаушы итті көрсетеді. Көп сатылы бақылауда процессор тек бірінші сатыны ғана «қосады». Бірінші кезеңнің уақыты біткеннен кейін түзету шарасы басталады және каскадтың келесі кезеңі іске қосылады. Әрбір кезеңнің уақыты өткен сайын, ол түзету әрекетін бастап, келесі кезеңді іске қосады. Соңғы кезеңнің уақыты біткеннен кейін түзету шарасы басталады, бірақ басқа кезең басталмайды, өйткені каскадтың соңы жетілген. Әдетте, бір сатылы бақылаушы таймерлер компьютерді қайта іске қосу үшін қолданылады, ал көп сатылы бақылаушы таймерлер бірінен соң бірі түзету әрекеттерінің сериясын іске қосады, соңғы саты компьютерді қайта іске қосуды іске асырады. Олар ресурстардың қолжетімділігін (мысалы, жеткілікті жад және файл дескрипторлары, ақылға қонымды CPU уақыты), күтілетін процесс белсенділігінің дәлелін (мысалы, жүйелік демонды бағдарламалар жұмыс істеуде, белгілі бір файлдар бар немесе жаңартылуда), қызу және желілік белсенділікті қамтитын сынақтарды орындау үшін конфигурациялануы мүмкін, сондай-ақ жүйелік арнайы сынақ скрипттері немесе бағдарламалары орындалуы мүмкін. Сынақ сәтсіз аяқталғанын анықтағаннан кейін компьютер бағдарламалық қамтамасыз етудің бақылауымен түзету әрекеттерінің тізбесін орындауға тырысады, содан кейін бағдарламалық қамтамасыз ету қайта іске қосылады. Егер бағдарламалық қамтамасыз ету қайта жүктеуді шақыра алмаса, бақылаушы таймер уақыт бітеді және аппараттық қалпына келтіруді шақырады. Бұл - бағдарламалық жасақтама бірінші және аралық таймерлік кезеңдерді қамтитын, ал аппараттық соңғы кезеңді қалпына келтіретін көп сатылы бақылау таймері. Мысалы, Linux жүйесінде бақылаушы жын бағдарламалық қамтамасыз етуді қайта іске қосуға тырысуы мүмкін, бұл аппараттық қалпына келтіруден артық болуы мүмкін, өйткені файл жүйелері қауіпсіз түрде ажыратылады және қате туралы ақпарат тіркеледі. Алайда, аппараттық таймердің сақтандыруын алу өте маңызды, өйткені бағдарламалық жасақтаманы қайта іске қосу бірнеше ақаулық жағдайында сәтсіз болуы мүмкін.