Download Lenguajes para sistemas de tiempo real

Document related concepts

Erlang wikipedia , lookup

Alice (lenguaje de programación) wikipedia , lookup

Objeto inmutable wikipedia , lookup

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 ([email protected])
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