Pasar al contenido principal

Sistemas Operativos Avanzados

Créditos
6
Tipos
Obligatoria de especialidad (Tecnologías de la información)
Requisitos
Departamento
AC
Esta asignatura ofrece una visión interna del sistema operativo describiendo los servicios centrales que se ofrecen al middleware junto con su implementación.

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 - Demostrar conocimiento y comprensión del funcionamiento interno de un computador y del funcionamiento de las comunicaciones entre ordenadores.
    • 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 - Evaluar y seleccionar plataformas de producción hardware y software para la ejecución de aplicaciones y de servicios informáticos.
    • 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 - Planificar, concebir, desplegar y dirigir proyectos, servicios y sistemas informáticos en todos los ámbitos, liderando su puesta en marcha, su mejora continua y valorando su impacto económico y social
    • CT8.7 - Controlar versiones y configuraciones del proyecto.
  • Especialidad tecnologías de la información

  • CTI1 - Definir, planificar y gestionar la instalación de la infraestructura TIC de la organizació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 - Diseñar soluciones que integren tecnologías de hardware, software y comunicaciones (y capacidad de desarrollar soluciones específicas de software de sistemas) para sistemas distribuidos y dispositivos de computación ubícua.
    • CTI3.4 - Diseñar software de comunicaciones.
  • Lengua extranjera

  • G3 [Avaluable] - Conocer el idioma inglés con un nivel adecuado de forma oral y por escrito, y con consonancia con las necesidades que tendrán los graduados y graduadas en ingeniería informática. Capacidad de trabajar en un grupo multidisciplinar y en un entorno multilingüe, y de comunicar, tanto por escrito como de forma oral, conocimientos, procedimientos, resultados e ideas relacionadas con la profesión de ingeniero técnico en informática.
    • G3.1 - Comprender y utilizar eficazmente manuales, especificaciones de productos y otra información de carácter técnico escrita en inglés.
  • Objetivos

    1. 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,
    2. 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,
    3. 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,
    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,
    5. 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,
    6. 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,
    7. 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,
    8. Diseñar software de comunicaciones en aplicaciones multiproceso y/o multihilo.
      Competencias relacionadas: CTI3.4, CT6.4, CT7.2, CT8.7, CTI1.4,
    9. Saber utilizar y entender los documentos técnicos en ingles proporcionados con el sistema operativo.
      Competencias relacionadas: G3.1, CT6.3,
    10. Utilizar software de control de versiones.
      Competencias relacionadas: CT6.1, CT6.3, CT8.7,

    Contenidos

    1. 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.
    2. 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.
    3. 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.
    4. 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.
    5. 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


    Introducción

    Adquisición de conocimiento teórico
    Objetivos: 1 2 7
    Contenidos:
    Teoría
    2h
    Problemas
    0h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    2h

    Familiarización con el entorno de trabajo

    Adquisición del conocimiento necesario para desarrollar el laboratorio
    Objetivos: 1 2 4 6 10
    Contenidos:
    Teoría
    0h
    Problemas
    0h
    Laboratorio
    2h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    4h

    Modo protegido

    Adquisición de conocimiento del modo protegido
    Objetivos: 1 2 6 9
    Contenidos:
    Teoría
    2h
    Problemas
    0h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    2h

    Implementación de un punto de entrada al sistema operativo

    Implementación de un punto de entrada al sistema operativo
    Objetivos: 1 6 9 10
    Contenidos:
    Teoría
    0h
    Problemas
    0h
    Laboratorio
    4h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    6h

    Gestión de memoria

    Adquisición de conocimientos
    Objetivos: 1 2
    Contenidos:
    Teoría
    4h
    Problemas
    0h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    4h

    Implementación de las tablas de páginas de sistema y usuario

    Implementación de tablas de páginas para traducir direcciones en modo sistema y en modo usuario
    Objetivos: 1 2 6 9 10
    Contenidos:
    Teoría
    0h
    Problemas
    0h
    Laboratorio
    4h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    4h

    Contexto de ejecución

    Adquisició de conocimientos
    Objetivos: 1 5 6 9
    Contenidos:
    Teoría
    6h
    Problemas
    0h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    6h

    Implementación de gestión de procesos

    Implementación de la creación, destrucción y planificación de procesos / hilos
    Objetivos: 1 2 6 7 9 10
    Contenidos:
    Teoría
    0h
    Problemas
    0h
    Laboratorio
    8h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    10h

    Primer control de teoría


    Objetivos: 1 2 5 6 7
    Semana: 8
    Teoría
    0h
    Problemas
    0h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    0h

    Acceso a dispositivo

    Adquisición de conocimiento
    Objetivos: 1 3 4 9
    Contenidos:
    Teoría
    6h
    Problemas
    0h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    10h

    Proyecto

    Extensión del núcleo del sistema operativo con nuevas características
    Objetivos: 1 2 5 6 7 10
    Contenidos:
    Teoría
    0h
    Problemas
    0h
    Laboratorio
    6h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    12h

    Comunicación entre procesos

    Adquisición de conocimientos
    Objetivos: 1 5 7 8
    Contenidos:
    Teoría
    4h
    Problemas
    0h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    2h

    Implementación de comunicacion entre procesos

    Desarrollo de un servidor optimizado que utilice sockets
    Objetivos: 1 2 8 9 10
    Contenidos:
    Teoría
    0h
    Problemas
    0h
    Laboratorio
    4h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    6h

    Segundo control de teoria


    Objetivos: 1 5 7 8
    Semana: 14
    Teoría
    0h
    Problemas
    0h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    0h

    Examen final de teoria


    Objetivos: 1 2 3 4 5 7
    Semana: 15 (Fuera de horario lectivo)
    Teoría
    0h
    Problemas
    0h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    0h

    Examen final de laboratorio


    Objetivos: 1 2 5 6 7 8 9 10
    Semana: 15 (Fuera de horario lectivo)
    Teoría
    0h
    Problemas
    0h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    0h

    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

    Complementario

    Web links

    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.