Última actualización: 10/07/2020


Curso Académico: 2020/2021

Arquitectura de Sistemas II
(13423)
Grado en Ingeniería Telemática (Plan: 447 - Estudio: 215)


Coordinador/a: ESTEVEZ AYRES, IRIA MANUELA

Departamento asignado a la asignatura: Departamento de Ingeniería Telemática

Tipo: Obligatoria
Créditos: 6.0 ECTS

Curso:
Cuatrimestre:




Requisitos (Asignaturas o materias cuyo conocimiento se presupone)
Programación de sistemas Arquitectura de Sistemas I
El objetivo de este curso es que el estudiante adquiera los fundamentos básicos relativos al campo de los sistemas software fundamentalmente a nivel de sistema operativo y con nociones básicas de sistemas distribuidos. Para lograr este objetivo, el alumno debe adquirir una serie de conocimientos y capacidades. Los conocimientos adquiridos al cursar esta asignatura son: - Conocer la estructura básica de un sistema operativo. - Conocer la estructura software basada en hebras y las características de las aplicaciones multi-hilo (o multi-hebra) y conocer los mecanismos de gestión de la concurrencia. - Conocer la arquitectura de un sistema distribuido - Conocer los mecanismos básicos de comunicación en sistemas distribuidos - Conocer la arquitectura típica de un middleware de comunicaciones y sus componentes fundamentales. Las capacidades específicas que adquirirá el alumno al finalizar el curso: - Utilizar los mecanismos básicos que ofrece un sistema operativo para la ejecución de aplicaciones. - Utilizar los mecanismos de gestión de la concurrencia y gestión de memoria. - Diseñar e implementar aplicaciones multi-hilo centralizadas y distribuidas en red y mecanismos básicos de sincronización. - Utilizar modelos de comunicación en sistemas distribuidos mediante paso de mensajes. - Modelar y desplegar un sistema distribuido. En cuanto a las capacidades generales que adquirirá: - Habilidad para aplicar conocimientos de tecnologías de telecomunicación e ingeniería. Esta capacidad se trabajará especialmente en las prácticas de laboratorio así como en la resolución de ejercicios en las clases teóricas. (PO a) - Habilidad para usar técnicas y herramientas de ingeniería necesarias para el ejercicio profesional (PO k) - Reconocimiento de la necesidad de un aprendizaje continuo y la habilidad de obtener y aplicar la información requerida accediendo a literatura técnica relacionada con el ámbito de la asignatura tanto en español como en inglés. (PO i)
Descripción de contenidos: Programa
1. Arquitectura de un sistema software: centralizado y distribuido - Definiciones y conceptos básicos de un sistema distribuido - Aspectos software y hardware 2. El sistema operativo - Funcionalidad y servicios básicos. - Multiprogramación con procesos. - Mecanismos de comunicación entre procesos. - Hebras y sincronización. - Gestión de la memoria. 3. Sistemas distribuidos: modelos, algoritmos y software - Modelos de sistemas distribuidos. - Sincronización distribuida y transacciones. - Consenso. - Modelos de middleware y programación distribuida.
Actividades formativas, metodología a utilizar y régimen de tutorías
Las actividades que se llevan a cabo en la impartición de la asignatura son: - CLASES MAGISTRALES. Presentación por parte del profesor de los principales conceptos a modo de resumen. Se fomentan en este tipo de sesiones tanto la interactividad como la discusión de los principales problemas planteados. (P.O. a y k) - CLASES DE EJERCICIOS PRÁCTICOS: Sesiones en las que se plantean problemas reales y se permite a los estudiantes su análisis así como el planteamiento de posibles soluciones. (P.O a y k) - LABORATORIOS DE PROGRAMACIÓN: Se describe una funcionalidad basada en los conceptos teóricos cubiertos tanto en las sesiones magistrales como de problemas y, con la supervisión de un profesor, se procede a su implementación. Estas sesiones suponen un trabajo adicional del estudiante durante un período de varios días en los que tiene la posibilidad de, por varios canales, consultar sus dudas conceptuales con el profesorado. (P.O. a y k)
Sistema de evaluación
  • Peso porcentual del Examen Final 0
  • Peso porcentual del resto de la evaluación 100

Bibliografía básica
  • A. Silberschatz, P. Galvin. Operating System Concepts.. Wiley. 7ª edición..
  • B. Kernighan, D. Ritchie. The C Programming Language. Prentice Hall. 1998
  • Bradford Nichols, Dick Buttlar, Jacqueline Proulx Farrell. Pthreads Programming. O'Reilley. 1996
  • G. F. Coulouris, J. Dollimore, T. Kindberg.. Distributed Systems. Concepts and Design. Adisson Wesley. 4th ed., June 2012. ISBN 0201-61918-0..
  • M. Kerrisk. The Linux Programming Interface. No Starch Press. 2013
  • R. Love.. Linux System Programming. O'Reilley.. 2013.
Bibliografía complementaria
  • A.S. Tanenbaum, M. Van Steel. Distributed Systems.. Prentice-Hall..
  • Brian W. Kernighan. The UNIX programming environment. Prentice Hall.
  • Brian W. Kernighan, Dennis M. Ritchie. The C programming language. Prentice Hall, 1989.
  • David Butenhof. Programming with POSIX threads. Addison Wesley.
  • Gregorio Fernández. Conceptos básicos de arquitectura y sistemas operativos: Curso de Ordenadores. Madrid, Sistemas y Servicios de Comunicación..
  • S. Oaks, H. Wong. Java Threads.. O`Reilly.

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.