| watchdogd
Служба сторожевого таймера Тип файла: служба Комментарии
Функция Watchdog на самом деле представляет собой программу мониторинга, которая используется для отслеживания текущего состояния системных процессов, чтобы гарантировать, что система работает в нормальном режиме.
Когда ключевые системные потоки зависают или возникают другие нештатные ситуации, некоторые ключевые системные службы могут работать некорректно.
При слишком длительном зависании Watchdog перезапустит систему (уровень платформы), чтобы пользователи могли нормально использовать устройство.
Функции Watchdog примерно следующие:
Мониторинг того, может ли обработчик ключа системы вовремя обработать сообщение, на самом деле предназначен для определения того, не застрял ли связанный с ним поток.
Следить за тем, чтобы системная нить Binder была ненормальной и находилась в состоянии голодания.
Отслеживать ключевые системные службы, чтобы увидеть, есть ли тайм-аут взаимоблокировки или зависший вызов выполнения, и блокировка удерживается в течение длительного времени.
При ожидании истечения половины времени восстановления будет выведен файл трассировки ключевых системных процессов;
при ожидании полного таймаута будет выведена трассировка ключевых системных процессов, информация о вызове связующего, информация о стеке ядра и информация Dropbox ( data/system/dropbox).
Когда время ожидания превысит максимальное время, системный процесс будет завершен, а зигота также перезапустится;если это тест на обезьяне, вы можете продолжить ожидание в соответствии с командой, введенной в тест на обезьяне.
SystemServer#startBootstrapServices
В начале запуска системы создается Watchdog в методе startBootstrapServices и вызывается его метод запуска.
Сторожевой таймер #getInstance
Watchdog создается в одноэлементном режиме и уникален в системном процессе.
Сторожевая структура
Создавайте внутренние потоки для выполнения работы по мониторингу.
Создайте несколько HandlerCheckers, чтобы отслеживать, не зависли ли несколько потоков.
HandlerChecker, который отслеживает FgThread, представляет собой универсальный MonitorChecker, который может добавлять AMS, WMS и другие средства мониторинга.
Сторожевой таймер #start
После создания сторожевого таймера вызывается его метод start для запуска его рабочего потока и выполнения работы по мониторингу.
Метод start напрямую вызывает метод start его внутреннего потока.После запуска потока вызывается метод run сторожевого таймера. Конкретная работа выполняется в методе run.
Сторожевой таймер #init
В SystemServer#startBootstrapServices после запуска и регистрации AMS в качестве службы связывания будет вызван Watchdog#init для завершения запуска.
Метод init позволяет Watchdog хранить ссылку на AMS, чтобы облегчить вызов методов, связанных с AMS, для выполнения некоторых конкретных функций.
роме того, зарегистрируйте широковещательную рассылку ACTION_REBOOT для запуска перезагрузки.
|
|