Accesos directos a las distintas zonas del curso
Ir a los contenidos
Ir a menú navegación principal
Ir a menú pie de página
Subject code : 6802306-
Introducción El primer módulo se estructura en cuatro temas/unidades. Se explican los fundamentos de los sistemas de tiempo real y las características a tener en cuenta en su desarrollo. Se define el modelo de fallo y el concepto de tolerancia a fallos, indicando algunas técnicas para su resolución. Se termina el módulo explicando cómo se gestionan las excepciones (posibles errores) desde el punto de vista del lenguaje de programación y del propio sistema operativo (en tiempo real o no)
Contextualización Estos contenidos deberán ser los primeros que el alumno tendrá que estudiar, y en este orden, antes de abordar contenidos más específicos sobre el diseño y programación de sistemas de tiempo real.
Los objetivos generales de este módulo son: 1. Introducir los conceptos de sistemas de tiempo real, su definición y ejemplos concretos de este tipo de sistemas 2. Revisar el modelo de desarrollo de un sistema de tiempo real en cuanto a análisis de requisitos, diseño y pruebas 3. Introducir el concepto de fallo y de disponibilidad, para abordar la fiabilidad de los sistemas en tiempo real usando los conceptos anteriores. 4. Revisar de manera detallada el concepto de fallo, incidiendo en los fallos provocados por el software (denominados excepciones) y la manera de gestionar dichos fallos.
Resultados de aprendizaje asociados a los contenidos Los resultados de aprendizaje que se pretenden conseguir son los siguientes: - Comprender el concepto de sistema de tiempo real (Tema/Unidad 1) - Ser capaz de analizar el modelo de interacción/desarrollo de un sistema de tiempo real (Tema/Unidad 1) - Entender y asimilar el concepto de fallo y disponibilidad, así como revisar las diferentes alternativas que existen para generara un sistema de tiempo real disponible y fiable (Tema/Unidad 2) - Comprender los modelos y mecanismos de gestión de errores (excepciones) producidos en entidades software de tiempo real (Tema/Unidad 3). - Reconocer las situaciones específicas que necesitan servicios redundantes en la implementación de aplicaciones informáticas de tiempo real y aplicar las técnicas y algoritmos adecuados (Tema/Unidad 3).
Bibliografía básica Los contenidos correspondientes al primer módulo se encuentran definidos en su totalidad en el libro base de la asignatura, disponible en español y en inglés (versión actualizada). Se recomienda el uso del libro en inglés, por estar actualizado:
- Real Time Systems and Programming Languages. Alan Burns y Andy Wellings. Editorial: Addison-Wesley, 4ª Edición (2009). ISBN: 978-0-321-41745-9 - Sistemas de tiempo real y lenguajes de programación. Alan Burns y Andy Wellings. Editorial: Addison-Wesley, 3ª Edición (2003). ISBN: 84-7829-058-3
Dado que existen dos ediciones del libro, en la tabla mostrada a continuación se muestra la correlación de los elementos de estudio de cada unidad con cada versión del libro.
Materiales complementarios Como ejercicios de autoevaluación se proponen cuestiones y soluciones a dichas cuestiones, accesibles a través del Curso virtual. Estos ejercicios de autoevaluación se usarán como entrenamiento caro a la parte correspondiente del examen presencial (que se empleará para evaluar lo conocimientos teóricos adquiridos en este módulo).
Introducción Este módulo explica los conceptos de ejecución concurrente, que se basa en el modelo de procesos/tareas/hebras. Se indica cómo se implementa la concurrencia en los tres modelos de programación (Java RT, Ada y C/Real Time POFIX) para pasar a describir como se implementan los mecanismos de comunicación y sincronización mediante variables compartidas y mensajes. A continuación, se introduce el concepto de acción atómica y la forma de implementarlas en los tres modelos de programación propuestos. Se finaliza el módulo explicando la gestión de acceso a los recursos y el modelo de interbloqueo.
Contextualización En el contexto de la asignatura, los objetivos de este módulo son:
1. Entender el modelo de ejecución concurrente y los elementos subyacentes: hebras/procesos y tareas. 2. Profundizar en el soporte existente para distintos lenguajes de programación de los elementos de la programación concurrente. 3. Comprender los mecanismos de compartición de información básicos, soportados por los sistemas operativos que ejecutan el software de tiempo real. 4. Conocer como se definen acciones atómicas, como conjunto de acciones agrupadas que se ejecutan de manera única y atómica (no divisible). 5. Entender el modelo de interbloqueo de procesos.
Resultados de aprendizaje asociados a los contenidos Los resultados de aprendizaje para cada este módulo son los siguientes: - Asimilar el modelo de ejecución concurrente y los elementos asociados (Unidad/Tema 4) - Ser capaz de emplear estructuras como monitores, regiones críticas y semáforos para el control de acceso a información compartida (Unidad/Tema 5) - Manejar la estructura de mensajes de los sistemas operativos como medio específico para compartir información entre tareas/procesos (Unidad/Tema 6) - Analizar la estructura de los mensajes POSIX y generarlos mediante programación de los mismos (Unidad/Tema 6) - Entender el concepto de acción atómica, siendo capaz de generar modelos de transferencia asíncronas en varios lenguajes (Unidad/Tema 7) - Asimilar el modelo de interbloqueo y sus implicaciones en el desarrollo de modelos de ejecución concurrente (Unidad/Tema 8)
Bibliografía básica Los contenidos correspondientes al segundo módulo se encuentran definidos en su totalidad en el libro base de la asignatura, disponible en español y en inglés (versión actualizada). Se recomienda el uso del libro en inglés, por estar actualizado:
Capítulo 9, excepto el punto 9.6 y en el punto 9.3
no se debe tener en cuenta el apartado sobre OCCAM2.
Material complementario Como ejercicios de autoevaluación se proponen cuestiones y soluciones a dichas cuestiones, accesibles a través del Curso virtual. Estos ejercicios de autoevaluación se usarán como entrenamiento cara a la parte correspondiente del examen presencial (que se empleará para evaluar lo conocimientos teóricos adquiridos en este módulo).
Adicionalmente, las PED1 y PED2 (instalación/configuración de un sistema operativo en tiempo real y una implementación de RTSJ) necesitan de material complementario que se ubicará en el curso virtual: - Entorno virtual para la distribución/instalación del sistema operativo en tiempo real (RTLinux basado en Debian). - Extensiones necesarias para el desarrollo de la práctica (librerías Java), correspondientes a la implementación de referencia de RTSJ. - Cualquier otro material necesario (documentación, software adicional, etc.).
Introducción Este módulo explica los mecanismos de temporización que se pueden aplicar en un sistema de tiempo real, tomando como base el reloj del sistema en tiempo real. Una vez definidos los conceptos necesarios (timeouts, ámbitos temporales, etc.) se explica la forma de categorizar las tareas para su inclusión y priorización en la programación temporal del sistema. Una vez hecho esto, se pueden aplicar varias estrategias de planificación basadas en prioridades o tiempos de ejecución. Se termina el módulo mostrando los detalles específicos de programación sobre entornos de ejecución asociados a los mecanismos de entrada/salida de dichos entornos.
1. Entender la noción de tiempo en un sistema de tiempo real y los ámbitos temporales asociados. 2. Comprender el modelo de planificación de tareas de un sistema de tiempo real, y las diferentes alternativas existentes en los análisis de los tiempos de respuesta. 3. Profundizar en los mecanismos de programación de bajo nivel, como son el acceso al hardware de E/S y tareas del núcleo del sistema operativo.
Resultados de aprendizaje asociados a los contenidos Los resultados de aprendizaje para cada este módulo son los siguientes: - Analizar la definición de reloj de un sistema de tiempo real y ser capaz de definir los elementos asociados al tratamiento de un reloj en un sistema de tiempo real: retardos, timeouts, etc. (Unidad/Tema 9) - Ser capaz de implementar pruebas de planificabilidad de conjuntos de procesos, mejorando la eficiencia de la ejecución de los procesos en cuanto al aseguramiento del cumplimiento de los tiempos de ejecución (Unidad/Tema 10) - Analizar los problemas derivados del modelo de interbloqueo en la planificación de un conjunto de procesos con prioridades de ejecución especificadas como requisito (Unidad/Tema 10) - Manejar los mecanismos de E/S proporcionados por los mecanismos de bajo nivel y su implicación en la planificabilidad de tareas (Unidad/Tema 11)
Bibliografía básica Los contenidos correspondientes al tercer módulo se encuentran definidos en su totalidad en el libro base de la asignatura, disponible en español y en inglés (versión actualizada). Se recomienda el uso del libro en inglés, por estar actualizado:
Material complementario Como ejercicios de autoevaluación se proponen cuestiones y soluciones a dichas cuestiones, accesibles a través del Curso virtual. Estos ejercicios de autoevaluación se usarán como entrenamiento caro a la parte correspondiente del examen presencial (que se empleará para evaluar lo conocimientos teóricos adquiridos en este módulo).
Adicionalmente, para la PED3 (desarrollo de una aplicación en tiempo real con RTSJ) se ubicará todo el material complementario en el curso virtual que sea necesario (documentación, software adicional, etc.). En cuanto a la PED4 (que se corresponde con el desarrollo de la integración de código en tiempo real con código no en tiempo real) necesita material complementario que se ubicará en el curso virtual: - Extensiones necesarias para el desarrollo de la práctica (librerías Java), correspondientes al entorno de ejecución de tiempo no real. - Cualquier otro material necesario (documentación, software adicional, etc.).
El temario se estructura en tres módulos que agrupan los contenidos básicos a desarrollar en la asignatura: Introducción a los sistemas de tiempo real, Concurrencia y aspectos relativos (acceso a la información en los STR) y Temporización de tareas (ejecución y planificación e tareas en STR). Se han planteado en este orden para conseguir que el alumno, de forma gradual, pueda ir adquiriendo los conocimientos básicos necesarios para superar la asignatura. Dichos conocimientos básicos se demostrarán en el desarrollo de la práctica final, donde se aplicarán dichos conceptos en un sistema de tiempo real basado en Linux (RTLinux) y el desarrollo de ejemplos prácticos de programación en sistemas de tiempo real usando la especificación Real Time Specification for Java (RTSJ) y una de las implementaciones de referencia (IBM Real Time).
Para el estudio de la asignatura, se debe tener en cuenta que la disponibilidad del libro en español puede ser limitada y, por tanto, se recomienda usar la edición actualizada en inglés (además de ser una versión más reciente y corregida). En esta guía de estudio, para cada módulo, se muestra la correlación entre el temario y el material de estudio para ambas ediciones del libro. Se debe tener en cuenta que el uso del libro en inglés, le ayudará también a adquirir una de las competencias básicas en la titulación: Competencia general CG12 de “Comprensión de textos técnicos en lengua inglesa”.