En la asignatura de Conceptos Avanzados de Sistemas Operativos (CASO), el estudiante aprenderá a diseñar, implementar y analizar sistemas operativos, el entorno de ejecución que ofrecen y evaluar su calidad. Los contenidos de la asignatura cubren los temas de arquitecturas donde se ejecuta un sistema operativo, desde entornos móviles hasta servidores, soporte hardware necesario para el SO, tipo de servicios que ofrecen los sistemas operativos, requerimientos de las aplicaciones y tiempo real, control de la energía, apoyo al paralelismo, desarrollo de aplicaciones sobre el SO, técnicas de virtualización y gestión de la garantía y seguridad del sistema y las aplicaciones. La evaluación de la asignatura se hará mediante tres controles parciales a lo largo del cuatrimestre, un examen de laboratorio y un examen final.
Profesorado
Responsable
Xavier Martorell Bofill (
)
Otros
Jordi Fornes de Juan (
)
Horas semanales
Teoría
2
Problemas
0
Laboratorio
2
Aprendizaje dirigido
0
Aprendizaje autónomo
6
Competencias
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.
Especialidad ingeniería de computadores
CEC2 - Analizar y evaluar arquitecturas de computadores incluyendo plataformas paralelas y distribuidas, y desarrollar y optimizar software para dichas plataformas.
CEC2.1
- Analizar, evaluar, seleccionar y configurar plataformas hardware para el desarrollo y la ejecución de aplicaciones y servicios informáticos.
CEC2.3
- Desarrollar y analizar software para sistemas basados en microprocesadores y sus interfícies con usuarios y otros dispositivos.
CEC2.4
- Diseñar e implementar software de sistema y de comunicaciones.
CEC2.5
- Diseñar e implementar sistemas operativos.
CEC3 - Desarrollar y analizar hardware y software para sistemas empotrados y/o de muy bajo consumo.
CEC3.1
- Analizar, evaluar y seleccionar las plataformas hardware y software más adecuadas para el soporte de aplicaciones empotradas y de tiempo real.
CEC4 - Diseñar, desplegar, administrar y gestionar redes de computadores, y gestionar la garantía y la seguridad de los sistemas informáticos.
CEC4.1
- Diseñar, desplegar, administrar y gestionar redes de computadores.
CEC4.2
- Demostrar comprensión, aplicar y gestionar la garantía y la seguridad de los sistemas informáticos.
Competencias Transversales
Aprendizaje autónomo
G7 [Avaluable] - Detectar carencias en el propio conocimiento y superarlas mediante la reflexión crítica y la elección de la mejor actuación para ampliar este conocimiento. Capacidad para el aprendizaje de nuevos métodos y tecnologías y versatilidad para adaptarse a nueves situaciones.
G7.3
- Aprendizaje autónomo: Capacidad de planificación y organización del trabajo personal. Aplicar los conocimientos adquiridos a la realización de una tarea en función de la pertenencia y la importancia, decidiendo la manera de llevarla a cabo y el tiempo que hay que dedicarle y seleccionando las fuentes de información más adecuadas. Identificar la importancia de establecer y mantener contactos con los compañeros de estudios, con el profesorado y con profesionales (networking). Identificar fórums de información sobre ingeniería TIC, sus avances y su impacto en la sociedad (IEEE, asociaciones, etc.).
Objetivos
Trabajar con las abstracciones del sistema operativo
Competencias relacionadas:
CEC2.3,
CEC2.4,
G7.3,
CTI1.4,
Subcompetences:
Gestión de memoria
Gestión de procesos y flujos
Acceso a archivos
Gestión de las comunicaciones
Analisis y evaluacion de las abstracciones del sistema operativo
Competencias relacionadas:
CEC2.1,
CEC3.1,
G7.3,
CTI1.4,
Usar las herramientas de desarrollo de sistemas operativos
Competencias relacionadas:
CEC2.3,
G7.3,
Subcompetences:
Compiladores, enlazadores y otras herramientas de apoyo
Saber usar en cada momento las herramientas de apoyo del hardware al sistema operativo
Competencias relacionadas:
CEC2.1,
CEC2.4,
CEC3.1,
CTI1.4,
Subcompetences:
Gestión de la memoria, TLB y tablas de páginas
Herramientas de sincronización
Utilizar las técnicas de evaluación del rendimiento de sistemas operativos
Competencias relacionadas:
CEC2.1,
CEC3.1,
G7.3,
CTI1.4,
Subcompetences:
Evaluación de la sobrecarga que introducen los servicios de sistema
Soporte del sistema operativo a los sistemas de ficheros
Competencias relacionadas:
CEC2.3,
CEC2.5,
CEC2.4,
G7.3,
Subcompetences:
Herramientas de apoyo a la integridad de datos: journaling
Conocer, saber usar e implementar gestores de dispositivos dentro del sistema operativo
Competencias relacionadas:
CTI3.4,
CEC2.5,
CEC2.4,
G7.3,
Subcompetences:
Dispositivos de almacenamiento
Dispositivos de interacción con el usuario
Dispositivos de comunicaciones
Implementar y evaluar soporte para tiempo real
Competencias relacionadas:
CEC2.1,
CEC3.1,
G7.3,
CTI1.4,
Implementar y evaluar soporte de virtualización
Competencias relacionadas:
CEC2.3,
CEC2.5,
CEC2.4,
G7.3,
CTI1.4,
Usar el soporte del sistema operativo para dispositivos móviles
Competencias relacionadas:
CTI3.4,
CEC2.1,
CEC4.1,
CEC3.1,
G7.3,
CTI1.4,
Subcompetences:
Abstracciones del Sistema Operativo
En este tema, se presentan las abstracccions que los sistemas operativos ofrecen al nivel usuario y las aplicaciones: procesos y flujos, regiones de memoria, almacenes de datos y entrada / salida, gestión de dispositivos. Se hacen comparaciones entre diferentes abstracciones que se ofrecen como equivalentes y se determina cuáles son más apropiadas
Herramientas de desarrollo de los sistemas operativos
Se presentan las herramientas necesarias para el desarrollo de los sistemas operativos: compilador y enlazador, gestores de protocolos, etc.
Herramientas de hardware de apoyo al sistema operativo
Herramientas básicas que ofrece el hardware para poder implementar los sistemas operativos.
Herramientas de sincronizacion
Uso de las herramientas de sincronizacion que ofrece el hardware en el sistema operativo y como se ofrecen eficientemente al nivel de las aplicaciones.
Evaluación del rendimiento del sistema operativo
Determinar la sobrecarga que introduce el uso de cada abstracción del sistema operativo y evaluación del rendimiento del sistema
Sistemas de archivos
Gestión de datos en los sistemas de ficheros y herramientas de apoyo a su integridad
Gestión de dispositivos
Representación de los dispositivos dentro de los sistemas operativos, tratamiento de los diferentes dispositivos: disco, red, interacción con el usuario.
Desarrollo de gestores de dispositivos
Introducción de nuevos gestores de dispositivos en el sistema operativo
Soporte del sistema operativo para aplicaciones para tiempo real
Herramientas y librerÃas de soporte a aplicaciones que den respuesta en tiempo real
Soporte del sistema operativo en los entornos virtualizados
Implementación de máquinas virtuales con / sin apoyo del hardware. Opciones de implementación de màquinas virtuales nativas y no nativas (en entornos físicamente diferentes).
Soporte del sistema operativo para dispositivos móviles
Se presentan las diferencias entre un sistema sobremesa / portátil y el sistema operativo que apoya dispositivos móviles
Gestión de una instalacion informatica
Gestionar una instalacion informatica desde su planificación y compra, instalacion, puesta en marcha, y mantenimiento
Actividades
ActividadActo evaluativo
Abstracciones del Sistema Operativo
El estudiante participa activamente en la sesión, trabajando en grupo sobre los temas presentados, y en las comparativas de posibles implementaciones.
Teoría: Descripción y comparativa de las abstracciones que ofrecen los sistemas operativos
Laboratorio: Entrada en el entorno del laboratorio y realización de prácticas comparando varias maneras de crear procesos y flujos, gestionar memoria, etc.
Aprendizaje autónomo: Completar el estudio de las abstracciones del sistema operativo
Estudio de las herramientas de desarrollo de sistemas operativos, participación en las discusiones en clase y realización de las prácticas de compilacion del sistema operativo
Teoría: Descripción de las herramientas de desarrollo
Laboratorio: Compilacion del sistema operativo
Aprendizaje autónomo: Compilacion de los procesos de sistema, init, servidores de red, etc.
Participación en las discusiones sobre el uso del soporte del hardware dentro del sistema operativo para la implementación del espacio de direcciones y gestión de memoria, y de la sincronización
Teoría: Descripción de los mecanismos del hardware de apoyo a los espacio de direcciones y la sincronización
Laboratorio: Implementación de sincronización usando las técnicas que ofrece el hardware
Aprendizaje autónomo: Comparativa de facilidad de uso y rendimiento de las herramientas de sincronización
En esta prueba se evalúa el conocimiento y la práctica adquirida en los 3 primeros temas de la asignatura. Consiste en una prueba escrita realizada en horas de clase.
Semana:
5
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h
Evaluación del rendimiento del sistema operativo
Participación en las discusiones sobre las técnicas de evaluación del rendimiento y las alternativas que existen para obtener medidas fiables y de bajo impacto en la ejecucion del sistema
Teoría: Técnicas de evaluación del rendimiento del sistema
Laboratorio: Medida y evaluación del rendimiento del sistema
Aprendizaje autónomo: Técnicas de evaluación basadas en contadores de eventos del hardware
En esta prueba se evalúa el conocimiento y la práctica adquiridos en las 9 primeras semanas de la asignatura, incluyendo los temas 1 a 7. Objetivos:123467 Semana:
10
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h
Apoyo a aplicaciones de tiempo real
Participación en las discusiones sobre las alternativas de implementación del soporte en tiempo real
Teoría: Soporte para tiempo real
Laboratorio: Instalación del soporte para tiempo real en el sistema operativo
Aprendizaje dirigido: Polï¿¿ticas de planificaciï¿¿n para tiempo real
Aprendizaje autónomo: Análisis del rendimiento de servicios por tiempo real, comparándolos con los servicios tradicionales
Soporte del sistema operativo para dispositivos móviles
Participación en las discusiones sobre las alternativas de sistemas operativos para dispositivos móviles
Teoría: Soporte del sistema operativo para dispositivos mï¿¿viles
Laboratorio: Evaluación del rendimiento de un sistema para dispositivo móvil y comparación con el de un sistema operativo tradicional
Aprendizaje autónomo: Comparaciï¿¿n de los servicios que ofrecen los sistemas para dispositivos mï¿¿viles con los servicios ofrecidos por sistemas tradicionales
En esta prueba se evalúa el conocimiento y la práctica adquiridos durante todo el curso. Objetivos:1234678910511 Semana:
14
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h
Examen de laboratorio
En esta prueba se realizan ejercicios prácticos de forma individual, relacionados con todos los temas vistos en la asignatura. Se puede disponer de libros y apuntes. Objetivos:1234678910511 Semana:
14
Teoría
0h
Problemas
0h
Laboratorio
2h
Aprendizaje dirigido
0h
Aprendizaje autónomo
8h
Examen final
Para aquellos estudiantes que necesiten superar los límites de la asignatura o quieran subir la nota, este examen se realizará con posterioridad a la finalización de las clases Objetivos:1234678910511 Semana:
15 (Fuera de horario lectivo)
Teoría
3h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
12h
Metodología docente
El profesor expone los temas propuestos en las sesiones de teoría, a la vez que abre discusiones entre y con los estudiantes sobre diversos temas. Cada sesion de teoría incluye la propuesta de diversos temas relacionados con la clase, que los estudiantes trabajarán de forma autónoma por su compte.Les sesiones de laboratorio siguen los temas expuestos en la teoría y sirven para consolidar el uso y evaluación de las abstracciones y servicios del sistema operatiu.Per fin de trabajar en la competencia de aprendizaje autónomo, durante el curso se realizarán 2 actividades de trabajo personal, relacionadas con los servicios que ofrecen los sistemas operativos. Los temas de las actividades se definirán durante el curso. Serán por ejemplo, la introducción de nuevas llamadas al sistema, la interacción entre sistemas Android y Linux, añadir servicios al sistema operativo a través de librerías, evaluación del rendimiento del sistema, etc.
Método de evaluación
La competencia transversal de aprendizaje autónomo se evalúa a partir de los informes de seguimiento entregados durante el curso y pesa un 10% de la nota final.
Las competencias técnicas se evalúan a partir de la nota de teoría (40%) y el examen de laboratorio (50%).
La teoria se evalúa a partir de los controles parciales y el examen final. La nota de los 3 controles parciales se calcula a partir de la media ponderada de las 3 pruebas, con los siguientes pesos: 25, 25 y 50%. Si la nota ponderada de los 3 controles parciales es igual o superior a 6.0, la asistencia al examen final será opcional.
En caso que un estudiante se presente al examen final, su nota de teoria será la más alta que se obtenga entre la nota obtenida en el examen final y la media ponderada de los controles parciales.
- Sistemas operativos a nivel de usuario
- Nivel básico sobre la estructura interna del sistema operativo
- Lenguajes de programación C y C ++
- Mecanismos de compilacion y enlace
- Conceptos básicos de arquitectura de computadores