stringtranslate.com

Tolerancia a fallos

La tolerancia a fallos es la capacidad de un sistema de mantener un funcionamiento adecuado en caso de fallos o fallos en uno o más de sus componentes. Cualquier disminución en la calidad operativa es proporcional a la gravedad de la falla, a diferencia de un sistema diseñado ingenuamente en el que incluso una falla pequeña puede conducir a una falla total . La tolerancia a fallos se busca especialmente en sistemas de alta disponibilidad , de misión crítica o incluso de vida crítica . La capacidad de mantener la funcionalidad cuando partes de un sistema fallan se conoce como degradación elegante . [1]

Un diseño tolerante a fallos permite que un sistema continúe con su funcionamiento previsto, posiblemente a un nivel reducido, en lugar de fallar por completo cuando falla alguna parte del sistema . [2] El término se usa más comúnmente para describir sistemas informáticos diseñados para continuar funcionando en caso de una falla parcial, quizás con una reducción en el rendimiento o un aumento en el tiempo de respuesta . Es decir, el sistema en su conjunto no se detiene por problemas ya sea en el hardware o en el software . Los ejemplos no computacionales incluyen un vehículo de motor diseñado para seguir siendo manejable si uno de los neumáticos se pincha, o una estructura que conserva su integridad a pesar de los daños causados ​​por fatiga , corrosión , defectos de fabricación o impacto.

Para un sistema individual , la tolerancia a fallas se puede lograr anticipando condiciones excepcionales y construyendo el sistema para hacerles frente, y apuntando a la autoestabilización para que el sistema converja hacia un estado libre de errores. Sin embargo, si las consecuencias de una falla del sistema son catastróficas, o el costo de hacerlo suficientemente confiable es muy alto, una mejor solución puede ser utilizar alguna forma de duplicación. En cualquier caso, si la consecuencia de un fallo del sistema es tan catastrófica, el sistema debe poder utilizar la reversión para volver a un modo seguro. Esto es similar a la recuperación de reversión, pero puede ser una acción humana si hay humanos presentes en el bucle.

Historia

El primer ordenador tolerante a fallos conocido fue el SAPO , construido en 1951 en Checoslovaquia por Antonín Svoboda . [3] : 155  Su diseño básico eran tambores magnéticos conectados mediante relés, con un método de votación de detección de errores de memoria ( triple redundancia modular ). Se desarrollaron varias otras máquinas en esta línea, principalmente para uso militar. Finalmente, se separaron en tres categorías distintas:

  1. Máquinas que durarían mucho tiempo sin ningún mantenimiento, como las que se utilizan en las sondas espaciales y satélites de la NASA ;
  2. Computadoras que eran muy confiables pero que requerían un monitoreo constante, como las utilizadas para monitorear y controlar las plantas de energía nuclear o los experimentos de supercolisionadores ; y
  3. Computadoras con una gran cantidad de tiempo de ejecución que serían objeto de un uso intensivo, como muchas de las supercomputadoras utilizadas por las compañías de seguros para su monitoreo de probabilidades .

La mayor parte del desarrollo de la llamada computación LLNM (Long Life, No Maintenance) fue realizado por la NASA durante la década de 1960, [4] en preparación para el Proyecto Apolo y otros aspectos de investigación. La primera máquina de la NASA entró en un observatorio espacial y su segundo intento, la computadora JSTAR, se utilizó en la Voyager . Esta computadora tenía una copia de seguridad de matrices de memoria para usar métodos de recuperación de memoria y por eso se la llamó computadora de autoprueba y reparación JPL. Podría detectar sus propios errores y corregirlos o abrir módulos redundantes según sea necesario. La computadora sigue funcionando a principios de 2022. [5]

Las computadoras hiperconfiables fueron iniciadas principalmente por fabricantes de aviones , [3] : 210  compañías de energía nuclear y la industria ferroviaria en los Estados Unidos. Estas entidades necesitaban computadoras con enormes cantidades de tiempo de actividad que fallarían con la suficiente gracia durante una falla como para permitir la operación continua, mientras dependían de un monitoreo humano constante de la salida de la computadora para detectar fallas. Una vez más, IBM desarrolló la primera computadora de este tipo para la NASA para guiar los cohetes Saturno V , pero más tarde BNSF , Unisys y General Electric construyeron las suyas propias. [3] : 223 

En la década de 1970 se trabajó mucho en este campo. [6] [7] [8] Por ejemplo, F14 CADC tenía autoprueba y redundancia integradas. [9]

En general, los primeros esfuerzos por lograr diseños tolerantes a fallas se centraron principalmente en el diagnóstico interno, donde una falla indicaría que algo estaba fallando y un trabajador podría reemplazarlo. SAPO, por ejemplo, tenía un método mediante el cual los tambores de memoria defectuosos emitían un ruido antes de fallar. [10] Esfuerzos posteriores demostraron que, para ser completamente efectivo, el sistema tenía que autorrepararse y diagnosticarse, aislando una falla y luego implementando una copia de seguridad redundante mientras alertaba de la necesidad de reparación. Esto se conoce como redundancia de modelo N, donde las fallas provocan mecanismos de seguridad automáticos y una advertencia al operador, y sigue siendo la forma más común de diseño tolerante a fallas de nivel uno que se utiliza en la actualidad.

La votación fue otro método inicial, como se mencionó anteriormente, con múltiples copias de seguridad redundantes funcionando constantemente y verificando los resultados de cada uno. Por ejemplo, si cuatro componentes informaron una respuesta de 5 y un componente informó una respuesta de 6, los otros cuatro "votarían" que el quinto componente estaba defectuoso y lo sacarían de servicio. Esto se llama votación por mayoría M de N.

Históricamente, la tendencia ha sido alejarse del modelo N y acercarse a M a partir de N, ya que la complejidad de los sistemas y la dificultad de garantizar el estado transitivo de falla negativa a falla positiva no interrumpieron las operaciones.

Tandem Computers , en 1976 [11] y Stratus estuvieron entre las primeras empresas especializadas en el diseño de sistemas informáticos tolerantes a fallos para el procesamiento de transacciones en línea .

Ejemplos

"M2 Mobile Web", la interfaz web móvil original de Twitter, sirvió posteriormente como versión heredada alternativa para clientes sin soporte de JavaScript y/o navegadores incompatibles hasta diciembre de 2020.

La tolerancia a fallas de hardware a veces requiere que las piezas rotas se retiren y reemplacen con piezas nuevas mientras el sistema aún está operativo (lo que en informática se conoce como intercambio en caliente ). Un sistema de este tipo implementado con una única copia de seguridad se conoce como tolerante a un solo punto y representa la gran mayoría de los sistemas tolerantes a fallos. En tales sistemas, el tiempo medio entre fallas debe ser lo suficientemente largo para que los operadores tengan tiempo suficiente para reparar los dispositivos rotos ( tiempo medio para reparar ) antes de que la copia de seguridad también falle. Es útil que el tiempo entre fallos sea el mayor posible, pero esto no es un requisito específico en un sistema tolerante a fallos.

La tolerancia a fallos tiene un éxito notable en las aplicaciones informáticas. Tandem Computers construyó todo su negocio en este tipo de máquinas, que utilizaron tolerancia de punto único para crear sus sistemas NonStop con tiempos de actividad medidos en años.

Las arquitecturas a prueba de fallos pueden abarcar también el software informático, por ejemplo mediante la replicación de procesos .

Los formatos de datos también pueden diseñarse para degradarse con elegancia. HTML , por ejemplo, está diseñado para ser compatible con versiones posteriores , lo que permite a los navegadores web ignorar entidades HTML nuevas y no compatibles sin que el documento quede inutilizable. Además, algunos sitios, incluidas plataformas populares como Twitter (hasta diciembre de 2020), ofrecen una interfaz liviana opcional que no depende de JavaScript y tiene un diseño mínimo , para garantizar una amplia accesibilidad y alcance , como en consolas de juegos con acceso web limitado. capacidades de navegación. [12] [13]

Terminología

Un ejemplo de degradación elegante por diseño en una imagen con transparencia. Cada una de las dos imágenes superiores es el resultado de ver la imagen compuesta en un visor que reconoce la transparencia. Las dos imágenes inferiores son el resultado de un visor sin soporte para transparencia. Debido a que la máscara de transparencia (centro inferior) se descarta, solo queda la superposición (centro superior). La imagen de la izquierda ha sido diseñada para degradarse con elegancia, por lo que sigue siendo significativa sin su información de transparencia.

Un sistema altamente tolerante a fallos podría continuar con el mismo nivel de rendimiento aunque uno o más componentes hayan fallado. Por ejemplo, un edificio con un generador eléctrico de respaldo proporcionará el mismo voltaje a los enchufes de pared incluso si falla la red eléctrica.

Un sistema que está diseñado para fallar a prueba de fallas , o fallar de manera segura, o fallar suavemente , ya sea que funcione a un nivel reducido o falle por completo, lo hace de una manera que protege a las personas, la propiedad o los datos contra lesiones, daños, intrusiones o divulgación. En las computadoras, un programa puede funcionar a prueba de fallas ejecutando una salida elegante (en lugar de un bloqueo incontrolado) para evitar la corrupción de datos después de que ocurre un error. [14] Se hace una distinción similar entre "fracasar bien" y " fracasar mal ".

Un sistema diseñado para experimentar una degradación gradual o una falla suave (usado en informática, similar a "a prueba de fallas" [15] ) opera a un nivel reducido de rendimiento después de que falla algún componente. Por ejemplo, si falla la red eléctrica, un edificio puede operar la iluminación a niveles reducidos o los ascensores a velocidades reducidas. En informática, si no hay suficiente ancho de banda de red disponible para transmitir un vídeo en línea, se puede transmitir una versión de menor resolución en lugar de la versión de alta resolución. La mejora progresiva es otro ejemplo, donde las páginas web están disponibles en un formato funcional básico para navegadores web más antiguos, de pantalla pequeña o de capacidad limitada, pero en una versión mejorada para navegadores capaces de manejar tecnologías adicionales o que tienen una pantalla más grande.

En los sistemas informáticos tolerantes a fallos, los programas que se consideran robustos están diseñados para continuar funcionando a pesar de un error, una excepción o una entrada no válida, en lugar de fallar por completo. La fragilidad del software es lo opuesto a la robustez. Las redes resilientes continúan transmitiendo datos a pesar del fallo de algunos enlaces o nodos. También se espera que los edificios e infraestructuras resilientes eviten fallas totales en situaciones como terremotos, inundaciones o colisiones.

Un sistema con alta transparencia de fallas alertará a los usuarios que se ha producido una falla en un componente, incluso si continúa funcionando con pleno rendimiento, de modo que se pueda reparar la falla o anticipar una falla total inminente. [16] Del mismo modo, un componente de falla rápida está diseñado para informar en el primer punto de falla, en lugar de generar informes cuando fallan los componentes posteriores. Esto permite un diagnóstico más sencillo del problema subyacente y puede evitar un funcionamiento inadecuado en un estado averiado.

Una condición de falla única es una situación en la que un medio de protección contra un peligro está defectuoso. Si una condición de falla única resulta inevitablemente en otra condición de falla única, las dos fallas se consideran una condición de falla única. [17] Una fuente ofrece el siguiente ejemplo:

Una condición de fallo único es una condición en la que un único medio de protección contra riesgos en el equipo está defectuoso o está presente una única condición anormal externa, por ejemplo, un cortocircuito entre las partes vivas y la parte aplicada. [18]

Criterios

Normalmente, ofrecer un diseño tolerante a fallos para cada componente no es una opción. La redundancia asociada conlleva una serie de penalizaciones: aumento de peso, tamaño, consumo de energía, costo, así como tiempo para diseñar, verificar y probar. Por lo tanto, es necesario examinar una serie de opciones para determinar qué componentes deben ser tolerantes a fallas: [19]

Un ejemplo de un componente que supera todas las pruebas es el sistema de retención de ocupantes de un automóvil. Si bien normalmente no se piensa en el sistema de retención principal del ocupante, es la gravedad . Si el vehículo se vuelca o sufre fuertes fuerzas G, entonces este método principal de sujeción de ocupantes puede fallar. Sujetar a los ocupantes durante un accidente de este tipo es absolutamente fundamental para la seguridad, por lo que se supera la primera prueba. Los accidentes que provocaban la expulsión de los ocupantes eran bastante habituales antes del uso del cinturón de seguridad , por lo que se supera la segunda prueba. El coste de un método de sujeción redundante como los cinturones de seguridad es bastante bajo, tanto desde el punto de vista económico como en términos de peso y espacio, por lo que se supera la tercera prueba. Por tanto, añadir cinturones de seguridad a todos los vehículos es una excelente idea. Otros "sistemas de retención suplementarios", como los airbags , son más caros y, por tanto, superan esa prueba por un margen menor.

Otro excelente ejemplo a largo plazo de la puesta en práctica de este principio es el sistema de frenos: si bien los mecanismos de freno reales son críticos, no son particularmente propensos a fallas repentinas (más que progresivas) y, en cualquier caso, necesariamente se duplican para permitir aplicación uniforme y equilibrada de la fuerza de frenado a todas las ruedas. También sería prohibitivamente costoso duplicar aún más los componentes principales y añadirían un peso considerable. Sin embargo, los sistemas igualmente críticos para accionar los frenos bajo el control del conductor son intrínsecamente menos robustos y generalmente utilizan un cable (puede oxidarse, estirarse, atascarse, romperse) o fluido hidráulico (puede filtrarse, hervir y desarrollar burbujas, absorber agua y, por lo tanto, perder efectividad). ). Por lo tanto, en la mayoría de los automóviles modernos, el circuito de freno hidráulico del freno de pie está dividido diagonalmente para dar dos puntos de falla más pequeños, la pérdida de cualquiera de ellos solo reduce la potencia de frenado en un 50% y no causa un desequilibrio tan peligroso en la fuerza de frenado como un movimiento recto de adelante hacia atrás o de izquierda a derecha. se divide, y si el circuito hidráulico falla por completo (algo que ocurre relativamente muy raramente), hay un mecanismo de seguridad en forma de freno de estacionamiento accionado por cable que opera los frenos traseros, que de otro modo serían relativamente débiles, pero aún puede detener el vehículo de manera segura. junto con la transmisión/freno motor, siempre que las exigencias que se le imponen estén en consonancia con el flujo de tráfico normal. La combinación acumulativamente improbable de falla total del freno de pie con la necesidad de frenar bruscamente en una emergencia probablemente resultará en una colisión, pero aún así a una velocidad más baja de lo que hubiera sido el caso de otra manera.

En comparación con el freno de servicio activado por pedal, el freno de estacionamiento en sí es un elemento menos crítico y, a menos que se use como respaldo por única vez para el freno de pie, no causará un peligro inmediato si se descubre que no funciona en el momento. momento de aplicación. Por lo tanto, no incorpora ninguna redundancia per se (y normalmente utiliza un sistema de accionamiento por cable más barato, ligero pero menos resistente) y puede ser suficiente, si esto sucede en una colina, utilizar el freno de pie para mantener momentáneamente el vehículo quieto. , antes de emprender la marcha para encontrar un tramo llano en el que detenerse. Alternativamente, en pendientes poco profundas, la transmisión se puede cambiar a Estacionamiento, Marcha atrás o Primera, y se puede usar el bloqueo de la transmisión/compresión del motor para mantenerla estacionaria, ya que no es necesario que incluyan la sofisticación para detenerla primero. .

En las motocicletas, se proporciona un nivel similar de seguridad contra fallas mediante métodos más simples; En primer lugar, los sistemas de frenos delantero y trasero están completamente separados, independientemente de su método de activación (que puede ser cable, varilla o hidráulico), lo que permite que uno falle por completo sin afectar al otro. En segundo lugar, el freno trasero es relativamente fuerte en comparación con su primo automotriz, siendo un disco potente en algunos modelos deportivos, aunque la intención habitual es que el sistema delantero proporcione la gran mayoría de la fuerza de frenado; Como el peso total del vehículo es más central, el neumático trasero es generalmente más grande y tiene mejor tracción, de modo que el conductor puede inclinarse hacia atrás para poner más peso sobre él, permitiendo así aplicar más fuerza de frenado antes de que la rueda se bloquee. En máquinas utilitarias más baratas y lentas, incluso si la rueda delantera utilizara un disco hidráulico para obtener fuerza de frenado adicional y un embalaje más fácil, la trasera generalmente será un tambor primitivo, algo ineficiente, pero excepcionalmente robusto accionado por varilla, gracias a la facilidad de conectar el pedal a la rueda de esta manera y, lo que es más importante, la casi imposibilidad de que se produzca una falla catastrófica incluso si el resto de la máquina, como muchas bicicletas de bajo precio después de sus primeros años de uso, está a punto de fallar. colapso por mantenimiento descuidado.

Requisitos

Las características básicas de la tolerancia a fallos requieren:

  1. No hay un único punto de falla : si un sistema experimenta una falla, debe continuar funcionando sin interrupción durante el proceso de reparación.
  2. Aislamiento de fallas del componente defectuoso: cuando ocurre una falla, el sistema debe poder aislar la falla del componente infractor. Esto requiere la adición de mecanismos de detección de fallas dedicados que existen únicamente con el propósito de aislar fallas. La recuperación de una condición de falla requiere clasificar la falla o el componente que falla. El Instituto Nacional de Estándares y Tecnología (NIST) clasifica las fallas según la localidad, la causa, la duración y el efecto. [ ¿dónde? ] [ se necesita aclaración ]
  3. Contención de fallas para evitar la propagación de la falla: algunos mecanismos de falla pueden causar que un sistema falle al propagar la falla al resto del sistema. Un ejemplo de este tipo de falla es el "transmisor no autorizado" que puede saturar la comunicación legítima en un sistema y provocar una falla general del sistema. Se requieren cortafuegos u otros mecanismos que aíslen un transmisor no autorizado o un componente defectuoso para proteger el sistema.
  4. Disponibilidad de modos de reversión [ se necesita aclaración ]

Además, los sistemas tolerantes a fallos se caracterizan tanto por cortes de servicio planificados como por cortes de servicio no planificados. Por lo general, estos se miden a nivel de aplicación y no solo a nivel de hardware. La cifra de mérito se llama disponibilidad y se expresa en porcentaje. Por ejemplo, un sistema de cinco nueves proporcionaría estadísticamente una disponibilidad del 99,999%.

Los sistemas tolerantes a fallos suelen basarse en el concepto de redundancia.

Técnicas de tolerancia a fallos

La investigación sobre los tipos de tolerancias necesarias para los sistemas críticos implica una gran cantidad de trabajo interdisciplinario. Cuanto más complejo sea el sistema, más cuidadosamente habrá que considerar y preparar todas las posibles interacciones. Teniendo en cuenta la importancia de los sistemas de alto valor en el transporte, los servicios públicos y el ejército, el campo de temas que abordan la investigación es muy amplio: puede incluir temas tan obvios como el modelado y la confiabilidad del software, o el diseño de hardware , hasta elementos arcanos como modelos estocásticos , teoría de grafos , lógica formal o excluyente, procesamiento paralelo , transmisión remota de datos y más. [20]

Replicación

Los componentes de repuesto abordan la primera característica fundamental de la tolerancia a fallos de tres maneras:

Todas las implementaciones de RAID , matriz redundante de discos independientes , excepto RAID 0, son ejemplos de un dispositivo de almacenamiento tolerante a fallos que utiliza redundancia de datos .

Una máquina tolerante a fallas sincronizada utiliza elementos replicados que operan en paralelo. En cualquier momento, todas las replicaciones de cada elemento deben estar en el mismo estado. Se proporcionan las mismas entradas a cada replicación y se esperan los mismos resultados. Los resultados de las replicaciones se comparan mediante un circuito de votación. Una máquina con dos réplicas de cada elemento se denomina redundante modular dual (DMR). El circuito de votación sólo puede entonces detectar una discrepancia y la recuperación depende de otros métodos. Una máquina con tres réplicas de cada elemento se denomina triple modular redundante (TMR). El circuito de votación puede determinar qué replicación tiene un error cuando se observa una votación de dos a uno. En este caso, el circuito de votación puede generar el resultado correcto y descartar la versión errónea. Después de esto, se supone que el estado interno de la replicación errónea es diferente del de las otras dos, y el circuito de votación puede cambiar a un modo DMR. Este modelo se puede aplicar a cualquier número mayor de replicaciones.

Las máquinas Lockstep tolerantes a fallas se hacen más fácilmente completamente sincrónicas , con cada puerta de cada replicación realizando la misma transición de estado en el mismo borde del reloj, y los relojes de las replicaciones están exactamente en fase. Sin embargo, es posible construir sistemas sincronizados sin este requisito.

Sincronizar las replicaciones requiere que sus estados almacenados internos sean iguales. Se pueden iniciar desde un estado inicial fijo, como el estado de reinicio. Como alternativa, el estado interno de una réplica se puede copiar a otra réplica.

Una variante de DMR es la de par y repuesto . Dos elementos replicados operan en conjunto como un par, con un circuito de votación que detecta cualquier discrepancia entre sus operaciones y emite una señal que indica que hay un error. Otro par opera exactamente de la misma manera. Un circuito final selecciona la salida del par que no proclama que está en error. El par y repuesto requiere cuatro réplicas en lugar de las tres del TMR, pero se ha utilizado comercialmente.

Computación ajena a las fallas

La informática ajena a los fallos es una técnica que permite que los programas informáticos continúen ejecutándose a pesar de los errores . [21] La técnica se puede aplicar en diferentes contextos. Puede manejar lecturas de memoria no válidas devolviendo un valor fabricado al programa, [22] que a su vez hace uso del valor fabricado e ignora el valor de memoria anterior al que intentó acceder; esto es un gran contraste con los comprobadores de memoria típicos , que informar al programa del error o cancelar el programa.

El enfoque tiene costos de rendimiento: debido a que la técnica reescribe el código para insertar comprobaciones dinámicas de la validez de la dirección, el tiempo de ejecución aumentará entre un 80% y un 500%. [23]

Pastoreo de recuperación

El pastoreo de recuperación es una técnica ligera que permite que los programas de software se recuperen de errores fatales, como la desreferencia de puntero nulo y la división por cero. [24] En comparación con la técnica de computación ajena a fallas, el pastoreo de recuperación funciona directamente en el binario del programa compilado y no necesita volver a compilarse en el programa.

Utiliza el marco de instrumentación binaria justo a tiempo Pin . Se adjunta al proceso de aplicación cuando ocurre un error, repara la ejecución, rastrea los efectos de reparación a medida que continúa la ejecución, contiene los efectos de reparación dentro del proceso de aplicación y se desconecta del proceso después de que todos los efectos de reparación se eliminan del estado del proceso. No interfiere con la ejecución normal del programa y por lo tanto genera una sobrecarga insignificante. [24] Para 17 de 18 errores de desreferencia nula y división por cero del mundo real recopilados sistemáticamente, una implementación prototipo permite que la aplicación continúe ejecutándose para proporcionar resultados y servicios aceptables a sus usuarios en las entradas que desencadenan errores. [24]

Cortacircuitos

El patrón de diseño de disyuntores es una técnica para evitar fallas catastróficas en sistemas distribuidos.

Redundancia

La redundancia es la provisión de capacidades funcionales que serían innecesarias en un entorno libre de fallas. [25] Esto puede consistir en componentes de respaldo que automáticamente "se activan" si un componente falla. Por ejemplo, los camiones de carga grandes pueden perder un neumático sin mayores consecuencias. Tienen muchos neumáticos y ninguno es crítico (con la excepción de los neumáticos delanteros, que se utilizan para girar, pero generalmente soportan menos carga, cada uno y en total, que los otros cuatro a 16, por lo que tienen menos probabilidades de fallar). ). La idea de incorporar redundancia para mejorar la confiabilidad de un sistema fue iniciada por John von Neumann en la década de 1950. [26]

Son posibles dos tipos de redundancia: [27] redundancia espacial y redundancia temporal. La redundancia de espacio proporciona componentes, funciones o elementos de datos adicionales que son innecesarios para un funcionamiento sin fallas. La redundancia de espacio se clasifica además en redundancia de hardware, software y redundancia de información, según el tipo de recursos redundantes agregados al sistema. En la redundancia de tiempo, el cálculo o la transmisión de datos se repite y el resultado se compara con una copia almacenada del resultado anterior. La terminología actual para este tipo de pruebas se conoce como "Pruebas de tolerancia a fallas en servicio o ISFTT para abreviar".

Desventajas

Las ventajas del diseño tolerante a fallos son obvias, mientras que muchas de sus desventajas no lo son:

Términos relacionados

Existe una diferencia entre la tolerancia a fallos y los sistemas que rara vez tienen problemas. Por ejemplo, los sistemas de barras transversales de Western Electric tenían tasas de falla de dos horas cada cuarenta años y, por lo tanto, eran altamente resistentes a fallas . Pero cuando ocurría una falla, aun así dejaban de funcionar por completo y, por lo tanto, no eran tolerantes a fallas .

Ver también

Referencias

  1. ^ Tolerancia adaptativa a fallos y degradación elegante, Oscar González et al., 1997, Universidad de Massachusetts - Amherst
  2. ^ Johnson, BW (1984). "Sistemas basados ​​en microprocesadores tolerantes a fallos", IEEE Micro, vol. 4, núm. 6, págs. 6-21
  3. ^ a b C Daniel P. Siewiorek; C. Gordon Bell; Allen Newell (1982). Estructuras informáticas: principios y ejemplos . McGraw-Hill . ISBN 0-07-057302-6.
  4. ^ Algirdas Avižienis; George C. Gilley; Francisco P. Mathur; David A. Rennels; Juan A. Rohr; David K. Rubin. "La computadora STAR (autoprueba y reparación): una investigación de la teoría y la práctica del diseño de computadoras tolerantes a fallas" (PDF) .
  5. ^ "Estado de la Misión Voyager (la mayoría de las veces al menos tres meses desactualizado)". NASA . Consultado el 1 de abril de 2022 .
  6. ^ Randell, Brian ; Lee, Pensilvania; Treleaven, PC (junio de 1978). "Problemas de confiabilidad en el diseño de sistemas informáticos". Encuestas de Computación ACM . 10 (2): 123–165. doi :10.1145/356725.356729. ISSN  0360-0300. S2CID  16909447.
  7. ^ PJ Denning (diciembre de 1976). "Sistemas operativos tolerantes a fallos". Encuestas de Computación ACM . 8 (4): 359–389. doi :10.1145/356678.356680. ISSN  0360-0300. S2CID  207736773.
  8. ^ Theodore A. Linden (diciembre de 1976). "Estructuras del sistema operativo para respaldar la seguridad y el software confiable". Encuestas de Computación ACM . 8 (4): 409–445. doi :10.1145/356678.356682. hdl : 2027/mdp.39015086560037 . ISSN  0360-0300. S2CID  16720589.
  9. ^ Rayholt. "La computadora central de datos de aire F14A y la tecnología de punta LSI en 1968".
  10. ^ Computación tolerante a fallas en el diseño de computadoras Neilforoshan, archivo de MR Journal of Computing Sciences in Colleges Volumen 18, Número 4 (abril de 2003) Páginas: 213 - 220, ISSN  1937-4771
  11. ^ "Historia de TANDEM COMPUTERS, INC". FinanciamientoUniverso . Consultado el 1 de marzo de 2023 .
  12. ^ Nathaniel (17 de marzo de 2021). "Por qué su sitio web debería funcionar sin JavaScript". Comunidad DEV . Consultado el 16 de mayo de 2021 .
  13. ^ Fairfax, Zackerie (28 de noviembre de 2020). "El cierre antiguo de Twitter significa que ya no puedes twittear desde la 3DS". "Pantalla diatriba" . Consultado el 1 de julio de 2021 .
  14. ^ Hudak, JJ; Suh, B.-H.; Siewiorek, DP; Segall, Z. (1993). "Evaluación y comparación de técnicas de software tolerante a fallos". Transacciones IEEE sobre confiabilidad . 42 (2): 190-204. doi : 10.1109/24.229487. ISSN  1558-1721.
  15. ^ Stallings, W (2009): Sistemas operativos. Principios internos y de diseño , sexta edición.
  16. ^ Thampi, Sabu M. (23 de noviembre de 2009). "Introducción a los Sistemas Distribuidos". arXiv : 0911.4395 [cs.DC].
  17. ^ "Controlar". mero.ieee.org . Archivado desde el original el 8 de octubre de 1999 . Consultado el 6 de abril de 2016 .
  18. ^ Baha Al-Shaikh, Simon G. Stacey, Conceptos básicos de los equipos de anestesia, cuidados intensivos y medicina perioperatoria (2017), pág. 247.
  19. ^ Dubrova, E. (2013). "Diseño tolerante a fallos", Springer, 2013, ISBN 978-1-4614-2112-2 
  20. ^ Evaluación de confiabilidad de algunas arquitecturas informáticas tolerantes a fallas . Springer-Verlag. Noviembre de 1980. ISBN 978-3-540-10274-8.
  21. ^ Herzberg, Amir; Shulman, Haya (2012). "Computación bipartita ajena y justa asistida por servidor". 2012 Séptima Conferencia Internacional sobre Disponibilidad, Confiabilidad y Seguridad . IEEE. págs. 75–84. doi :10.1109/ares.2012.28. ISBN 978-1-4673-2244-7. S2CID  6579295.
  22. ^ Aparejador, Manuel; Pekarek, Daniel; Mössenböck, Hanspeter (2018), "Computación ajena a fallas consciente del contexto como medio para prevenir desbordamientos de búfer", Seguridad de sistemas y redes , Apuntes de conferencias en informática, vol. 11058, Cham: Springer International Publishing, págs. 376–390, arXiv : 1806.09026 , doi : 10.1007/978-3-030-02744-5_28, ISBN 978-3-030-02743-8, consultado el 7 de octubre de 2020
  23. ^ Keromytis, Angelos D. (2007), "Caracterización de sistemas de autorreparación de software", en Gorodetski, Vladimir I.; Kotenko, Igor; Skormin, Victor A. (eds.), Caracterización de sistemas de autorreparación de software , Seguridad de redes informáticas: Cuarta Conferencia Internacional sobre métodos, modelos y arquitecturas matemáticas para la seguridad de redes informáticas, Springer , ISBN 978-3-540-73985-2
  24. ^ abc Largo, Fan; Sidiroglou-Douskos, Stelios; Rinard, Martín (2014). "Reparación y contención automática de errores en tiempo de ejecución mediante el control de recuperación". Actas de la 35ª Conferencia ACM SIGPLAN sobre diseño e implementación de lenguajes de programación . PLDI '14'. Nueva York, NY, Estados Unidos: ACM. págs. 227-238. doi : 10.1145/2594291.2594337 . ISBN 978-1-4503-2784-8. S2CID  6252501 .
  25. ^ Laprie, JC (1985). "Computación confiable y tolerancia a fallas: conceptos y terminología", Actas del 15º Simposio internacional sobre computación tolerante a fallas (FTSC-15), págs.
  26. ^ von Neumann, J. (1956). "Lógica probabilística y síntesis de organismos confiables a partir de componentes no confiables", en Automata Studies, eds. C. Shannon y J. McCarthy, Princeton University Press, págs. 43–98
  27. ^ Avizienis, A. (1976). "Sistemas tolerantes a fallos", IEEE Transactions on Computers, vol. 25, núm. 12, págs. 1304-1312