Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

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

Лекция



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

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

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

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

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

Конструктивное исполнение

Физически сторожевой таймер может быть:

  • Самостоятельным устройством.
  • Компонентом устройства, например, микросхемой на материнской плате.
  • Частью кристалла SoC, микроконтроллера.

Когда сторожевой таймер выполнен в виде самостоятельной микросхемы, например, серии ADM690 — ADM695, он может выполнять и функции монитора напряжения питания.

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

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

Применение

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

Контрольные таймеры необходимы в удаленных автоматизированных системах, таких как этот марсоход для исследования Марса.

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

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

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

Перезапуск

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

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

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

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

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

Включение

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

Скриншот wdctlпрограммы, которая показывает статус сторожевого таймера

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вау!! 😲 Ты еще не читал? Это зря!

создано: 2024-10-29
обновлено: 2024-11-11
6



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Разработка программного обеспечения и информационных систем

Термины: Разработка программного обеспечения и информационных систем