Download Lenguajes para sistemas de tiempo real
Document related concepts
Transcript
UNIVERSIDAD DE CANTABRIA Lenguajes para sistemas de tiempo real Programa de la asignatura Página Web: http://www.ctr.unican.es/asignaturas/lenguajes_str/ Máster en computación Curso 2010-2011 Profesor: J. Javier Gutiérrez (gutierjj@unican.es) GRUPO DE COMPUTADORES Y TIEMPO REAL FACULTAD DE CIENCIAS 4 ©J. Javier Gutiérrez 19/nov/10 Objetivos 1 UNIVERSIDAD DE CANTABRIA • Conocer los principales lenguajes de programación para el desarrollo de aplicaciones con requisitos de tiempo real • Conocer los principales elementos utilizados para programar sistemas de tiempo real - Concurrencia, políticas de planificación, sincronización, gestión del tiempo, etc. • Conocer formas de codificar los principales patrones de diseño que son de utilidad en sistemas de tiempo real • Ser capaz de programar aplicaciones con requisitos de tiempo real usando primitivas de lenguajes de alto nivel • Ser capaz de codificar en estos lenguajes los principales patrones de diseño para sistemas de tiempo real GRUPO DE COMPUTADORES Y TIEMPO REAL FACULTAD DE CIENCIAS ©J. Javier Gutiérrez 19/nov/10 Lenguajes para sistemas de tiempo real 2 UNIVERSIDAD DE CANTABRIA Lenguajes sin soporte para programación de tiempo real • requieren la programación a través de los servicios del sistema operativo, por ejemplo POSIX • C/C++ Lenguajes con soporte para programación de tiempo real • Ada: soportado por instrucciones del propio lenguaje • Java: soportado mediante una API Nos centraremos en Ada GRUPO DE COMPUTADORES Y TIEMPO REAL FACULTAD DE CIENCIAS ©J. Javier Gutiérrez 19/nov/10 3 Ada UNIVERSIDAD DE CANTABRIA El lenguaje Ada se caracteriza por hacer énfasis en la fiabilidad • Es el lenguaje mayoritario en sistemas de seguridad crítica - por ejemplo, aviones, trenes, vehículos espaciales Es uno de los pocos lenguajes que tiene soporte directo para programar sistemas de tiempo real • en los sistemas de tiempo real el software debe responder a tiempo a sucesos que ocurren en el mundo real • muchos sistemas basados en computador son sistemas de tiempo real - vehículos, robots, televisión y vídeo, telecomunicaciones, ... Es un lenguaje moderno que soporta la programación orientada a objetos, la programación concurrente, ... GRUPO DE COMPUTADORES Y TIEMPO REAL FACULTAD DE CIENCIAS ©J. Javier Gutiérrez 19/nov/10 Java 4 UNIVERSIDAD DE CANTABRIA También es un lenguaje moderno que soporta la programación orientada a objetos, la programación concurrente, ... Java tiene soporte opcional para sistemas de tiempo real • RTSJ: Real-time specification for Java Soporta threads con características de tiempo real • planificación por prioridades fijas o EDF Tiene una dificultad importante en la gestión de la memoria • La memoria automática de Java no es apta para sistemas de tiempo real; RTSJ define otras formas de gestión de memoria Existe mucho interés en RTSJ pero escasas aplicaciones, aún GRUPO DE COMPUTADORES Y TIEMPO REAL FACULTAD DE CIENCIAS ©J. Javier Gutiérrez 19/nov/10 Programa 5 UNIVERSIDAD DE CANTABRIA • Parte I: Fundamentos de programación en lenguaje Ada • Parte II: Programación de tiempo real en Ada • Parte III: Patrones básicos de tiempo real GRUPO DE COMPUTADORES Y TIEMPO REAL FACULTAD DE CIENCIAS ©J. Javier Gutiérrez 19/nov/10 6 PARTE I: Fundamentos de programación en lenguaje Ada UNIVERSIDAD DE CANTABRIA 1.1. Elementos básicos del lenguaje Ada 1.2. Estructuras de datos dinámicas 1.3. Modularidad y programación orientada a objetos 1.4. Tratamiento de errores 1.5. Abstracción de tipos mediante unidades genéricas GRUPO DE COMPUTADORES Y TIEMPO REAL FACULTAD DE CIENCIAS ©J. Javier Gutiérrez 19/nov/10 Parte II: Programación de tiempo real en Ada 7 UNIVERSIDAD DE CANTABRIA 2.1 Planificación por prioridades 2.2 Sincronización de tiempo real 2.3 Gestión del tiempo 2.4 Gestión de interrupciones 2.5 Planificación jerárquica 2.6 Restricciones y perfil de Ravenscar GRUPO DE COMPUTADORES Y TIEMPO REAL FACULTAD DE CIENCIAS ©J. Javier Gutiérrez 19/nov/10 Parte III: Patrones básicos de tiempo real 8 UNIVERSIDAD DE CANTABRIA 3.1 Tareas periódicas y aperiódicas 3.2 Esquemas productor/consumidor 3.3 Transacciones lineales GRUPO DE COMPUTADORES Y TIEMPO REAL FACULTAD DE CIENCIAS ©J. Javier Gutiérrez 19/nov/10 9 Actividades UNIVERSIDAD DE CANTABRIA Clases de teoría • Apoyado por el material de la bibliografía Ejercicios • Problemas prácticos breves Prácticas • Se pedirá el código y un breve informe con los resultados GRUPO DE COMPUTADORES Y TIEMPO REAL FACULTAD DE CIENCIAS ©J. Javier Gutiérrez 19/nov/10 10 Sistemas de evaluación UNIVERSIDAD DE CANTABRIA Evaluación continuada de los ejercicios y las prácticas, donde se califica: • Haber resuelto la funcionalidad de caso práctico • Defensa de la solución propuesta • Adecuación de los medios utilizados • Originalidad y elegancia de la solución GRUPO DE COMPUTADORES Y TIEMPO REAL FACULTAD DE CIENCIAS ©J. Javier Gutiérrez 19/nov/10 11 Calendario UNIVERSIDAD DE CANTABRIA Tema Teoría Ejercicios Prácticas Trabajo autónomo 1. Fundamentos de Programación en lenguaje Ada 5 1 5 20 2. Programación de tiempo real en Ada 7 2 10 35 3. Patrones básicos 3 2 5 23 GRUPO DE COMPUTADORES Y TIEMPO REAL FACULTAD DE CIENCIAS ©J. Javier Gutiérrez 19/nov/10 12 Bibliografía Básica UNIVERSIDAD DE CANTABRIA [1] Alan Burns and Andy Wellings. Real-Time Systems and Programming Languages (Fourth Edition) Ada 2005, Real-Time Java and C/Real-Time POSIX . Addison Wesley Longmain, 2009 [2] S.T. Taft, R.A. Duff, R.L. Brukardt, E. Ploedereder, y P. Leroy (Eds.). "Ada 2005 Reference Manual. Language and Standard Libraries. International Standard ISO/IEC 8652:1995(E) with Technical Corrigendum 1 and Amendment 1". LNCS 4348, Springer, 2006. GRUPO DE COMPUTADORES Y TIEMPO REAL FACULTAD DE CIENCIAS ©J. Javier Gutiérrez 19/nov/10 Bibliografía complementaria [3] 13 UNIVERSIDAD DE CANTABRIA Andrew Wellings . Concurrent and Real-time Programming in Java . John Wiley &Sons, 2004 [4] John Barnes . Programming in ADA 2005. Addison Wesley, 2006 [5] Eric J. Bruno , Greg Bollella . Real-Time Java Programming: with Java RTS: With the Java Real-Time System. Prentice Hall, 2009. [6] Peter C. Dibble. Real-Time Java Platform Programming. Booksurge Llc; 2 edition (25 Jun 2008) [7] Bruce Powel Douglass. Real Time Design Patterns: Robust Scalable Architecture for Realtime Systems. Addison Wesley; Pap/Cdr edition (3 Oct 2002) GRUPO DE COMPUTADORES Y TIEMPO REAL FACULTAD DE CIENCIAS ©J. Javier Gutiérrez 19/nov/10 14