Principios de Computación Distribuida



Profesor: Sergio Rajsbaum

Curso impartido en la UNAM en la Licenciatura en Ciencias de la Computación de la Facultad de Ciencias y en el Posgrado en Ciencia e Ingeniería de la Computación .

Descripción de una versión anterior del curso en:
Semestres en que se ha impartido el curso:

Contenido de esta página




Objetivos

Objetivos Generales
1. Formar alumnos que puedan resolver problemas complejos de cómputo distribuido, crítica y creadoramente. 2. Profundizar el entendimiento de aspectos  distribuidos, de concurrencia y tolerancia a fallas de: sistemas operativos, bases de datos, redes de computadoras e Internet. 3. Contribuir a la formación del alumno en teoría de computación y a aumentar su comprensión de los fundamentos de la computación.

Objetivos Particulares
El material cubre principios fundamentales subyacentes no solo a las tecnologías del momento, sino a otras que aparezcan en el futuro. Esto es especialmente importante en vista de que se trata de un área con un vertiginoso avance, y debido a la enorme complejidad de un sistema distribuido. Los principios fundamentales son los relacionados a:

En un solo semestre es imposible cubrir todos estos temas, y otros relacionados de gran importancia, como seguridad. Además, algunos de ellos son demasiado avanzados para presentarse en un primer curso. Por otro lado, siendo un área tan nueva, todavía no hay un consenso absoluto de cuales son los resultados mas importantes. El material que se describe a continuacion se eligió de manera que hubiera alguna relación entre los distintos temas, presentando una visión general lo más coherente posible.

Requisitos
Madurez matemática y en Ciencias de la Computación. Experiencia equivalente a los cursos de la Facultad de Ciencias de Teoría de la Computación, Análisis de Algoritmos I, Arquitectura de Computadoras, Redes de Computadoras y Sistemas de Bases de Datos.

Regresar a Contenido



Temario 

En la primera parte del curso se presentan algoritmos y técnicas básicas de desarrollo y análisis de algoritmos distribuidos. El paradigma subyacente es el de difusión de información en una red. Se enfatiza el modelo de envío de mensajes, y la complejidad de comunicación (cotas superiores, y algo de inferiores), sobre el número de mensajes enviados por un algoritmo. En la segunda parte se estudian problemas de tiempo y sincronización. Aqui las ideas pasan a ser más abstractas y generales, después de haber estudiado diversos algoritmos concretos en la primera parte. En la tercera parte, se introduce el modelo de memoria compartida. En esta parte se comienzan presentando varios problemas y algoritmos que los resuelven, encaminándose hacia el problema fundamental de tolerancia a fallas, consenso.

Horas por semestre: 64

  1. Introdución (6 horas)
    1. Modelos de un sistema distribuido.
    2. Análisis de correctez y complejidad
  2. Fundamentos (20 horas)
    1. Protocolos de enlaze.
    2. Difusión de información por ficha.
    3. Busqueda en profundidad (DFS),
    4. Conexidad: certificados y otros algoritmos de ficha,
    5. Algoritmo de difusión sin respuesta (PI) y con respuesta (PIF),
    6. elección de líder en anillos y en gráficas arbitrarias,
    7. Arbol generador de peso mínimo
  3. Tiempo (18 horas)
    1. Causalidad, relojes escalares y relojes vectoriales,
    2. Detección de estados globales
    3. Tiempo real y sincronización de relojes
  4. Memoria Compartida (20 horas)
    1. Modelos de memoria compartida.
    2. Problemas de consenso solucionables y no solucionables.
    3. Problema de los conjuntos ordenados y el modelo de la foto atómica
      inmediata,
    4. Imposibilidad de consenso y estructura topológica del cómputo libre de espera

Regresar a Contenido



Bibliografía

Básica

  1. Hagit Attiya,  Jennifer Welch, Distributed Computing: Fundamentals, Simulations, and Advanced Topics, McGraw-Hil, 1998.
  2. Nancy Lynch, Distributed Algorithms, Morgan Kaufman Pub, 1996.

Complementaria

  1. Gerard Tel, Introduction to Distributed Algorithms, Cambridge University Press, 1994.Prentice Hall
  2. Bernstein, P. and Hadzilacos, V. and Goodman, N, Concurrency Control and Recovery in Database Systems, Addison-Wesley, 1986.
  3. Andrew Tanenbaum, Distributed Systems: Principles and Paradigms, Prentice Hall, 2002.
  4. George Coulouris, Jean Dollimore, Tim Kindberg, Distributed Systems - Concepts and Design, Addison-Wesley, 2001.
  5. David Peleg, Distributed Computing: A Locality-Sensitive Approach, SIAM, Philadelphia, PA, 2000.
  6. Vijay K. Garg, Elements of Distributed Computing, John Wiley & Sons, 2002.
  7. Shlomi Dolev, Self-stabilization, MIT Press, 2000.

Regresar a Contenido



Ligas a sitios de relacionados

Regresar a Contenido


Cursos relacionados

Regresar a Contenido



Herramientas

Regresar a Contenido



Forma de trabajo

El curso se evalua mediante tareas y uno o dos examenes. Las tareas se asignan aproximadamente cada dos semanas, y consisten en resolver problemas y lecturas complementarias (no programación). Las tareas pueden entregarse en equipos de dos o individualmente. El examen se basa en los problemas de las tareas principalmente.

Regresar a Contenido



Contacto con Profesor

Profesor:

Regresar a Contenido


rajsbaum@matem.unam.m

Última modificación:
junio 16, 2004