Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Интегральная схема сторожевого таймера (Texas Instruments TPS3823). Один вывод получает сигнал перезапуска таймера ("удар" [a] ) от компьютера; другой вывод выводит сигнал тайм-аута.

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

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

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

Приложения [ править ]

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

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

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

Архитектура и работа [ править ]

Перезагрузка [ править ]

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

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

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

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

Включение [ редактировать ]

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

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

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

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

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

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

Временные интервалы [ править ]

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

Корректирующие действия [ править ]

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

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

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

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

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

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

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

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

См. Также [ править ]

  • Таймер потери команды Сбросить связанный метод, чтобы космический корабль оставался управляемым
  • Безопасный режим (космический корабль)
  • Программирование с учетом иммунитета
  • Выключатель мертвеца
  • Heartbeat (вычисления)
  • Keepalive

Заметки [ править ]

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

Ссылки [ править ]

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

Внешние ссылки [ править ]

  • Создание отличного сторожевого пса - статья Джека Гэнссла