Créditos
6
Tipos
Obligatoria de especialidad (Tecnologías de la información)
Requisitos
- Prerrequisito: SO
Departamento
AC
Profesorado
Responsable
- Alex Pajuelo Gonzalez (mpajuelo@ac.upc.edu)
Otros
- Juan José Costa Prats (jcosta@ac.upc.edu)
- Yolanda Becerra Fontal (yolandab@ac.upc.edu)
Horas semanales
Teoría
2
Problemas
0
Laboratorio
2
Aprendizaje dirigido
0
Aprendizaje autónomo
6
Competencias
Competencias técnicas comunes
- CT6.1 - Demostrar conocimiento y tener capacidad para administrar y mantener sistemas, servicios y aplicaciones informáticas.
- 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.
- CT8.7 - Controlar versiones y configuraciones del proyecto.
Especialidad tecnologías de la información
- CTI1.4 - Seleccionar, diseñar, desplegar, integrar, evaluar, construir, gestionar, explotar y mantener las tecnologías de hardware, software y redes, dentro de los parámetros de costo y calidad adecuados.
- CTI3.4 - Diseñar software de comunicaciones.
Lengua extranjera
- G3.1 - Comprender y utilizar eficazmente manuales, especificaciones de productos y otra información de carácter técnico escrita en inglés.
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: CTI3.4, CT6.1, CT6.3, CT6.4, CTI1.4, -
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 la entrada/salida, código de gestión de los procesos y código de carga de ficheros ejecutables.
Competencias relacionadas: CT6.1, CT6.3, CT7.2, CTI1.4, -
Describir el funcionamiento del mecanismo de inserción dinámica de código en un SO real
Competencias relacionadas: CT6.1, CT6.3, CT8.7, CTI1.4, -
Detallar la estructura interna de un módulo de kernel identificando los distintos componentes junto con su relación con la interfaz genérica del SO y el uso de estructuras en memoria para el control de la entrada/salida.
Competencias relacionadas: CT6.1, CT6.3, CT8.7, CTI1.4, -
Conocer la programación multihilo, la problemática del uso compartido de memoria y la implementación de mecanismos de exclusión mutua junto con el soporte hardware necesario.
Competencias relacionadas: CTI3.4, CT6.1, CT6.3, CT6.4, CTI1.4, -
Implementar 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 la entrada/salida, código de gestión de los procesos y código de carga de ficheros ejecutables usando lenguaje C y ensamblador sobre una arquitectura intel x86.
Competencias relacionadas: CTI3.4, CT6.1, G3.1, CT6.3, CT6.4, CT7.1, CT7.2, CT8.7, CTI1.4, -
Comparar y evaluar las diferentes alternativas de implementación de código de gestión de recursos mediante métricas de coste, eficiencia y calidad
Competencias relacionadas: CT6.1, CT6.3, CT7.1, CT7.2, CT8.7, -
Diseñar software de comunicaciones en aplicaciones multiproceso y/o multihilo.
Competencias relacionadas: CTI3.4, CT6.4, CT7.2, CT8.7, CTI1.4, -
Saber utilizar y entender los documentos técnicos en ingles proporcionados con el sistema operativo.
Competencias relacionadas: G3.1, CT6.3, -
Utilizar software de control de versiones.
Competencias relacionadas: CT6.1, CT6.3, CT8.7,
Contenidos
-
Introducción
Este tema explica como el sistema operativo aísla el hardware utilizando los mecanismos de protección que ofrece el procesador. Se discutirán los mecanismos para invocar servicios del sistema operativo junto con el código asociado. -
Gestión de memoria
En este capítulo se tratarán los siguientes temas: espacio de direcciones lógicas del proceso. Sistemas de memoria basados ¿¿en paginación y su soporte hardware. Alternativas de diseño e implementación de sistemas de memoria en sistemas operativos actuales. -
Contexto de ejecución
Este tema discute cual es la información necesaria que debe tener el sistema operativo sobre un flujo de ejecución para poder ejecutarlo, crearlo, destruirlo y multiplexarlo dentro del procesador. Se discutirá la necesidad de un ciclo de vida en la ejecución de programas junto con las estructuras necesarias para implementarlo. Se presentará la problemática de la compartición de memoria a nivel de flujo de ejecución junto con los mecanismos de exclusión mutua ofrecidos tanto por el procesador como el sistema operativo. -
Acceso a dispositivo
Este tema describirá el camino que sigue una petición de acceso desde el modo usuario hasta que llega a un dispositivo en concreto. Se describirán las estructuras necesarias para gestionar el acceso a dispositivos y como se implementa un sistema operativo que sea independiente de los dispositivos físicos. Se presentarán sistemas de ficheros virtuales como abstracción de sistemas de ficheros reales y también sistemas de ficheros para la virtualización de entornos de ejecución como los contenedores. -
Comunicación entre procesos
Este tema describirá los mecanismos ofrecidos por el sistema operativo para comunicar dos o más procesos que se están ejecutando en la misma o diferentes máquinas. Se describirán las implementaciones de pipes, sockets y colas de mensajes. Se presentarán y discutirán las diferentes implementaciones de modelos de concurrencia en servidores junto con los mecanismos ofrecidos por el sistema operativo para optimizar su ejecución.
Actividades
Actividad Acto evaluativo
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h
Teoría
4h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
4h
Metodología docente
La asignatura tendrá principalmente dos tipos de clase: teoría y laboratorios. Las clases de teoría serán para explicar los conceptos, diseños e implementación de los diferentes componentes de un sistema operativo actual. Estas clases se harán con el apoyo de transparencias.Las clases de laboratorio serán semanales. Las primeras 7 semanas se diseñará e implementará el núcleo de un sistema operativo didáctico llamado Zeos. Las siguientes 5 semanas se diseñarán e implementarán nuevas características de éste núcleo. Las últimas 2 semanas, el estudiante implementará algún modelo avanzado de servidor con sockets.
Método de evaluación
La nota final de la asignatura está compuesta por la nota de la competencia técnica (CT), y la nota de la competencia transversal (CTr) mediante la fórmula:Nota Asig = (CT+CTr) * (10/11)
Donde la nota máxima de CTr es 1.
La nota de la CT se puede obtener obtener por evaluación continua (CTc) o excepcionalmente por un examen final (CTf). Se calcula como:
CT = max(CTc, CTf)
La nota CTc está compuesta de varios actos evaluativos: controles de teoría (T) y entregas de laboratorio (L). La fórmula para calcular esta nota es la siguiente:
CTc= 50% T + 50% L
Para calcular T se utilizan dos controles con el mismo peso:
T = 50% T1 + 50% T2
Para calcular L se utiliza una nota de seguimiento (S), un proyecto (P) y un ejercicio de comunicación entre procesos (E):
L = 10% S + 50% P + 40% E
La nota de seguimiento (S) se obtiene de la evaluación que haga el profesor sobre el correcto progreso del laboratorio. La nota del proyecto (P) corresponde al diseño, seguimiento e implementación de un proyecto. La nota del ejercicio (E) corresponde al diseño, seguimiento e implementación de un programa en el que se utilicen mecanismos de comunicación entre procesos.
La nota CTf se calcula mediante un examen de teoría (T) y un examen de laboratorio (L). Para obtener esta nota es obligatorio hacer ambos exámenes. Sólo pueden optar a esta nota los alumnos que no hayan aprobado la evaluación continua o que, habiendo aprobado la evaluación continua, renuncien a esta. La fórmula es la siguiente:
CTf = 50%T + 50%L
La nota de la competencia transversal (CTr) se obtendrá durante todo el cuatrimestre a través de diversas actividades. La calificación de esta competencia tendrá valores A, B, C, D o NA: A corresponde a un nivel excelente, B a un nivel deseado, C a un nivel suficiente, D a un nivel no superado y NA a no evaluado.
Bibliografía
Básico
-
Operating system concepts
- Silberschatz, A.; Galvin, P.B.; Gagne, G,
John Wiley & Sons,
2019.
ISBN: 9781119454083
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004148389706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Advanced Operating Systems Course
- Becerra, Y; Costa, J.; Pajuelo, A,
Complementario
-
Understanding the Linux kernel
- Bovet, D.P.; Cesati, M,
O'Reilly,
2005.
ISBN: 9780596005658
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003076469706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Windows internals: part 1: system architecture, processes, threads, memory management, and mor
- Yosifovich, P.; Ionescu, A.; Russinovich, M.E.; Solomon, D.A,
Microsoft Press,
2017.
ISBN: 9780735684188
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004178279706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Operating systems: internals and design principles
- Stallings, W,
Pearson Education Limited,
2017.
ISBN: 9781292214306
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991001576049706711&context=L&vid=34CSUC_UPC:VU1&lang=ca
Web links
- Pàgina web de l'assignatura http://docencia.ac.upc.edu/FIB/grau/SOA/
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 medio como para leer y entender una documentación.En cuanto a capacidades técnicas las podríamos resumir en:
-En cuanto a sistemas operativos: Conocimiento de los conceptos básicos de un sistema operativo junto con programación de aplicaciones utilizando la interfaz genérica de llamadas al sistema, todo impartido en Sistemas Operativos.
-En cuanto a estructura de computadoras: Conocimiento de los elementos principales de un ordenador, relacion de estos elementos entre sí, representación interna de datos y conocimientos de lenguaje máquina.
-En cuanto a programación: Capacidad de hacer programas complejos y modularitzados desde cero que incluyan definición de tipo de datos, referencias con punteros y código en ensamblador. Compilación y montaje de ejecutables.