Licenciatura en Ciencias Áreas terminales en Matemáticas, Física, Bioquímica y Biología Molecular, y Ciencias Computacionales y Computación Científica
Prerrequisitos:
Comprende los conocimientos básicos sobre la arquitectura y operación de un sistema operativo así como las funciones básicas que desempeña.
Antecedentes Recomendadas:
Ninguna
Consecuentes Recomendadas:
Ninguna
Presentación de la unidad de aprendizaje:
En esta unidad de aprendizaje se estudian los fundamentos de la computación distribuida, tales como la comunicación, sincronización y coordinación de procesos.
Propósito de la unidad de aprendizaje:
El propósito de este curso es que el alumno adquiera conocimientos sobre los principios fundamentales de los sistemas distribuidos. Asi como también que realice un conjunto de prácticas para que aprenda a implementar los conceptos teóricos tales como Sockets, RMI, RPC e Hilos.
Competencias profesionales:
Codifica y maneja operaciones de estructuras de datos avanzadas.Conoce la arquitectura de los sistemas operativos, el tipo de algoritmos y estructuras de datos que los componen.Comprende la importancia del uso de un sistema operativo para ejecutar los procesos y gestionar los recursos de un sistema.
Contribución al perfil de egreso:
Se aportan competencias académicas y profesionales en el área terminal de su elección, que posibiliten el adecuado desempeño para seleccionar, movilizar y gestionar las disposiciones y los recursos disponibles para resolver problemas en un campo determinado de situaciones de acción, así como la capacidad para el aprendizaje de forma autónoma.
Secuencia temática:
I Introdución.
Características de un sistema distribuido.
Objetivos de los sistemas distribuidos.
Ventajas y desventajas de los sistemas distribuidos.
Complejidad de los sistemas distribuidos.
Técnicas de construcción.
Requerimientos de aplicación.
Arquitectura básica.
Práctica con OpenMosix.
II Comunicación entre procesos.
Sockets.
Modelo cliente- servidor.
RPC.
RMI.
Práctica con sockets, RMI y RPC.
III Procesos.
Hilos y concurrencia.
Concurrencia.
3.2.1 Bloqueos.
3.2.1.1 Exclusión mutua.
3.2.1.2 Starvation.
3.2.1.3 Liveness.
3.2.2 Espacio de direcciones.
3.2.3 Creación de un nuevo proceso.
3.2.4 Hilos.
3.2.5 Invocación de procesos.
3.2.6 Práctica con hilos e investigación sobre algoritmos de exclusión mutua.
IV Sincronización.
Relojes y eventos.
4.1.1 Sincronización de relojes físicos.
4.1.1.1 Método de Cristian.
4.1.1.2 Algoritmo de Berkeley.
4.1.1.3 Protocolo de tiempo de red.
Tiempo lógico y relojes lógicos.
V Coordinación y acuerdo.
Introducción.
Fallos y detectores de fallos.
Exclusión mutua distribuida.
Elecciones.
Comunicación por multidifusión.
Consenso y problemas relacionados.
Gestión de interbloqueos.
Criterios de Evaluación:
Exámenes parciales: 30%
Examen final: 30%
Participación en clase: 10%
Búsqueda de información: 10%
Otra (especifique): Tareas: 20%
Bibliografía básica:
Santoro, Nicola. 2006. Design and analysis of distributed algorithms. Ed. John Wiley & Sons.
Attiya, Hagit y Welch, Jennifer. 2004. Distributed computing, fundamentals, simulations and advanced topics. 2a edición. Ed. John Wiley & Sons.
Guerraoui, Rachid y Rodrigues, Luis. 2006. Introduction to reliable distributed programming. Ed. Springer.
Bibliografía complementaria:
Coulouris, George, Dolimore, Jean y Kindberg, Tim. Sistemas distribuidos, conceptos y diseño. 3a edición. Ed. Addison Wesley.
Tanenbaum, Andrew S. y Van Steen Maarten. 2008. Sistemas distribuidos, principios y paradigmas. 2a edición. Ed. Pearson Education.