Última actualización: 25/05/2022


Curso Académico: 2022/2023

Sistemas Distribuidos
(15754)
Titulación: Grado en Ingeniería Informática (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 (Curso 2 - cuatrimestre 2) Redes de ordenadores (Curso 3 - cuatrimestre 1)
Objetivos
El objetivo de este curso es describir los principales conceptos necesarios para diseñar y desarrollar aplicaciones y sistemas distribuidos.
Competencias y resultados del aprendizaje
Enlace al documento

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 Python 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 Python - 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 - Llamadas a prodcedimientos remotos en Python 6. Servicios web - Protocolo HTTP - SOAP - Desarrollo de servicios web 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 - Ejemplos de sistemas de fichero distribuidos - 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
* Clases magistrales: 1 ECTS. Tienen por objetivo alcanzar las competencias específicas cognitivas de la asignatura, así como las competencias transversales capacidad de análisis y abstracción. * Clases prácticas: 1 ECTS. Tienen por objetivo iniciar el desarrollo de las competencias específicas instrumentales, así como las competencias transversales resolución de problemas y aplicación de conocimientos. * Ejercicios de evaluación continua: 1,5 ECTS. Iniciados durante las clases prácticas y terminados fuera de las mismas, tienen por objetivo completar el desarrollo de las competencias específicas instrumentales e iniciar el desarrollo de las competencias específicas actitudinales, así como las competencias transversales resolución de problemas y aplicación de conocimientos. * Trabajos prácticos: 2 ECTS. Desarrollados sin presencia del profesor, tienen por objetivo completar e integrar el desarrollo de todas las competencias específicas y transversales, en la resolución de dos casos prácticos donde queden bien documentados el planteamiento del problema, la elección del método de resolución, los resultados obtenidos y la interpretación de los mismos. * Tutorías: TUTORÍAS. Asistencia individualizada (tutorías individuales) o en grupo (tutorías colectivas) a los estudiantes por parte del profesor. * Examen final: 0,5 ECTS. Tiene por objeto incidir y complementar en el desarrollo de las capacidades específicas cognitivas y procedimentales. Refleja especialmente el aprovechamiento de las clases magistrales.
Sistema de evaluación
  • Peso porcentual del Examen Final 20
  • Peso porcentual del resto de la evaluación 80
Calendario de Evaluación Continua
Bibliografía básica
  • G. Coulouris, J. Dollimore, T. Kindberg, G. Blair. Distributed Systems, Concepts and design. 5ª edition. 2011. Addison-Wesley.
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 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.