Última actualización: 29/04/2020


Curso Académico: 2019/2020

Sistemas Distribuidos
(15754)
Grado en Ingeniería Informática (Plan 2011) (Plan: 256 - Estudio: 218)


Coordinador/a: GARCIA CARBALLEIRA, FELIX

Departamento asignado a la asignatura: Departamento de Informática

Tipo: Obligatoria
Créditos: 6.0 ECTS

Curso:
Cuatrimestre:




Requisitos (Asignaturas o materias cuyo conocimiento se presupone)
Sistemas Operativos Redes de ordenadores
El objetivo de este curso es describir los principales conceptos necesarios para diseñar y desarrollar aplicaciones y sistemas distribuidos. 1. Competencias Genéricas: - Capacidad de análisis y síntesis (PO a, b, c, e) - Capacidad de organizar y planificar (PO c, d) - Resolución de problemas (PO a, b, c, g) - Capacidad de aplicar los conocimientos en la práctica (P a, c) 2. Competencias Específicas: a. Cognitivas (PO a,c e,j) - Conocer los conceptos básicos de un sistema distribuido - Conceer las principales plataformas hardware usadas en sistemas distribuidos - Conocer el concepto de middleware y los servicios que ofrece - Técnicas para desarrollar aplicaciones distribuidas - Sistemas de almacenamiento de un sistema distribuido. - Conocer las principales técnicas para desarrollar sistemas y aplicaciones tolerantes a fallos. - Conocimiento y aplicación de las características, funcionalidades y estructura de los Sistemas Distribuidos, las Redes de Computadores e Internet y diseñar e implementar aplicaciones basadas en ellas (CECRI11) - Capacidad de diseñar e implementar software de sistema y de comunicaciones (CEIC4) b. Procedimentales/Instrumentales (PO a, b, c, g, j, k) - Analizar, diseñar e implementar sistemas y aplicaciones distribuidas - Diseñar y desarrollar aplicaciones distribuidas utilizando servicios básicos de TCP/IP, RPC o servicios de plataformas middleware más sofisticadas. - Usar herramientas (lenguajes de programación y sistemas operativos) adecuados para la realización de sistemas y aplicaciones distribuidas. - Evaluar el rendimiento de una aplicación distribuida. - Investigar y buscar soluciones a nuevos problemas relacionados con sistemas distribuidos. c. Actitudinales (PO: c, e) - Creatividad - Actitud crítica respecto a los sistemas distribuidos - Motivación de logro - Interés por adquirit nuevos conocimientos
Descripción de contenidos: Programa
Los descriptores asociados con la asignatura son: Comunicación entre procesos; Middleware; RPC; almacenamiento distribuido; aplicaciones distribuidas; sincronización; tolerancia a fallos. Temario: Temario: 1. Introducción y conceptos básicos - Conceptos básicos - Redes e interconexión - Ventajas de los sistemas distribuidos - Paradigmas de computación distribuida - Diseño de sistemas distribuidos 2. Comunicación y sincronización entre procesos - Mecanismos de comunicación en sistemas de memoria compartida - Mecanismos de comunicación en sistemas de paso de mensajes - Servicios POSIX de comunicación y sincronización - Threads en Java 3. Paso de mensajes y aplicaciones cliente-servidor - Modelo de comunicación mediante paso de mensajes - Aspectos de diseño - Colas de mensajes POSIX - Aplicaciones cliente-servidor - Diseño de servidores concurrentes 4. Comunicación con sockets - Modelo de comunicación con sockets - API de sockets en POSIX - API de sockets en Java - Guía de diseño de aplicaciones cliente-servidor con sockets 5. Llamadas a procedimientos remotos - Funcionamiento de las RPC - Lenguaje de definición de interfaces - Aplanamiento y transferencia de mensajes - ONC-RPC - Invocación de métodos remotos en JAVA (RMI) 6. Servicios web - Protocolo HTTP - SOAP - Desarrollo de servicios web con JAX-WS - Desarrollo de servicios web con gSOAP 7. Servicios distribuidos - Servicio de nombres - Sincronización en sistemas distribuidos - Relojes físicos y lógicos - Exclusión mutua distribuida - Algoritmos de elección - Comunicación multicast 8. Sistemas de almacenamiento distribuidos - Estructura de un sistema de ficheros distribuido - Servicio de ficheros y directorios - Implementación de servicios de ficheros distribuidos - Ejemplo: NFS - Sistemas de ficheros de discos compartidos - Sistemas de ficheros paralelos - Redes de almacenamiento 9. Tolerancia a fallos en sistemas distribuidos - Conceptos básicos sobre tolerancia a fallos - Tolerancia a fallos software - Detectores de fallos - Replicación - Protocolos de consenso
Actividades formativas, metodología a utilizar y régimen de tutorías
1. Clases magistrales de teoría 1 ECTS (PO a, b, c, e, j) - Presentación de los conceptos teóricos sobre sistemas distribuidos - Para facilitar su desarrollo los alumnos tendrán textos básicos de referencia que les permitirán completar y profundizar en aquellos temas en los cuales estén más interesados. 2. Proyectos 1.5 ECTS (PO a, c, d, e, g, k) - Se desarrollarán varios proyectos durante el curso. Parte de los mismos se harán en laboratorios con apoyo del profesor. - Los estudiantes tienen que analizar los requisitos y ofrecer una solución correcta - Los proyectos se harán en grupos de 2 estudiantes para promover el trabajo en equipo 3. Resolución de ejercicios por parte del profesor 1 ECTS (PO a, c, e) - Solución de ejercicios en clase con participación de los alumnos 4. Trabajo del alumno 2 ECTS. (PO a, c, e, g, k) - Estudio para comprender los conceptos teóricos - Resolución de los ejercicios propuestos - Los estudiantes tienen que comprender y presentar en público los principales aspectos obtenidos del análisis de un artículo sencillo escrito en inglés 5. Exámenes 0.5 ECTS (PO a, c, e, g) - Examen parcial y final
Sistema de evaluación
  • Peso porcentual del Examen Final 25
  • Peso porcentual del resto de la evaluación 75

Bibliografía básica
  • G. Coulouris, J. Dollimore, T. Kindberg, G. Blair. Distributed Systems, Concepts and design. 5ª edition. 2011. Addison-Wesley.
Recursos electrónicosRecursos Electrónicos *
Bibliografía complementaria
  • B. A. Forouzan. Transmisión de datos y redes de comunicaciones. Cuarta edición. McGraw Hill.
  • Distributed Systems: principles and paradigms. Andrew S. Tanenbaum , Maarten van Steen. Pearson.
  • F. García, J. Carretero, A. Calderón, J. Fernández, J. M. Pérez. Problemas resueltos de programación en C. Thomson.
  • L. H. Etzkorn. Introduction to Middleware: Web Services, Object Components, and Cloud Computing. CRC Press. 2017
  • Pankaj Jalote. Fault Tolerance in Distributed Systems. Prentice-Hall.
  • Richard Stevens. UNIX Network Programming. Prentice Hall.
Contenido detallado de la asignatura o información adicional para TFM
(*) El acceso a algunos recursos electrónicos puede estar restringido a los miembros de la comunidad universitaria mediante su validación en campus global. Si esta fuera de la Universidad, establezca una VPN


El programa de la asignatura podría sufrir alguna variación por causa de fuerza mayor debidamente justificada o por eventos académicos comunicados con antelación.


Dirección web para más información: http://arcos.inf.uc3m.es/~infoec