Сторожевой таймер - Watchdog timer

Сторожевые таймеры необходимы в удаленных автоматизированных системах, подобных этой. Марсоход для исследования Марса

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

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

Сторожевые таймеры также используются в операционных системах, где требуется выполнение определенных высокоприоритетных операций в определенный интервал времени. Если таймер истекает до завершения операции, тогда ОС реагирует на прерывание таймера, записывая данные об ошибке и завершая операцию. Система может иметь оба типа сторожевого таймера.

Архитектура и работа

Перезапуск сторожевого таймера

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

На компьютерах, которые работают операционные системы, сброс сторожевого таймера обычно вызывается через драйвер устройства. Например, в Операционная система Linux, а пространство пользователя программа запускает сторожевой таймер, взаимодействуя с драйвером сторожевого устройства, обычно записывая нулевой символ в / dev / сторожевой таймер. Драйвер устройства, который служит для абстрагирования сторожевого устройства от программ пользовательского пространства, также используется для настройки периода ожидания и запуска и остановки таймера.

Одноступенчатый сторожевой таймер

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

Блок-схема простого одноступенчатого сторожевого таймера. Общие часы характерны для основных сторожевых микроконтроллеров.

Многоступенчатый сторожевой таймер

Иногда два или более таймера соединяются каскадом, чтобы сформировать многоступенчатый сторожевой таймер, где каждый таймер называется этап таймера, или просто сцена. Например, на блок-схеме ниже показан трехступенчатый сторожевой таймер. В многоступенчатом сторожевом таймере процессор запускает только первый этап. По истечении времени ожидания первого этапа инициируется корректирующее действие и запускается следующий этап каскада. По истечении времени ожидания каждого последующего этапа запускается корректирующее действие и начинается следующий этап. По истечении времени ожидания последнего этапа инициируется корректирующее действие, но никакие другие этапы не запускаются, поскольку достигнут конец каскада. Как правило, одноступенчатые сторожевые таймеры используются для простого перезапуска компьютера, тогда как многоступенчатые сторожевые таймеры последовательно запускают серию корректирующих действий, причем последний этап запускает перезагрузку компьютера.[3]

Трехступенчатый электронный сторожевой таймер.

Временные интервалы

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

Корректирующие действия

Сторожевой таймер может инициировать любой из нескольких типов корректирующих действий, в том числе: маскируемое прерывание, немаскируемое прерывание, сброс процессора, безотказный активация состояния, включение и выключение питания или их комбинации. В зависимости от его архитектуры тип корректирующего действия или действий, которые может запускать сторожевой таймер, может быть фиксированным или программируемым. Некоторым компьютерам (например, совместимым с ПК) требуется импульсный сигнал, чтобы вызвать сброс процессора. В таких случаях сторожевой таймер обычно запускает сброс процессора, активизируя внутренний или внешний генератор импульсов, который, в свою очередь, создает необходимые импульсы сброса.[3]

Во встроенных системах и системах управления сторожевые таймеры часто используются для активации безотказный схема. При активации схема отказоустойчивости переводит все управляющие выходы в безопасное состояние (например, выключает двигатели, нагреватели инапряжения ), чтобы предотвратить травмы и повреждение оборудования, пока неисправность сохраняется. В двухступенчатом сторожевом таймере первый таймер часто используется для активации отказоустойчивых выходов и запуска второй ступени таймера; второй этап сбросит компьютер, если неисправность не может быть устранена до истечения времени таймера.

Сторожевые таймеры иногда используются для запуска записи информации о состоянии системы, что может быть полезно во время восстановления после сбоя.[3]-или же отлаживать информацию (которая может быть полезна для определения причины неисправности) на настойчивый средний. В таких случаях второй таймер, который запускается по истечении первого таймера, обычно используется для перезагрузки компьютера позже, после того как будет предоставлено достаточно времени для завершения записи данных. Это дает время для сохранения информации, но гарантирует, что компьютер будет перезагружен даже в случае сбоя процесса записи.

Двухступенчатый сторожевой таймер

Например, на приведенной выше диаграмме показана вероятная конфигурация двухступенчатого сторожевого таймера. Во время нормальной работы компьютер регулярно запускает Stage1 для предотвращения тайм-аута. Если компьютеру не удается запустить Stage1 (например, из-за аппаратного сбоя или ошибки программирования), Stage1 рано или поздно истечет время ожидания. Это событие запустит таймер Stage2 и одновременно уведомит компьютер (посредством немаскируемого прерывания) о неизбежности сброса. Пока не истечет время ожидания Stage2, компьютер может попытаться записать информацию о состоянии, отладочную информацию или и то, и другое. Компьютер будет перезагружен по истечении времени ожидания Этапа 2.

Обнаружение неисправности

Компьютерная система обычно проектируется так, что ее сторожевой таймер срабатывает только в том случае, если компьютер считает систему работоспособной. Компьютер определяет, работает ли система, проводя один или несколько тестов на обнаружение неисправностей, и запускает сторожевой таймер только в том случае, если все тесты пройдены. На компьютерах под управлением операционной системы и несколько процессов, одного простого теста может быть недостаточно, чтобы гарантировать нормальную работу, так как он может не выявить незаметную неисправность и, следовательно, позволить сработать сторожевому таймеру, даже если состояние неисправности существует.

Например, в случае операционной системы Linux сторожевой таймер пользовательского пространства демон может просто периодически запускать сторожевой таймер без выполнения каких-либо тестов. Пока демон работает нормально, система будет защищена от серьезных сбоев системы, таких как паника ядра. Для обнаружения менее серьезных неисправностей демон[4] может быть настроен для выполнения тестов, охватывающих доступность ресурсов (например, достаточное объем памяти и файловые ручки, разумное время ЦП), свидетельства ожидаемой активности процесса (например, запущены системные демоны, присутствуют или обновляются определенные файлы), перегрев и сетевая активность, а также могут быть запущены специфичные для системы тестовые скрипты или программы.[5]

При обнаружении неудачного теста демон сторожевого таймера Linux может попытаться выполнить программный перезапуск, который может быть предпочтительнее аппаратного сброса, поскольку файловые системы будут в безопасности. демонтированный и информация о неисправностях будет регистрироваться. Однако важно иметь страховку аппаратного таймера, поскольку перезапуск программного обеспечения может завершиться неудачно при ряде неисправностей. По сути, это двухступенчатый сторожевой таймер, при котором программный перезапуск включает первый этап, а аппаратный сброс - второй этап.

Смотрите также

Рекомендации

  1. ^ "Таймер гранаты: усиление сторожевого таймера против вредоносного мобильного кода" Фрэнка Стаджано и Росс Андерсон (2000).
  2. ^ Мерфи, Найл и Барр, Майкл. "Сторожевые таймеры". Программирование встроенных систем. Получено 18 февраля 2013.
  3. ^ а б c d Ламберсон, Джим. «Одно- и многоступенчатые сторожевые таймеры» (PDF). Sensoray. Получено 10 сентября 2013.
  4. ^ "Справочная страница Watchdog". Получено 10 сентября 2013.
  5. ^ «Linux Watchdog - Общие тесты». Получено 10 сентября 2013.

внешняя ссылка