Сторожевой таймер


Сторожевой таймер (иногда называемый компьютером, работающим должным образом , или COP -таймером, или просто сторожевым таймером ) — это электронный или программный таймер , который используется для обнаружения и восстановления после сбоев в работе компьютера . Сторожевые таймеры широко используются в компьютерах для облегчения автоматического исправления временных аппаратных сбоев и предотвращения нарушения работы системы ошибочным или злонамеренным программным обеспечением.

Во время нормальной работы компьютер регулярно перезапускает сторожевой таймер, чтобы предотвратить его истечение или «тайм-аут». Если из-за сбоя оборудования или программной ошибки компьютеру не удается перезапустить сторожевой таймер, таймер истекает и генерирует сигнал тайм-аута. Сигнал тайм-аута используется для инициирования корректирующих действий. Корректирующие действия обычно включают перевод компьютера и связанного с ним оборудования в безопасное состояние и перезагрузку компьютера .

Микроконтроллеры часто включают встроенный сторожевой таймер. В других компьютерах сторожевой таймер может располагаться в соседней микросхеме, которая подключается непосредственно к ЦП , или на внешней плате расширения в корпусе компьютера.

Сторожевые таймеры обычно используются во встроенных системах и другом оборудовании, управляемом компьютером, где люди не могут легко получить доступ к оборудованию или не могут своевременно реагировать на сбои. В таких системах компьютер не может зависеть от человека, чтобы вызвать перезагрузку в случае зависания ; он должен быть самодостаточным. Например, удаленные встроенные системы, такие как космические зонды , физически недоступны для людей-операторов; они могут стать навсегда отключенными, если они не смогут автономно восстанавливаться после сбоев. В роботахи других автоматизированных машин, сбой в управляющем компьютере может привести к повреждению оборудования или травмам до того, как человек сможет среагировать, даже если к компьютеру легко получить доступ. В подобных случаях обычно используется сторожевой таймер.

Сторожевые таймеры также используются для контроля и ограничения времени выполнения программного обеспечения на нормально работающем компьютере. Например, сторожевой таймер может использоваться при запуске ненадежного кода в песочнице , чтобы ограничить время ЦП, доступное для кода, и, таким образом, предотвратить некоторые типы атак типа «отказ в обслуживании» . [1] В операционных системах реального времени сторожевой таймер может использоваться для отслеживания критической по времени задачи, чтобы убедиться, что она завершается в течение максимально отведенного времени, и, если это не удается, завершить задачу и сообщить об ошибке.

Действие по перезапуску сторожевого таймера обычно называют сбросом сторожевого таймера . [2] [3] Кик обычно выполняется путем записи в порт управления сторожевым устройством или установкой определенного бита в регистре . В качестве альтернативы, некоторые сильно связанные [b] сторожевые таймеры запускаются выполнением специальной инструкции машинного языка . Примером этого является инструкция CLRWDT (сброс сторожевого таймера), встречающаяся в наборе команд некоторых микроконтроллеров PIC .


Интегральная схема сторожевого таймера (Texas Instruments TPS3823). Один контакт получает сигнал перезапуска таймера («удар» [a] ) от компьютера; другой контакт выводит сигнал тайм-аута.
Сторожевые таймеры необходимы в удаленных автоматизированных системах, таких как этот Mars Exploration Rover.
Некоторые сторожевые таймеры позволяют запускать команды только в течение временного окна. Удары ногами за окном не влияют на таймер и могут рассматриваться как ошибки.
Скриншот wdctl, программы, которая показывает статус сторожевого таймера