stringtranslate.com

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

Интегральная схема сторожевого таймера (Texas Instruments TPS3823). На один вывод поступает сигнал перезапуска таймера («кик» [a] ) от компьютера; другой вывод выводит сигнал тайм-аута.

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

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

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

Приложения

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

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

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

Архитектура и эксплуатация

Перезапуск

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

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

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

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

Включение

Снимок экрана wdctl: программа, показывающая статус сторожевого таймера.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечания

  1. ^ ab Для обозначения перезапуска сторожевого таймера используются различные термины. Некоторые (например , пнуть , погладить , покормить , пощекотать ) устанавливают связь со сторожевыми собаками , тогда как другие (например , метка , пинг , сброс ) нет. В этой статье для обеспечения последовательности используется удар .
  2. ^ Тесно связанный сторожевой таймер фактически является встроенным расширением процессора и, как таковой, к нему можно получить доступ с помощью специальных инструкций машинного языка , специфичных для него.

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

  1. ^ «4.11 Двухступенчатый сторожевой таймер» . Руководство пользователя Kontron — COMe-cBTi6R. Версия документа 1.0. Контрон . 2021. Архивировано из оригинала 23 сентября 2023 г. Проверено 23 сентября 2023 г. п. 39: Сторожевой таймер (или таймер правильной работы компьютера (COP)) — это компьютерный аппаратный или программный таймер, который запускает сброс системы или другое корректирующее действие, если основная программа из-за какой-либо неисправности, например зависания, не выполняет регулярные действия. обслужить сторожевого пса (записав ему «служебный импульс», также называемый «пинать собаку», «поглаживать собаку», «кормить сторожевого пса» или «запускать сторожевого пса»). Цель состоит в том, чтобы вернуть систему из неотвечающего состояния в нормальную работу.
  2. ^ «Таймер гранаты: усиление сторожевого таймера против вредоносного мобильного кода» Фрэнк Стаджано и Росс Андерсон (2000).
  3. ^ Мерфи, Найл и Барр, Майкл (октябрь 2001 г.). «Сторожевые таймеры». Программирование встраиваемых систем . Проверено 18 февраля 2013 г.
  4. ^ abcd Ламберсон, Джим. «Одно- и многоступенчатые сторожевые таймеры» (PDF) . Сенсорэй . Проверено 10 сентября 2013 г.
  5. ^ Вайнгель, Кристер. «API драйвера Linux Watchdog» . Проверено 20 января 2021 г.
  6. ^ "Справочная страница Watchdog" . Проверено 10 сентября 2013 г.
  7. ^ Кроуфорд, Пол (5 сентября 2013 г.). «Linux Watchdog — Общие тесты». Архивировано из оригинала 14 сентября 2013 г. Проверено 10 сентября 2013 г.

дальнейшее чтение

Внешние ссылки