Tolerancia a fallos en sistemas de memoria compartida distribuida - Bertogna, Mario Leandro (2000)
A medida que es necesario más poder de cálculo, aumenta la demanda de sistemas con múltiples procesadores, pero su desventaja es la programación que requiere gran esfuerzo y habilidad. Debido a esto, gran parte de su éxito depende del paradigma de programación que ofrezcan estos sistemas. Hay distintos métodos para mejorar la eficiencia y facilitar el uso de los sistemas paralelos, uno de estos es la memoria compartida distribuida (MCD). Una memoria distribuida compartida es una abstracción que presenta un solo espacio de direcciones compartidos por un número de procesadores. Cualquier procesador puede acceder a los espacios de memoria directamente. Los administradores de mapeo de memoria implementan el mapeo entre las memorias locales y el espacio de direcciones compartido. Además de mapear, una de las principales responsabilidades de los administradores es mantener la coherencia todo el tiempo. Un sistema de memoria compartida distribuida es atractivo desde el punto de vista del programador, debido a que simplifica varios aspectos en los desarrollos de aplicaciones. Sin embargo. a medida que el número de componentes crece, la probabilidad de fallas del sistema se incrementa en la misma medida. Un sistema de MCD es robusto o tolerante a fallas si soporta la supervivencia a fallos de la aplicación de usuario. El mecanismo puede ser transparente a la aplicación o puede proveer un conjunto de primitivas para que la aplicación los utilice. Para implementar un sistema de MCD completamente confiable éste debe preservar una imagen consistente de la memoria compartida (los datos globales) y proveer mecanismos para que cada aplicación sea recuperada de forma consistente (estados de los procesos y datos privados). Distinguiremos entre: recuperables; que son los sistemas que aunque sobrevivan a fallos pueden tener inconsistencias; y confiables; que son los que garantizan consistencia e integridad.