stringtranslate.com

Temporizador de vigilancia

Un circuito integrado de temporizador de vigilancia (Texas Instruments TPS3823). Un pin recibe la señal de reinicio del temporizador ("kick" [a] ) de la computadora; otro pin emite la señal de tiempo de espera.

Un temporizador de vigilancia ( WDT , o simplemente un perro guardián ), a veces llamado temporizador de computadora que funciona correctamente ( temporizador COP ), [1] 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 del hardware y para evitar que el software erróneo o malévolo interrumpa el funcionamiento del sistema.

Durante el funcionamiento normal, la computadora reinicia periódicamente el temporizador de vigilancia para evitar que transcurra o se agote el tiempo. Si, debido a una falla de hardware o un error de programa, la computadora no puede reiniciar el mecanismo de vigilancia, el temporizador transcurrirá 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 y solicitar un reinicio de la computadora .

Los microcontroladores suelen incluir un dispositivo de vigilancia integrado en el chip. En otras computadoras, el mecanismo de vigilancia 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 son esenciales en sistemas remotos y automatizados como este Mars Exploration Rover.

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 ante fallas de manera oportuna. En tales sistemas, la computadora no puede depender de un humano para solicitar un reinicio si se bloquea ; 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 forma autónoma de las fallas. En 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 pueda reaccionar, incluso si se puede acceder fácilmente a la computadora. En casos como estos suele utilizarse 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 utilizar un temporizador de vigilancia cuando se ejecuta código que no es de confianza en un entorno limitado , para limitar el tiempo de CPU disponible para el código y así evitar algunos tipos de ataques de denegación de servicio . [2] En los sistemas operativos en tiempo real , se puede utilizar un temporizador de vigilancia para monitorear una tarea en la que el tiempo es crítico para garantizar que se complete dentro del tiempo máximo asignado y, si no lo hace, para finalizar la tarea e informar la falla.

Arquitectura y funcionamiento

Reiniciando

Algunos temporizadores de vigilancia solo permiten patadas durante un período de tiempo. Las patadas que ocurren fuera de la ventana no tienen efecto en el cronómetro y pueden ser tratadas como faltas.

El acto de reiniciar un temporizador de vigilancia se conoce comúnmente como patear el temporizador de vigilancia. [3] [4] El kicking generalmente se realiza escribiendo en un puerto de control de vigilancia o configurando un bit 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 activará el mecanismo de vigilancia interactuando con el controlador del dispositivo de vigilancia, normalmente escribiendo un carácter cero en /dev/watchdog o llamando a KEEPALIVE ioctl . [5] El controlador del dispositivo, que sirve para abstraer el hardware de vigilancia de los programas del espacio del 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 un período de tiempo específico. El tiempo de la ventana suele ser relativo a la patada anterior o, si el perro guardián aún no ha sido expulsado, al momento en que se habilitó el perro guardián. La ventana comienza después de un retraso después del kick anterior y finaliza después de un retraso adicional. Si la computadora intenta activar el mecanismo de vigilancia antes o después de la ventana, el mecanismo de vigilancia no se reiniciará y, en algunas implementaciones, esto se tratará como una falla y desencadenará una acción correctiva.

Habilitando

Captura de pantalla de wdctl, un programa que muestra el estado del perro guardián

Se dice que un temporizador de vigilancia está habilitado cuando está en funcionamiento y deshabilitado cuando está inactivo. Al encenderse, un mecanismo de vigilancia 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 generarse automáticamente mediante hardware o puede generarse bajo control de software.

Cuando se genera automáticamente, la señal de habilitación generalmente se deriva de la señal de reinicio de la computadora. En algunos sistemas, la señal de reinicio se utiliza directamente para habilitar el mecanismo de vigilancia. En otros, la señal de reinicio se retrasa para que el mecanismo de vigilancia se habilite en algún momento posterior al reinicio. Este retraso permite que la computadora arranque antes de que se habilite el mecanismo de vigilancia. Sin esta demora, el mecanismo de vigilancia expiraría e invocaría un reinicio posterior antes de que la computadora pudiera ejecutar su software de aplicación (el software que activa el mecanismo de vigilancia) y el sistema quedaría atascado en un ciclo interminable de reinicios incompletos.

Vigilancia de una sola 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 única etapa de temporizador que, cuando se agota el tiempo de espera, normalmente restablecerá la CPU:

Diagrama de bloques de un temporizador de vigilancia simple de una sola etapa. El reloj común es característico de los microcontroladores de vigilancia básicos.

Perro guardián de varias etapas

A veces se conectan en cascada dos o más temporizadores para formar un temporizador de vigilancia de varias etapas , donde cada temporizador se denomina etapa de temporizador o simplemente etapa . Por ejemplo, el siguiente diagrama de bloques muestra un mecanismo de vigilancia de tres etapas. En un perro guardián de múltiples etapas, el procesador solo activa la primera etapa. Cuando se agota 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 cada etapa posterior finaliza, se desencadena una acción correctiva y comienza la siguiente etapa. Al finalizar 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 desencadenarán secuencialmente una serie de acciones correctivas, y la etapa final desencadenará un reinicio de la computadora. [4]

Un temporizador de vigilancia electrónico de tres etapas.

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 con valores arbitrarios. Normalmente, los intervalos de tiempo de vigilancia oscilan entre diez milisegundos y un minuto o más. En un mecanismo de vigilancia 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 acciones correctivas, incluida la interrupción enmascarable , la interrupción no enmascarable , el restablecimiento de hardware , la activación del estado a prueba de fallas , el ciclo de encendido o combinaciones de estos. Dependiendo de su arquitectura, el tipo de acción o acciones correctivas que un perro guardián puede desencadenar puede ser fijo o programable. Algunas computadoras (p. ej., compatibles con PC) requieren una señal pulsada para invocar un reinicio de hardware. En tales casos, el mecanismo de vigilancia normalmente activa un reinicio del hardware activando un generador de impulsos interno o externo, que a su vez crea los impulsos de reinicio necesarios. [4]

En sistemas integrados y sistemas de control, los temporizadores de vigilancia se utilizan a menudo para activar circuitos a prueba de fallos . Cuando se activa, el circuito a prueba de fallas fuerza todas las salidas de control a estados seguros (p. ej., apaga motores, calentadores y altos voltajes ) para evitar lesiones y daños al equipo mientras persiste la falla. En un mecanismo de vigilancia de dos etapas, el primer temporizador se utiliza a menudo para activar salidas a prueba de fallos 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 cronómetro.

Los temporizadores de vigilancia a veces se utilizan para activar el registro de información del estado del sistema, que puede ser útil durante la recuperación de fallas [4] , o información de depuración (que puede ser útil para determinar la causa de la falla) en un medio persistente . En tales casos, normalmente se utiliza un segundo temporizador, que se inicia cuando transcurre el primero, 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 guardar la información, pero garantiza que la computadora se reiniciará incluso si falla el proceso de grabación.

Temporizador de vigilancia de dos etapas

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 puede iniciar Stage1 (por ejemplo, debido a una falla de hardware o un error de programación), Stage1 eventualmente expirará. 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 ambas. Como último recurso, la computadora se reiniciará cuando se agote el tiempo de espera de Stage2.

Detección de fallas

Un temporizador de vigilancia proporciona detección automática de fallos de funcionamiento catastróficos que impiden que la computadora lo active. Sin embargo, las computadoras a menudo tienen otros tipos de fallas menos graves que no interfieren con las patadas, pero que aún requieren supervisión de un organismo guardián. Para respaldarlos, un sistema informático generalmente está diseñado de modo que su temporizador de vigilancia se active solo si la computadora considera que el sistema funciona. La computadora determina si el sistema funciona mediante la realización de una o más pruebas de detección de fallas y activará el dispositivo de vigilancia solo si todas las pruebas han pasado. [ cita necesaria ]

En computadoras que ejecutan un sistema operativo y múltiples procesos , una prueba única y simple puede ser insuficiente para garantizar el funcionamiento normal, ya que podría no detectar una condición de falla sutil y, por lo tanto, permitir que se active el mecanismo de vigilancia incluso aunque exista una condición de falla. Por ejemplo, en el caso del sistema operativo Linux, un demonio de vigilancia del espacio de usuario puede simplemente expulsar el mecanismo de vigilancia periódicamente sin realizar ninguna prueba. Mientras el demonio se ejecute normalmente, el sistema estará protegido contra fallas graves del sistema, como un pánico en el kernel . Para detectar fallas menos graves, el demonio [6] se puede configurar para realizar pruebas que cubran la disponibilidad de recursos (por ejemplo, suficiente memoria y identificadores de archivos , tiempo de CPU razonable), evidencia de la actividad esperada del proceso (por ejemplo, demonios del sistema en ejecución, archivos específicos en ejecución). presente o actualizado), sobrecalentamiento y actividad de la red, y también se pueden ejecutar scripts o programas de prueba específicos del sistema. [7]

Al descubrir una prueba fallida, la computadora puede intentar realizar una secuencia de acciones correctivas bajo el control del software, que culmina con un reinicio iniciado por el software. Si el software no logra iniciar 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 primera e intermedia del temporizador y el hardware restablece la etapa final. En un sistema Linux, por ejemplo, el demonio de vigilancia podría intentar realizar un reinicio iniciado por software, lo 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 la protección proporcionada por un temporizador de hardware, ya que un reinicio del software puede fallar bajo una serie de condiciones de falla. [ cita necesaria ]

Ver también

Notas

  1. ^ ab 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 , marcar , hacer ping , restablecer ) no. Este artículo utiliza kick para mantener la coherencia.
  2. ^ Un temporizador de vigilancia estrechamente acoplado es efectivamente una extensión incorporada del procesador y, como tal, se puede acceder a él mediante instrucciones especiales en lenguaje de máquina que son específicas para él.

Referencias

  1. ^ "4.11 Temporizador de vigilancia de dos etapas". Guía del usuario de Kontron - COMe-cBTi6R. Revisión del documento 1.0. Kontrón . 2021. Archivado desde el original el 23 de septiembre de 2023 . Consultado el 23 de septiembre de 2023 . pag. 39: Un temporizador de vigilancia (o temporizador de computadora que funciona correctamente (COP)) es un temporizador de hardware o software de computadora que activa un reinicio del sistema u otra acción correctiva si el programa principal, debido a alguna condición de falla, como un bloqueo, descuida regularmente dar servicio al perro guardián (escribiéndole un "pulso de servicio", también conocido como "patear al perro", "acariciar al perro", "alimentar al perro guardián" o "activar el perro guardián"). La intención es hacer que el sistema vuelva del estado de no respuesta al funcionamiento normal.
  2. ^ "El temporizador de granadas: fortalecimiento del temporizador de vigilancia contra códigos móviles maliciosos" por Frank Stajano y Ross Anderson (2000).
  3. ^ Murphy, Niall y Barr, Michael (octubre de 2001). "Temporizadores de vigilancia". Programación de sistemas integrados . Consultado el 18 de febrero de 2013 .
  4. ^ abcd Lamberson, Jim. "Temporizadores de vigilancia de una y varias etapas" (PDF) . Sensoray . Consultado el 10 de septiembre de 2013 .
  5. ^ Weingel, Christer. "La API del controlador Linux Watchdog" . Consultado el 20 de enero de 2021 .
  6. ^ "Página de manual de vigilancia" . Consultado el 10 de septiembre de 2013 .
  7. ^ Crawford, Paul (5 de septiembre de 2013). "Linux Watchdog - Pruebas generales". Archivado desde el original el 14 de septiembre de 2013 . Consultado el 10 de septiembre de 2013 .

Otras lecturas

enlaces externos