Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Trte
Trte
UPM
Transparencias basadas en el captulo 5 del libro de A. Burns y A. Wellings Real-Time Systems and Programming Languuages, 3 edicin (2001)
Objetivos
Veremos cules son los factores que afectan a la fiabilidad de un sistema Tambin veremos algunas tcnicas para tolerar fallos de software
STRL -30/05/01
ndice
u u u u
Fiabilidad, averas y fallos Modos de fallo Prevencin y tolerancia de fallos Redundancia esttica y dinmica
Programacin con N versiones Bloques de recuperacin
u u
STRL -30/05/01
Fallos de funcionamiento
u
STRL -30/05/01
Conceptos bsicos
u
La fiabilidad (reliability) de un sistema es una medida de su conformidad con una especificacin autorizada de su comportamiento Una avera (failure) es una desviacin del comportamiento de un sistema respecto de su especificacin Las averas se manifiestan en el comportamiento externo del sistema, pero son el resultado de errores (errors) internos Las causas mecnicas o algortmicas de los errores se llaman fallos (faults)
STRL -30/05/01
Fallos encadenados
u
Los fallos pueden ser consecuencia de averas en los componentes del sistema (que son tambin sistemas)
avera avera
fallo fallo
error error
avera avera
fallo fallo
STRL -30/05/01
Tipos de fallos
u
Fallos transitorios
desaparecen solos al cabo de un tiempo ejemplo: interferencias en comunicaciones
Fallos permanentes
permanecen hasta que se reparan ejemplo: roturas de hardware, errores de diseo de software
Fallos intermitentes
fallos transitorios que ocurren de vez en cuando ejemplo: calentamiento de un componente de hardware
Debe impedirse que los fallos de todos estos tipos causen averas
STRL -30/05/01 2001 Juan Antonio de la Puente 6
nunca se avera
avera
valor
tiempo
arbitrario
error de intervalo
error de valor
pronto
nunca (omisin)
avera incontrolada
avera silenciosa
parada segura
avera controlada
STRL -30/05/01
Tolerancia de fallos
Se trata de conseguir que el sistema contine funcionando aunque se produzcan fallos
En ambos casos el objetivo es desarrollar sistemas con tipos de averas bien definidos
STRL -30/05/01
Prevencin de fallos
u
Eliminacin de fallos
Consiste en encontrar y eliminar los fallos que se producen en el sistema una vez construido
STRL -30/05/01
Hardware
Utilizacin de componentes fiables Tcnicas rigurosas de montaje de subsistemas Apantallamiento de hardware
Software
Especificacin de requisitos rigurosa o formal Mtodos de diseo comprobados Lenguajes con abstraccin de datos y modularidad Utilizacin de entornos de desarrollo con computador (CASE) adecuados para gestionar los componentes
STRL -30/05/01
10
Comprobaciones
Revisiones de diseo Verificacin de programas Inspeccin de cdigo
Pruebas (tests)
Son necesarias, pero tienen problemas:
no pueden ser nunca exhaustivas slo sirven para mostrar que hay errores, no que no los hay a menudo es imposible reproducir las condiciones reales los errores de especificacin no se detectan
STRL -30/05/01
11
STRL -30/05/01
12
STRL -30/05/01
13
funcionalidad funcionalidad mnima para control mnima para control de trfico bsico de trfico bsico
funcionalidad funcionalidad de emergencia de emergencia (slo separacin (slo separacin entre aviones )) entre aviones
sistema de reserva sistema de reserva para fallos para fallos catastrficos catastrficos
STRL -30/05/01
14
Redundancia
u
La tolerancia de fallos se basa en la redundancia Se utilizan componentes adicionales para detectar los fallos y recuperar el comportamiento correcto Esto aumenta la complejidad del sistema y puede introducir fallos adicionales Es mejor separar los componentes tolerantes del resto del sistema
STRL -30/05/01
15
Redundancia en hardware
u
Redundancia esttica
Los componentes redundantes estn siempre activos Se utilizan para enmascarar los fallos Ejemplo:
Redundancia modular triple ( N), TMR/NMR
Redundancia dinmica
Los componentes redundantes se activan cuando se detecta un fallo Se basa en la deteccin y posterior recuperacin de los fallos Ejemplos:
sumas de comprobacin bits de paridad
STRL -30/05/01
16
Redundancia dinmica
Dos etapas: deteccin y recuperacin de fallos Bloques de recuperacin
Proporcionan recuperacin hacia atrs
Excepciones
Proporcionan recuperacin hacia adelante
STRL -30/05/01
17
Diversidad de diseo
N programas desarrollados independientemente con la misma especificacin sin interacciones entre los equipos de desarrollo
Ejecucin concurrente
proceso coordinador (driver)
intercambia datos con los procesos que ejecutan las versiones
todos los programas tienen las mismas entradas las salidas se comparan si hay discrepancia se realiza una votacin
STRL -30/05/01
18
versin 1
versin 2
versin 3
STRL -30/05/01
19
Comparacin consistente
X1
X2
X3
u u
La comparacin de valores reales o texto no es exacta Cada versin produce un resultado correcto, pero diferente de las otras No se arregla comparando con x0+, y0+
V1
V2
V3
STRL -30/05/01
20
Problemas
u
Desarrollo independiente
No debe haber interaccin entre los equipos No est claro que distintos programadores cometan errores independientes
Presupuesto suficiente
Los costes de desarrollo se multiplican u sera mejor emplearlos en mejorar una versin nica? El mantenimiento es tambin ms costoso u
STRL -30/05/01
3. Recuperacin de errores
llevar el sistema a un estado correcto, desde el que pueda seguir funcionando (tal vez con funcionalidad parcial)
4. Reparacin de fallos
Aunque el sistema funcione, el fallo puede persistir y hay que repararlo
STRL -30/05/01
22
Deteccin de errores
u
STRL -30/05/01
23
Es importante confinar los daos causados por un fallo a una parte limitada del sistema (firewalling) Se trata de estructurar el sistema de forma que se minimice el dao causado por los componentes defectuosos (compartimentos estancos, firewalls) Tcnicas
Descomposicin modular: confinamiento esttico Acciones atmicas: confinamiento dinmico
STRL -30/05/01
24
Recuperacin de errores
u u u
Es la etapa ms importante Se trata de situar el sistema en un estado correcto desde el que pueda seguir funcionando Hay dos formas de llevarla a cabo:
Recuperacin directa (hacia adelante) (FER)
Se avanza desde un estado errneo haciendo correcciones sobre partes del estado
STRL -30/05/01
25
Recuperacin directa
u u u u
La forma de hacerla es especfica para cada sistema Depende de una prediccin correcta de los posibles fallos y de su situacin Hay que dejar tambin en un estado seguro el sistema controlado Ejemplos
punteros redundantes en estructuras de datos cdigos autocorrectores
STRL -30/05/01
26
Recuperacin inversa
u
Consiste en retroceder a un estado anterior correcto y ejecutar un segmento de programa alternativo (con otro algoritmo)
El punto al que se retrocede se llama punto de recuperacin (recovery point) La accin de guardar el estado se llama chekpointing
u u
STRL -30/05/01
27
Efecto domin
u
T2 R21 R22
STRL -30/05/01
Reparacin de fallos
u u
La reparacin automtica es difcil y depende del sistema concreto Hay dos etapas
Localizacin del fallo
Se pueden utilizar tcnicas de deteccin de errores
STRL -30/05/01
29
Bloques de recuperacin
u u
Es una tcnica de recuperacin inversa integrada en el lenguaje de programacin Un bloque de recuperacin es un bloque tal que
su entrada es un punto de recuperacin a su salida se efecta una prueba de aceptacin
sirve para comprobar si el mdulo primario del bloque termina en un estado correcto
si vuelve a fallar, se siguen intentando alternativas cuando no quedan ms, el bloque falla y hay que intentar al recuperacin en un nivel ms alto
STRL -30/05/01
30
Esquema de recuperacin
ms no
ejecutar alternativa
test
STRL -30/05/01
31
Sintaxis
ensure <condicin de aceptacin> by <mdulo primario> else by <mdulo alternativo> else by <mdulo alternativo> ... else by <mdulo alternativo> else error;
Puede haber bloques anidados si falla el bloque interior, se restaura el punto de recuperacin del bloque exterior
STRL -30/05/01
32
u u u u
El mtodo explcito es ms rpido, pero no es adecuado para algunos tipos de ecuaciones El mtodo implcito sirve para todas las ecuaciones, pero es ms lento Este esquema sirve para todos los casos Puede tolerar fallos de programacin
STRL -30/05/01
33
Prueba de aceptacin
u u u u
Es fundamental para el buen funcionamiento de los bloques de recuperacin Hay que buscar un compromiso entre deteccin exhaustiva de fallos y eficiencia de ejecucin Se trata de asegurar que el resultado es aceptable, no forzosamente correcto Pero hay que tener cuidado de que no queden errores residuales sin detectar
STRL -30/05/01
34
Comparacin
N versiones u Redundancia esttica u Diseo
algoritmos alternativos proceso coordinador
u
Ejecucin
mltiples recursos
Ejecucin
puntos de recuperacin
Deteccin de errores
votacin
Deteccin de errores
prueba de aceptacin
STRL -30/05/01
35
u u u
Una excepcin es una manifestacin de un cierto tipo de error Cuando se produce un error, se eleva (raise, signal, throw) la excepcin correspondiente en el contexto donde se ha invocado la operacin errnea Esto permite manejar la excepcin en este contexto Se trata de un mecanismo de recuperacin directa de errores (no hay vuelta atrs) Pero se puede utilizar para realizar recuperacin inversa tambin
STRL -30/05/01
36
u u u
Tratar situaciones anormales en el entorno de ejecucin Tolerar fallos de diseo de software Facilitar un mecanismo generalizado de deteccin y correccin de errores
STRL -30/05/01
37
actividad normal
manejadores de excepciones
peticin de servicio
respuesta normal
excepcin interna
excepcin de interfaz
excepcin de avera
STRL -30/05/01
38
Seguridad y fiabilidad
u
Un sistema es seguro si no se pueden producir situaciones que puedan causar muertes, heridas, enfermedades, ni daos en los equipos ni en el ambiente
Un accidente (mishap) es un suceso (o una serie de sucesos) imprevisto que puede producir daos inadmisibles
u u
La fiabilidad es la probabilidad de que un sistema se comporte de acuerdo con su especificacin La seguridad es la probabilidad de que no ocurra ningn suceso que provoque un accidente Seguridad y fiabilidad pueden estar en conflicto!
STRL -30/05/01
39
Confiabilidad
u
La confiabilidad (dependability) es una propiedad de los sistemas que permite confiar justificadamente en el servicio que proporcionan Tiene varios aspectos
confiabilidad
disponibilidad de utilizacin disponibilidad servicio disponible continuamente fiabilidad no hay situaciones catastrficas no hay fugas no hay aptitud para de informacin alteraciones reparaciones no autorizadas de informacin y cambios mantenibilidad
STRL -30/05/01
40
Terminologa
Disponibilidad Fiabilidad Seguridad Confidencialidad Integridad Mantenibilidad Prevencin de fallos Tolerancia de fallos Reparacin de fallos Prediccin de fallos Fallos Errores Averas
Atributos
Confiabilidad
Medios
Daos
STRL -30/05/01
41
Resumen
u u u
La fiabilidad de un sistema es una medida de su conformidad con una especificacin autorizada de su comportamiento La fiabilidad de un sistema se puede aumentar mediante tcnicas de prevencin o de tolerancia de fallos La tolerancia de fallos se basa en la redundancia
esttica (por ejemplo, N versiones) dinmica (por ejemplo, bloques de recuperacin)
u u
Las excepciones proporcionan redundancia dinmica con recuperacin directa La confiabilidad de un sistema es una propiedad ms amplia que la fiabilidad
STRL -30/05/01
42