Sistemas Operativos Avanzados

Usted está aquí

Créditos
6
Tipos
Obligatoria de especialidad (Tecnologías de la información)
Requisitos
  • Prerrequisito: SO
  • Esta asignatura no se puede matricular si has aprobado: SO2
Departamento
DAC
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.

Profesores

Responsable

  • Alex Pajuelo Gonzalez ( )

Otros

  • Juan Jose Costa Prats ( )
  • Yolanda Becerra Fontal ( )

Horas semanales

Teoría
2
Problemas
0
Laboratorio
2
Aprendizaje dirigido
0.4
Aprendizaje autónomo
5.6

Competencias

Competencias Técnicas

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.

Competencias Técnicas de cada especialidad

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.

Competencias Transversales

Lengua extranjera

  • G3 - 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
2h

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
4h

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
2h
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
3h
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
Tipo: examen de teoría
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
6h

Primer control laboratorio


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

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
6h
Problemas
0h
Laboratorio
0h
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
5h
Problemas
0h
Laboratorio
6h
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

Segundo control de laboratorio


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

Segundo control teoría


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

Examen final Teoría


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

Examen final laboratorio


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

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 implementarán y evaluarán aplicaciones multiproceso / multihilo en Linux.

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 también se utilizan dos controles con los mismos pesos y una nota de seguimiento (S):

L = 35% L1 + 35% L2 + 30% S

La nota de seguimiento (S) se obtiene de la evaluación que haga el profesor sobre el correcto progreso del laboratorio.

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ásica:

Complementaria:

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.