Profesorado
Responsable
- Marisa Gil Gomez ( marisa.gil@upc.edu )
Horas semanales
Teoría
1
Problemas
2
Laboratorio
1
Aprendizaje dirigido
0.4
Aprendizaje autónomo
5.6
Competencias
Competencias técnicas comunes
- CT2.4 - Demostrar conocimiento y capacidad de aplicación de las herramientas necesarias para el almacenaje, el procesamiento y el acceso a los Sistemas de información, incluidos los basados en web.
- CT6.3 - Demostrar conocimiento de las características, funcionalidades y estructura de los Sistemas Operativos que permita su uso adecuado, administración y diseño, así como la implementación de aplicaciones basadas en sus servicios.
- CT6.4 - Demostrar conocimiento y capacidad de aplicación de las características, las funcionalidades y la estructura de los Sistemas Distribuidos, de las Redes de Computadores y de Internet que permita su uso y su administración, así como el diseño y la implementación de aplicaciones basadas en ellas.
- CT7.1 - Demostrar conocimiento de las métricas de calidad y saber utilizarlas.
- CT7.2 - Evaluar sistemas hardware/software en función de un criterio de calidad determinado.
- CT7.3 - Determinar los factores que inciden negativamente en la seguridad y la fiabilidad de un sistema hardware/software, y minimizar sus efectos.
- CT8.1 - Identificar tecnologías actuales y emergentes y evaluar si son aplicables, y en qué medida, para satisfacer las necesidades de los usuarios.
- CT8.4 - Elaborar el pliego de condiciones técnicas de una instalación informática que cumpla los estándares y la normativa vigente.
Especialidad ingeniería del software
- CES1.4 - Desarrollar, mantener y evaluar servicios y aplicaciones distribuidas con soporte de red.
- CES1.8 - Especificar, diseñar e implementar sistemas de control y de tiempo real.
- CES2.2 - Diseñar soluciones apropiadas en uno o más dominios de aplicación, utilizando métodos de ingeniería del software que integren aspectos éticos, sociales, legales y económicos.
- CES3.1 - Desarrollar servicios y aplicaciones multimedia.
Sostenibilidad y compromiso social
- G2.3 - Tener en cuenta las dimensiones social, económica y ambiental, y el derecho a la privacidad a aplicar soluciones y llevar a cabo proyectos coherentes con el desarrollo humano y la sostenibilidad.
Objetivos
-
Conocer el funcionamiento de un SO real, desde que arranca el ordenador y la inicialización del sistema, pasando por la gestión dinámica de recursos, hasta que se apaga el ordenador.
Competencias relacionadas: CES1.4, CES3.1, CT6.3, CES1.8, -
Conocer los detalles de la implementación de algunos de los componentes básicos de un SO real: código de inicialización, código de gestión de memoria, código de gestión de E/S, código de gestión de los procesos y código de gestión de red.
Competencias relacionadas: CES1.4, CES3.1, CT8.1, CT6.3, CT6.4, CT7.2, CES1.8, CT2.4, -
Entender la programación multihilo, las restricciones asociadas al correcto funcionamiento del acceso a memoria compartida y los mecanismos de exclusión mutua.
Competencias relacionadas: CES1.4, CES3.1, CT7.1, CT7.2, CT7.3, G2.3, CT2.4,
Subcompetences- Identificar limitaciones de escalabilidad en la gestión de la información del sistema.
-
Ser capaz de entender el impacto en la potencia y el consumo energético de la ejecución de funciones y / o aplicaciones teniendo en cuenta los componentes utilizados, por ejemplo: estructuras de datos, algoritmos, políticas y mecanismos, así como las técnicas de comunicación y sincronización basadas en bloqueo y esperas.
Competencias relacionadas: CES2.2, CT8.1, CT7.1, CT7.2, CT8.4, G2.3, CES1.8, -
Conocer la legislación básica existente en cuanto a la protección de datos y propiedad intelectual.
Competencias relacionadas: CT8.1, CT7.3, CT8.4, G2.3,
Subcompetences- Conocer las posibilidades de combinación de hardware y software propietario y libre y las consecuencias legales de desarrollo y modificación de código a partir de material ya existente.
- Entender los problemas de responsabilidad legal relacionados con el mantenimiento de los datos y robustez del sistema. Conocer las posibilidades de combinación de hardware y software propietario y libre y las consecuencias legales de desarrollo y modificación de código a partir de material ya existente.
-
Entender el impacto en eficiencia y rendimiento que puede causar la existencia de diferentes niveles de gestión de recursos.
Competencias relacionadas: CES1.4, CES3.1, CT8.1, CT7.3, CES1.8, CT2.4,
Subcompetences- Conocer los mecanismos más populares de comunicación entre niveles.
-
Conocer diferentes políticas de planificación de sistemas de propósito general, como Linux, y entender las implicaciones que puede tener para la aplicación el uso de una política determinada.
Competencias relacionadas: CES1.4, CES2.2, CES3.1, CT8.1, CT6.3, CT7.3, G2.3, CES1.8,
Subcompetences- Detectar limitaciones de escalabilidad.
- Detectar cuellos de botella y problemas de rendimiento en el uso de recursos distribuidos, como ficheros de BBDD o búsquedas de información.
-
Entender los aspectos tecnológicos que impactan en los fenómenos económicos, sociales y ambientales.
Competencias relacionadas: CES2.2, CT7.3, CT8.4, G2.3,
Subcompetences- Comprender el impacto energético asociado a diferentes plataformas, dependiendo del rendimiento
-
Ser capaz de dividir la gestión recursos en capas, cuando se trabaja con middlewares, librerías o máquinas virtuales.
Competencias relacionadas: CES2.2, CT8.1, CT6.4, CT7.2, CT7.3, G2.3, CT2.4,
Subcompetences- Seleccionar los parámetros del SO más adecuados en función de la plataforma a utilizar.
-
Entender la asignación básica de recursos que hace el SO para que un programa o aplicación se pueda ejecutar y las repercusiones que puede tener en cuanto a rendimiento y uso eficiente de la energia.
Competencias relacionadas: CES1.4, CES3.1, CT8.1, CT6.3, CT6.4, CT7.2, G2.3, CT2.4,
Contenidos
-
Introducción
Conceptos básicos y definición de SO. Estructura de un sistema operativo. Interfaz de usuario y gestión de recursos. Funcionalidades actuales básicas de un SO. Otros softwares de gestión de recursos: servidores y middlewares. Gestió de recursos de aplicaciones distribuidas: servicios remotos, concurrencia de servicios y datos. Sistemas heterogéneos -
Puesta en marcha e interficies de comunicación.
Boot del sistema y definición de proceso: estructuras básicas del SO. Modos de ejecución. Interrupciones.Llamadas al sistema y paso de mensajes. -
Procesos
Definición de proceso y contexto: estructuras básicas para mantener el contexto de un proceso. Cambio de contexto. Planificación de procesos: concurrencia y sincronización. Políticas de planificación: niveles de planificación. Contextos de diferente peso: procesos, threads. Gestión de concurrencia y paralelismo en middlewares y servidores. -
Memoria
Procesos y espacios de direcciones: protección y compartición de espacios. Soporte del hardware: Memoria virtual, TLB y caches. Modos de acceso: datos y código, niveles de privilegio. Objetos de memoria y gestión desde diferentes niveles (pools de objetos, garbage collector). Librerías estáticas y librerías dinámicas. -
E/S
Principio de independencia de la E/S. Llamadas al sistema y librerías. Drivers, descriptores y estructuras relacionadas. Dispositivos virtuales y físicos. E/S síncrona i asíncrona. Compartición y modos de acceso: coherencia y distribución de datos. E/S multimedia. -
Sistemas de Ficheros
Directorio y gestión del espacio de nombres. Operaciones con ficheros. Gestión concurrente de datos. Replicación. Sistemas de ficheros virtuales. Gestió i migració de dades i binaris. Execució remota i bytecodes. -
Protección y seguridad.
Definición de protección. Mecanismos d eprotección. Autorización, control de acceso e integridad del sistema. Capabilities. Virus, gusanos y malware.
Actividades
Actividad Acto evaluativo
Introducción al código del SO: estructuras de datos y acceso a los servicios
A partir de la introducción de la asignatura, habrá una interacción entre los estudiantes para recordar conceptos ya trabajados en cursos anteriores y completar entre todos las nomenclaturas básicas. Incluye la búsqueda de información y propuesta de pautas para evaluar la competencia de sostenibilidad a partir de la definición de competencias y del contenido del curso.Objetivos: 1 2 8 5 4
Contenidos:
Teoría
2h
Problemas
4h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h
Lab 1: mecanismos de comunicación con el SO y objetos de primera clase: procesos
A partir de un SO reducido (ZeOS), el estudiante trabajará y completase el código de gestión de excepciones e interrupciones, hará una sencilla llamada a sistema y completase información básica que el SO necesita de los programas que se están ejecutando.Objetivos: 2 9 4
Teoría
0h
Problemas
0h
Laboratorio
4h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h
Información y gestión de recursos de las entidades de ejecución (procesos, threads,...)
Ver cómo afectan desde las estructuras de datos y la asignación de recursos, el trabajar con procesos, threads u otros tipos de objetos que representen al programa en ejecución y los recursos y políticas asignadas por el SO.Objetivos: 6 3 9 4 7
Teoría
2h
Problemas
6h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
7h
Lab 2: Mecanismos y políticas de planificación de procesos
A partir de un mecanismo de colas y una política RR, se implementarán diferentes políticas con preempción y prioridades. El estudiante deberá evaluar cuáles son las más apropiadas según el tipo de trabajo (interactivo, cálculo, sincronización,...)Objetivos: 2 6 3 9
Teoría
0h
Problemas
0h
Laboratorio
4h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h
Interacción en la gestión de memoria con diversos niveles: middlewares y máquinas virtuales.
A partir de los conocimientos del uso y asignación de memoria que hace el sistema a los programas en ejecución, ver las alternativas y diferentes estrategias de asignación, reserva y mapeo, estática y dinámicamente, también implícita o explícitamente, con llamadas al sistema. Se trabajará la evaluación de rendimiento y las consecuencias de utilizar diferentes políticas de asignación de recursos. Además se verán las implicaciones que tiene la gestión de recursos del propio middleware.Objetivos: 1 2 6 9 5
Contenidos:
Teoría
2h
Problemas
4h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
9h
Lab 3: Utilización de herramientas para extraer información sobre el uso de los recursos del sistema
Conocer y usar las herramientas básicas del sistema y las estructuras de datos relacionadas con información del sistema para mejorar el uso que hacen las aplicaciones de los recursos básicos: memoria, cpu, discos,... Se incluyen herramientas para evaluar el gasto energético como PowerTOPObjetivos: 2 6 10
Contenidos:
Teoría
0h
Problemas
0h
Laboratorio
2h
Aprendizaje dirigido
0h
Aprendizaje autónomo
4h
E/S
A partir de la independencia y uniformidad de las operaciones de E/S, profundizar en la virtualización de dispositivos (canales y ports), nivel de abstracción, gestión de diferentes características de compartición y distribución,...Objetivos: 1 2 9 4
Contenidos:
Teoría
2h
Problemas
4h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
7h
Sistema de ficheros
A partir de los conocimientos ya adquiridos en otras asignaturas y el refuerzo de las clases de teoría, profundizar en las operaciones básicas de ficheros y los temas de compartición, replicación, etc. de datos en situaciones actuales como por ejemplo el trabajo con BBDD y/o búsquedas distribuidas.Objetivos: 2 10 9 4
Contenidos:
Teoría
2h
Problemas
6h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
5h
Lab 4: Gestión de E/S en aplicaciones distribuidas: Paso de mensajes
Caracterizar diferentes modos de acceso a datos dependiendo del tipo de aplicación. Conocer herramientas básicas para evaluar y caracterizar el comportamiento y rendimiento de los programas. A partir de pequeñs benchmarks sobre diferentes tamaños de datos de entrada y resultados, ver el comportamiento de diferentes aplicaciones distribuidas (basadas en web, búsquedas, BBDD, ...).Objetivos: 2 6 9 5 4
Contenidos:
Teoría
0h
Problemas
2h
Laboratorio
4h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h
Protección y seguridad
A partir de la información facilitada se resolverán casos de privacidad y se propondrán herramientas y estructuras que garanticen la seguridad del sistema y la privacidad de los objetos de usuario. Se extraerán conclusiones y se hará un replanteamiento (si es necesario) sobre las pautas y consejos de sostenibilidad en este ámbito.Objetivos: 8 10 5
Teoría
1h
Problemas
4h
Laboratorio
1h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h
Sesión de resumen sobre el paralelismo de las aplicaciones
Un articulo o una charla técnica en video servirán para compartir lo aprendido durante el curso en materia de paralelismo y su aplicación a casos concretos en aplicaciones o entornos distribuidos.
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
6h
Aprendizaje autónomo
0h
Metodología docente
La asignatura está concebida sobre el trabajo práctico que el alumno debe desarrollar en las clases de problemas, apoyada sobre una base teórica y respaldada por las pruebas realizadas en el laboratorio.La base teórica se desarrollará en clases organizadas y dirigidas por el profesor y con la participación activa del alumno. A partir de referencias bibliográficas y documentación que el profesor le facilitará, los estudiantes irán profundizando en el uso y la gestión de recursos del sistema que las aplicaciones distribuidas y / o basadas en distribución de datos necesitan para trabajar eficientemente. Para ello eligirán un proyecto al inicio de curso que irán desarrollando en las sucesivas semanas.
Los ejercicios en el laboratorio servirán como base de pruebas para confirmar o modificar las estrategias y propuestas de los proyectos en clase. Se basarán en un guión que el estudiante puede utilizar como soporte.
Al final del curso y en grupos de 4-6 estudiantes presentarán el caso práctico desarrollado.
Método de evaluación
Para evaluar la asignatura se tienen en cuenta las siguientes calificaciones:a. Teoría (NT), que se obtendrá a partir de un caso práctico presentado individualmente a medio curso (Midterm) como acto evaluativo.
b. Laboratorio (NL), que consiste en la evaluación continua del trabajo de las prácticas de laboratorio. El laboratorio sirve como apoyo a las propuestas de la clase de problemas para entender mejor el funcionamiento y justificar los costes.
c. Presentación (Final). En grupos de 3-4 estudiantes, presentarán al final del curso un trabajo en formato póster, artículo o presentación oral, donde se muestre la experiencia adquirida durante el curso.
d. Evaluación de la Competencia transversal: Para cada tema de la asignatura habrá una pregunta basada en criterios de sostenibilidad y compromiso social. Igualmente, en cada laboratorio habrá un punto centrado en la competencia transversal. El peso total será del 10% de la nota final: un 5% se evaluará en teoría y otro 5% en el laboratorio.
Sólo en caso de no asistir a ninguno de los actos evaluativos, la nota final de la asignatura será "No Presentado".
La nota final se obtendrá a partir de las siguientes fórmulas:
NT = Midterm
NL = 1/num.pract * [(NotaPr 1) + ... + (NotaPr n)]
NACTA = (0,20 * NL + 0,40 * NT + 0,40 * Final)
Bibliografía
Básico
-
Operating system concepts essentials
- Silberschatz, A.; Galvin, P.B.; Gagne, G,
John Wiley & Sons,
2011.
ISBN: 978-0-470-88920-6
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003836629706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Operating systems in depth
- Doeppner, T.W,
John Wiley & Sons,
2010.
ISBN: 978-0-471-68723-8
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003850919706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Database System Concepts
- Silberschatz, A.; Korth, H.F; Sudarshan, H.F.K,
McGraw-Hill,
2011.
ISBN: 9780073523323
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003836059706711&context=L&vid=34CSUC_UPC:VU1&lang=ca
Capacidades previas
El estudiante debe tener las capacidades técnicas que le otorgan las asignaturas cursadas previamente además de un nivel de inglés técnico fluido para leer y entender documentación, así como para poder comunicarse oralmente.Las capacidades técnicas las podríamos resumir en:
-Sistemas operativos: Conocimiento de los conceptos básicos de un sistema operativo unido a la programación de aplicaciones utilizando la interfaz genérica de llamadas al sistema impartido en Sistemas Operativos.
- Estructura de Computadores: Conocimiento de los elementos principales de un ordenador, relación de estos elementos entre sí, representación interna de datos y conocimientos de lenguaje máquina.
-Programación: Capacidad de hacer programas complejos y modulares desde cero que incluyan definición de tipo de datos, referencias con punteros y código en ensamblador. Compilación y montaje de ficheros ejecutables.
-Paralelismo: entender la distribución de tareas para conseguir un objetivo. Trabajar concurrentemente y sincronizándose en puntos concretos. Proteger los datos y la fiabilidad de resultados cuando se accede desde distintas tareas.