Pasar al contenido principal

Sistemas Operativos Avanzados

Créditos
6
Tipos
Obligatoria de especialidad (Tecnologías de la información)
Requisitos
Departamento
AC
Web
http://docencia.ac.upc.edu/FIB/grau/SOA
Esta asignatura ofrece una visión interna del funcionamiento básico de un Sistema Operativo, evaluando la implicación que tiene sobre el rendimiento de las aplicaciones la implementación de diferentes componentes de sistema.

Profesorado

Responsable

Otros

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. Inicialización del sistema
      En este capítulo se explicarán todas las acciones que se hacen para arrancar todos los servicios que ofrece un sistema operativo. También se describirán y discutirán las posibles implementaciones de este proceso en un sistema operativo actual.
    2. Mecanismos de entrada al sistema
      Se describirán y discutirán las posibles implementaciones de mecanismos de entrada al sistema junto con su soporte hardware. Se detallarán los aspectos más importantes de los mecanismos y las dependencias entre el sistema operativo y el hardware. Se comentarán las ventajas de la implementación de técnicas de virtualización actuales. Se presentarán y discutirán las diferentes implementaciones de sistemas operativos actuales.
    3. 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. Diseño e implementación de la memoria virtual. Algoritmos de reemplazo de la memoria virtual. Implementación de memoria compartida. Alternativas de diseño e implementación de sistemas de memoria en sistemas operativos actuales.
    4. Gestión de procesos
      En este capítulo se tratarán los siguientes temas: implementación detallada del bloque de control del proceso. Implementación detallada de la creación de un proceso. Implementación detallada de la finalización de un proceso. Implementación detallada de la carga de un ejecutable. Implementación detallada del cambio de contexto entre procesos. Descripción detallada de las estructuras y algoritmos de planificación de procesos. Implementación de corte de las rutinas de planificación de procesos. Descripción y discusión de las diferentes implementaciones de planificación de procesos en sistemas operativos actuales.
    5. Gestión de la entrada/salida y el sistema de ficheros
      En este capítulo se tratarán los siguientes temas: descripción e implementación de la parte independiente y dependiente del dispositivo. Implementación de un descriptor de dispositivos. Descripción, funcionamiento e implementación de las estructuras relativas a la entrada y salida y el sistema de ficheros. Descripción e implementación de la estructura lógica del sistema de ficheros en disco. Mecanismos de comunicación a través del sistema de ficheros. Mecanismos de comunicación a través de una red. Descripción de la implementación de varios sistemas de ficheros actuales.
    6. Memoria compartida
      En este capítulo se tratarán los siguientes temas: problemática de tener memoria compartida entre varios flujos de ejecución dentro de un proceso. Condiciones de carrera. Zonas de exclusión mutua. Descripción e implementación de mecanismos de exclusión mutua en el acceso a memoria compartida, en concreto, test and set, mutex y semáforos. Descripción, implementación y discusión de mecanismos de exclusión mutua en sistemas operativos actuales.
    7. Extensión del núcleo del sistema
      En este capítulo se tratarán los siguientes temas: concepto, diseño e implementación de módulos del SO. Carga de módulos del kernel en tiempo de inicialización del sistema y en tiempo de ejecución. Descripción del acceso a funcionalidades implementadas en módulos. Descripción de la relación entre módulos y dispositivos físicos y lógicos.

    Actividades

    Actividad Acto evaluativo


    Familiarización con el entorno de trabajo

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

    Rutina de atención a una interrupción

    Desarrollar una rutina de atención al interupció de reloj
    Objetivos: 1 2 6 10
    Contenidos:
    Teoría
    2h
    Problemas
    0h
    Laboratorio
    2h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    8h

    Creación de un punto de entrada al sistema

    Creación de un nuevo punto de entrada al sistema para configuración interna
    Objetivos: 1 2 6 10
    Contenidos:
    Teoría
    2h
    Problemas
    0h
    Laboratorio
    1h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    5h

    Gestión de memoria

    Asimilar los contenidos de este tema
    Objetivos: 1 2 6 7
    Contenidos:
    Teoría
    4h
    Problemas
    0h
    Laboratorio
    3h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    6h

    Gestión de procesos

    Implementación del componente de gestión de procesos (creación, planificador, políticas de planificación, ...)
    Objetivos: 1 2 6 7 9 10
    Contenidos:
    Teoría
    6h
    Problemas
    0h
    Laboratorio
    7h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    8h

    Primer control teoría


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

    Primer control laboratorio


    Objetivos: 1 2 3 4 9 10
    Semana: 8
    Teoría
    0h
    Problemas
    0h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    0h

    Extensión del kernel

    Asimilar los conceptos de este tema
    Objetivos: 1 2 3 4 9
    Contenidos:
    Teoría
    1h
    Problemas
    0h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    6h

    Entrada y salida y sistema de ficheros

    Asimilar los conceptos de este tema
    Objetivos: 1 2 6 7 8 9
    Contenidos:
    Teoría
    5h
    Problemas
    0h
    Laboratorio
    4h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    6h

    Comunicación entre procesos

    Desarrollo de aplicaciones multiproceso / multihilo, con intercambio de información, y evaluación de su rendimiento
    Objetivos: 1 2 5 6 7 8 9 10
    Contenidos:
    Teoría
    2h
    Problemas
    0h
    Laboratorio
    2h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    6h

    Análisis del rendimiento del sistema

    El alumno pensará, decidirá y evaluará varias métricas a nivel de sistema
    Objetivos: 1 2 6 7 9 10
    Contenidos:
    Teoría
    1h
    Problemas
    0h
    Laboratorio
    4h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    5h

    Proyecto


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

    Segundo control teoría


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

    Examen final Teoría


    Objetivos: 1 2 3 4 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

    Examen final laboratorio


    Objetivos: 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á, implementará y evaluará un planificador de procesos en un sistema operativo didáctico llamado Zeos. Las últimas 7 semanas se diseñarán, implementarán y evaluarán nuevas características del sistema operativo.

    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 controles 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 un control (L1), una nota de seguimiento (S) y un proyecto (P):

    L = 40% L1 + 10% S + 50% P

    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 final.

    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.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.