Esquema de Bloques de Recuperación
The recovery block scheme is a software fault-tolerance technique based on design diversity and backward error recovery. It structures a program as a series of blocks, each with a primary module, an acceptance test, and one or more alternate modules. If the primary module’s output fails the acceptance test, the system state is restored, and an alternate module is executed.
El concepto de bloque de recuperación, introducido por Brian Randell, es un enfoque estructurado para lograr la tolerancia a fallos del software. Se basa en el principio de proporcionar módulos de software redundantes, conocidos como alternativas, para una operación determinada, junto con un mecanismo para verificar la corrección del resultado de la operación. Los componentes clave son: la prueba de aceptación (AT), la alternativa primaria (P) y una secuencia de alternativas secundarias (Q1, Q2, ...). Antes de ejecutar la alternativa primaria, el sistema guarda un punto de control de su estado actual. Una vez completada P, se ejecuta la prueba de aceptación sobre la salida. La AT es una pieza lógica crucial que verifica que el resultado sea aceptable; no necesita demostrar una corrección absoluta, sino que el resultado sea razonable y consistente.
Si el resultado supera la prueba de aceptación, el punto de control se descarta y el programa continúa. Sin embargo, si la prueba de aceptación falla, o si la alternativa principal no se ejecuta (por ejemplo, debido a un error de tiempo de ejecución), el sistema realiza una reversión. Restaura el estado desde el punto de control guardado y ejecuta la siguiente alternativa de la secuencia (Q1). La salida de Q1 se somete entonces a la misma prueba de aceptación. Este proceso continúa hasta que una alternativa produce un resultado que supera la prueba, o se agotan todas las alternativas, momento en el que se declara un fallo a nivel de sistema.
La eficacia de los bloques de recuperación depende de la diversidad de las alternativas. Los módulos principal y secundario deben diseñarse e implementarse de forma independiente, idealmente por equipos diferentes que utilicen algoritmos o lenguajes de programación diferentes. Esto minimiza la posibilidad de que exista un fallo de diseño común (un error) en todas las alternativas, lo que provocaría que todas fallaran la prueba de aceptación por igual. La prueba de aceptación en sí misma constituye un punto único de fallo y debe ser más sencilla y fiable que los módulos que prueba. En comparación con la programación de N versiones, otra técnica de tolerancia a fallos de software, los bloques de recuperación pueden ser más eficientes, ya que solo ejecutan un módulo a la vez, pero introducen latencia debido a la posibilidad de reversión y reejecución.
UNESCO Nomenclature: 1203
- Informática
Uso
Nicho/Especialización
Precursores
- Conceptos de manejo de excepciones en lenguajes de programación
- Mecanismos de transacciones y reversiones de bases de datos
- Trabajos iniciales sobre la verificación y corrección del programa
- Principios generales de redundancia de la ingeniería de hardware
Aplicaciones
- software crítico para la seguridad en sistemas de señalización ferroviaria
- sistemas de protección de reactores nucleares
- Aplicaciones aeroespaciales donde una falla de software es catastrófica
- sistemas operativos experimentales tolerantes a fallos
Ideas para posibles innovaciones
Debido al bloqueo del tráfico generado por bots, que actualmente supera los 40.000 al día, este contenido está reservado para los miembros de la comunidad.
> Iniciar sesión < o > Registrarse < (100% gratis) para acceder a esto, al igual que a todo el demás contenido y herramientas restringidos.
Relacionado con: bloques de recuperación, tolerancia a fallos de software, diversidad de diseño, prueba de aceptación, recuperación de errores hacia atrás, puntos de control, Brian Randell, software crítico para la seguridad, módulos redundantes, programación de versiones N.