Un temporizador de vigilancia (a veces llamado computadora que funciona correctamente o temporizador de COP , o simplemente vigilancia ) es un temporizador electrónico o de software que se utiliza para detectar y recuperarse de fallas de funcionamiento de la computadora . Los temporizadores de vigilancia se utilizan ampliamente en las computadoras para facilitar la corrección automática de fallas temporales de hardware y para evitar que el software errante o malévolo interrumpa el funcionamiento del sistema.
Durante el funcionamiento normal, la computadora reinicia regularmente el temporizador de vigilancia para evitar que se agote o "se agote el tiempo". Si, debido a una falla de hardware o un error del programa, la computadora no reinicia el perro guardián, el temporizador pasará y generará una señal de tiempo de espera. La señal de tiempo de espera se utiliza para iniciar acciones correctivas. Las acciones correctivas generalmente incluyen colocar la computadora y el hardware asociado en un estado seguro e invocar un reinicio de la computadora.
Los microcontroladores a menudo incluyen un perro guardián integrado en el chip. En otras computadoras, el perro guardián puede residir en un chip cercano que se conecta directamente a la CPU , o puede estar ubicado en una tarjeta de expansión externa en el chasis de la computadora.
Aplicaciones
Los temporizadores de vigilancia se encuentran comúnmente en sistemas integrados y otros equipos controlados por computadora donde los humanos no pueden acceder fácilmente al equipo o no podrían reaccionar a fallas de manera oportuna. En tales sistemas, la computadora no puede depender de un humano para invocar un reinicio si se cuelga ; debe ser autosuficiente. Por ejemplo, los sistemas integrados remotos, como las sondas espaciales, no son físicamente accesibles para los operadores humanos; estos podrían quedar permanentemente desactivados si no pudieran recuperarse de manera autónoma de las fallas. En los robots y otras máquinas automatizadas, una falla en la computadora de control podría causar daños al equipo o lesiones antes de que un humano pudiera reaccionar, incluso si se puede acceder fácilmente a la computadora. En casos como estos, se suele emplear un temporizador de vigilancia.
Los temporizadores de vigilancia también se utilizan para monitorear y limitar el tiempo de ejecución del software en una computadora que funciona normalmente. Por ejemplo, se puede usar un temporizador de vigilancia cuando se ejecuta código que no es de confianza en una caja de arena , para limitar el tiempo de CPU disponible para el código y así prevenir algunos tipos de ataques de denegación de servicio . [1] En los sistemas operativos en tiempo real , se puede usar un temporizador de vigilancia para monitorear una tarea de tiempo crítico para asegurarse de que se complete dentro del tiempo máximo asignado y, si no lo hace, para terminar la tarea e informar la falla.
Arquitectura y funcionamiento
Reiniciando
El acto de reiniciar un temporizador de perro guardián se conoce comúnmente como patear [a] al perro guardián. [2] [3] La patada se realiza típicamente escribiendo en un puerto de control de vigilancia o estableciendo un bit en particular en un registro . Alternativamente, algunos temporizadores de vigilancia [b] estrechamente acoplados se activan mediante la ejecución de una instrucción especial en lenguaje de máquina . Un ejemplo de esto es la instrucción CLRWDT (clear watchdog timer) que se encuentra en el conjunto de instrucciones de algunos microcontroladores PIC .
En las computadoras que ejecutan sistemas operativos , los reinicios de vigilancia generalmente se invocan a través de un controlador de dispositivo . Por ejemplo, en el sistema operativo Linux , un programa de espacio de usuario pateará al perro guardián al interactuar con el controlador del dispositivo guardián, generalmente escribiendo un carácter cero en / dev / watchdog o llamando a un ioctl KEEPALIVE . [4] El controlador de dispositivo, que sirve para abstraer el hardware de vigilancia de los programas de espacio de usuario, también se puede utilizar para configurar el período de tiempo de espera e iniciar y detener el temporizador.
Algunos temporizadores de vigilancia solo permitirán patadas durante una ventana de tiempo específica. La temporización de la ventana suele ser relativa a la patada anterior o, si el perro guardián aún no ha sido pateado, al momento en que se habilitó el perro guardián. La ventana comienza después de un retraso después de la patada anterior y termina después de un retraso adicional. Si la computadora intenta expulsar al perro guardián antes o después de la ventana, el perro guardián no se reiniciará y, en algunas implementaciones, esto se tratará como una falla y activará una acción correctiva.
Habilitar
Se dice que un temporizador de vigilancia está habilitado cuando está en funcionamiento y deshabilitado cuando está inactivo. Tras el encendido, un perro guardián puede estar habilitado incondicionalmente o puede estar inicialmente deshabilitado y requerir una señal externa para habilitarlo. En el último caso, la señal de habilitación puede ser generada automáticamente por hardware o puede generarse bajo control de software.
Cuando se genera automáticamente, la señal de habilitación se deriva típicamente de la señal de reinicio de la computadora. En algunos sistemas, la señal de reinicio se usa directamente para habilitar el perro guardián. En otros, la señal de reinicio se retrasa para que el perro guardián se habilite en algún momento posterior después del reinicio. Este retraso permite que la computadora arranque antes de que se habilite el perro guardián. Sin este retraso, el perro guardián agotaría el tiempo de espera e invocaría un reinicio posterior antes de que la computadora pueda ejecutar su software de aplicación, el software que activa el perro guardián, y el sistema se atascaría en un ciclo interminable de reinicios incompletos.
Perro guardián de una etapa
Los temporizadores de vigilancia vienen en muchas configuraciones y muchos permiten modificar sus configuraciones. Por ejemplo, el perro guardián y la CPU pueden compartir una señal de reloj común como se muestra en el diagrama de bloques a continuación, o pueden tener señales de reloj independientes. Un temporizador de vigilancia básico tiene una sola etapa de temporizador que, cuando se agota el tiempo de espera, normalmente reinicia la CPU:
Perro guardián de varias etapas
A veces, dos o más temporizadores se conectan en cascada para formar un temporizador de vigilancia de múltiples etapas , donde cada temporizador se denomina etapa del temporizador , o simplemente una etapa . Por ejemplo, el diagrama de bloques a continuación muestra un perro guardián de tres etapas. En un perro guardián de varias etapas, el procesador solo activa la primera etapa. Tras el tiempo de espera de la primera etapa, se inicia una acción correctiva y se inicia la siguiente etapa de la cascada. A medida que se agota el tiempo de espera de cada etapa posterior, se activa una acción correctiva y se inicia la etapa siguiente. Tras el tiempo de espera de la etapa final, se inicia una acción correctiva, pero no se inicia ninguna otra etapa porque se ha alcanzado el final de la cascada. Por lo general, los temporizadores de vigilancia de una sola etapa se utilizan para simplemente reiniciar la computadora, mientras que los temporizadores de vigilancia de múltiples etapas activarán secuencialmente una serie de acciones correctivas, y la etapa final desencadenará el reinicio de la computadora. [3]
Intervalos de tiempo
Los temporizadores de vigilancia pueden tener intervalos de tiempo fijos o programables. Algunos temporizadores de vigilancia permiten programar el intervalo de tiempo seleccionando entre unos pocos valores discretos seleccionables. En otros, el intervalo se puede programar en valores arbitrarios. Normalmente, los intervalos de tiempo del perro guardián van desde diez milisegundos hasta un minuto o más. En un perro guardián de varias etapas, cada temporizador puede tener su propio intervalo de tiempo único.
Acciones correctivas
Un temporizador de vigilancia puede iniciar cualquiera de varios tipos de acción correctiva, incluida la interrupción enmascarable , la interrupción no enmascarable , el reinicio del hardware , la activación del estado a prueba de fallas , el ciclo de energía o combinaciones de estos. Dependiendo de su arquitectura, el tipo de acción o acciones correctivas que puede desencadenar un perro guardián puede ser fijo o programable. Algunas computadoras (por ejemplo, compatibles con PC) requieren una señal pulsada para invocar un reinicio del hardware. En tales casos, el perro guardián generalmente activa un reinicio de hardware activando un generador de pulsos interno o externo, que a su vez crea los pulsos de reinicio requeridos. [3]
En sistemas integrados y sistemas de control, los temporizadores de vigilancia se utilizan a menudo para activar circuitos a prueba de fallas . Cuando se activa, el circuito a prueba de fallas fuerza todas las salidas de control a estados seguros (por ejemplo, apaga motores, calentadores y altos voltajes ) para evitar lesiones y daños al equipo mientras persista la falla. En un perro guardián de dos etapas, el primer temporizador se usa a menudo para activar salidas a prueba de fallas e iniciar la segunda etapa del temporizador; la segunda etapa reiniciará la computadora si la falla no se puede corregir antes de que transcurra el temporizador.
Los temporizadores de vigilancia se utilizan a veces para activar el registro de información de estado del sistema, que puede ser útil durante la recuperación de fallas [3], o información de depuración (que puede ser útil para determinar la causa de la falla) en un medio persistente . En tales casos, un segundo temporizador, que se inicia cuando transcurre el primer temporizador, generalmente se usa para reiniciar la computadora más tarde, después de dejar tiempo suficiente para que se complete la grabación de datos. Esto da tiempo para que se guarde la información, pero asegura que la computadora se reiniciará incluso si falla el proceso de grabación.
Por ejemplo, el diagrama anterior muestra una configuración probable para un temporizador de vigilancia de dos etapas. Durante el funcionamiento normal, la computadora inicia regularmente la etapa 1 para evitar un tiempo de espera. Si la computadora no inicia la etapa 1 (por ejemplo, debido a una falla de hardware o un error de programación), la etapa 1 eventualmente se agotará. Este evento iniciará el temporizador Stage2 y, simultáneamente, notificará a la computadora (mediante una interrupción no enmascarable) que un reinicio es inminente. Hasta que se agote el tiempo de espera de Stage2, la computadora puede intentar registrar información de estado, información de depuración o ambos. La computadora se reiniciará cuando se agote el tiempo de espera de Stage2.
Detección de fallas
Un temporizador de vigilancia proporciona una detección automática de fallas catastróficas que impiden que la computadora la patee. Sin embargo, las computadoras a menudo tienen otros tipos de fallas menos graves que no interfieren con las patadas, pero que aún requieren la supervisión de un perro guardián. Para admitirlos, un sistema informático generalmente está diseñado para que su temporizador de vigilancia se active solo si la computadora considera que el sistema funciona. La computadora determina si el sistema es funcional mediante la realización de una o más pruebas de detección de fallas y activará el perro guardián solo si todas las pruebas han pasado.
En computadoras que ejecutan un sistema operativo y múltiples procesos , una sola prueba simple puede ser insuficiente para garantizar el funcionamiento normal, ya que podría fallar en la detección de una condición de falla sutil y, por lo tanto, permitir que el perro guardián sea desactivado aunque exista una condición de falla. Por ejemplo, en el caso del sistema operativo Linux, un demonio guardián del espacio de usuario puede simplemente patear al perro guardián periódicamente sin realizar ninguna prueba. Siempre que el demonio se ejecute normalmente, el sistema estará protegido contra caídas graves del sistema, como un pánico del kernel . Para detectar fallas menos graves, el demonio [5] puede configurarse para realizar pruebas que cubran la disponibilidad de recursos (por ejemplo, memoria suficiente y manejadores de archivos , tiempo de CPU razonable), evidencia de la actividad esperada del proceso (por ejemplo, demonios del sistema en ejecución, archivos específicos presente o actualizado), sobrecalentamiento y actividad de la red, y también se pueden ejecutar scripts o programas de prueba específicos del sistema. [6]
Al descubrir una prueba fallida, la computadora puede intentar realizar una secuencia de acciones correctivas bajo el control del software, culminando con un reinicio iniciado por el software. Si el software no puede invocar un reinicio, el temporizador de vigilancia expirará e invocará un reinicio del hardware. En efecto, se trata de un temporizador de vigilancia de varias etapas en el que el software comprende las etapas de temporizador primera e intermedia y el hardware restablece la etapa final. En un sistema Linux, por ejemplo, el demonio de vigilancia puede intentar realizar un reinicio iniciado por software, que puede ser preferible a un reinicio del hardware, ya que los sistemas de archivos se desmontarán de forma segura y se registrará la información de fallas. Sin embargo, es esencial contar con el seguro del temporizador de hardware, ya que el reinicio del software puede fallar en una serie de condiciones de falla.
Ver también
- Temporizador de pérdida de comando Restablece un método relacionado para mantener el mando de una nave espacial
- Modo seguro (nave espacial)
- Programación consciente de la inmunidad
- Interruptor de hombre muerto
- Latido (computación)
- Mantener viva
Notas
- ^ a b Se utilizan varios términos para el acto de reiniciar un temporizador de vigilancia. Algunos (por ejemplo , patear , acariciar , alimentar , hacer cosquillas ) establecen una conexión con los perros guardianes , mientras que otros (por ejemplo , etiqueta , ping , reinicio ) no lo hacen. Este artículo usa la patada para mantener la coherencia.
- ^ Untemporizador de vigilancia estrechamente acoplado es efectivamente una extensión incorporada del procesador y, como tal, se puede acceder a él medianteinstruccionesespeciales en lenguaje de máquina que son específicas para él.
Referencias
- ^ "El temporizador de granadas: Fortalecimiento del temporizador de vigilancia contra código móvil malicioso" por Frank Stajano y Ross Anderson (2000).
- ^ Murphy, Niall y Barr, Michael. "Temporizadores de perro guardián" . Programación de sistemas embebidos . Consultado el 18 de febrero de 2013 .
- ^ a b c d Lamberson, Jim. "Temporizadores de vigilancia de una y varias etapas" (PDF) . Sensoray . Consultado el 10 de septiembre de 2013 .
- ^ Weingel, Christer. "La API del controlador de Linux Watchdog" . Consultado el 20 de enero de 2021 .
- ^ "Página del" hombre "del perro guardián" . Consultado el 10 de septiembre de 2013 .
- ^ "Linux Watchdog - Pruebas generales" . Consultado el 10 de septiembre de 2013 .
enlaces externos
- Construyendo un gran perro guardián - Artículo de Jack Ganssle