Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
RTSJ (Real-Time Specification for Java)Universidad ORT Uruguay7 de marzo de 2007
Daniel Tejera Carballa [email protected]
ORT Uruguay © Daniel Tejera, Marzo 2007 2
Índice:� Introducción:
� Sistemas de tiempo real, Motivación y Problemas� RTSJ
� Principios básicos� Áreas principales:
� Gestión de memoria� Relojes y Valores temporales� Planificación� Hebras de tiempo real� Manejo de eventos asíncronos� Transferencia asíncrona de control� Sincronización y Recursos compartidos� Acceso a Memoria Física
� Referencias: RT-JVM, Aplicaciones, Documentación
ORT Uruguay © Daniel Tejera, Marzo 2007 3
Introducción:Sistemas de tiempo real ?
es un sistema informático que:� interacciona repetidamente con su entorno� responde a los estímulos que recibe del mismo dentro de
un plazo de tiempo determinado
Para que el funcionamiento del sistema sea correcto nobasta con que las acciones sean correctas, sino que tienenque ejecutarse dentro del intervalo de tiempo especificado
Tipos: Críticos, Firmes y Acríticos
ORT Uruguay © Daniel Tejera, Marzo 2007 4
Introducción :Donde encontramos STR ?
� Sistemas de control por computador� Sistemas de tratamiento de señales� Sistemas de mando y control� Sistemas de telecomunicaciones� Sistemas de aviónica� Sistemas de control de trenes y automóviles� Sistemas de control de tráfico aéreo� Sistemas multimedia� Electrónica de consumo (teléfonos, PDA …)� etc.� Nota: A menudo se trata de sistemas empotrados
ORT Uruguay © Daniel Tejera, Marzo 2007 5
Introducción:Motivación
Área prometedora para sistemas de tiempo real:� programación orientada a objetos� Simple� Seguro (no existen punteros)� Independencia de Plataforma� Popularidad� Bibliotecas
ORT Uruguay © Daniel Tejera, Marzo 2007 6
Introducción:Problemas de Java en STR
La definición original no es adecuada para tiempo real:� la planificación de actividades concurrentes no está bien
definida� la gestión dinámica de memoria introduce indeterminismo� los mecanismos de sincronización son inadecuados� la medida del tiempo no es suficientemente precisa� otros problemas con excepciones y concurrencia
ORT Uruguay © Daniel Tejera, Marzo 2007 7
Introducción:Java para tiempo real
� NIST (National Institute of Science and Technology) Requirementsfor Real-Time Extensions to Java (1999)� no modificar la sintaxis, coexistencia con aplicaciones
convencionales� Real-Time Java Working Group (J-Consortium)
� Real-Time Core Extension (2000)� basada en una máquina virtual separada para STR
� Java Real-time Experts Group (Sun & otros)� Real-Time Specification for Java (2000-2001)� basada en un máquina virtual extendida para STR� hay varias implementaciones de RTSJ
ORT Uruguay © Daniel Tejera, Marzo 2007 8
Introducción:Principios básicos en RTSJ
� Compatibilidad con versiones anteriores
� Ejecución predecible
� WORA (Write Once, Run Anywhere)
� Definir lo básico ahora y permitir introducircaracterísticas avanzadas en el futuro
� Sin extensiones sintácticas
� Permite variaciones en las implementaciones
ORT Uruguay © Daniel Tejera, Marzo 2007 9
Introducción:Áreas principales
RTSJ mejora Java en las siguientes áreas:
� Gestión de memoria
� Relojes y Valores temporales
� Planificación
� Hebras de tiempo real
� Manejo de eventos asíncronos
� Transferencia asíncrona de control
� Sincronización y recursos compartidos
� Acceso a Memoria Física
ORT Uruguay © Daniel Tejera, Marzo 2007 10
Gestión de Memoria:
� Memoria Heap:� Tradicional en Java� Utiliza un recolección basura, el cual introduce latencias
impredecibles
� Tecnología para incluir recolector de basura de tiempo realno suficientemente avanzada
� RTSJ: extiende modelo gestión de memoria para eliminar elefecto del recolector de basura.� Noción de áreas de memoria� Desalojo del recolector de basura en un tiempo acotado
ORT Uruguay © Daniel Tejera, Marzo 2007 11
Gestión de Memoria:
MemoryArea
HeapMemory ScopedMemory ImmortalMemory
LTMemory VTMemory
ORT Uruguay © Daniel Tejera, Marzo 2007 12
Gestión de Memoria: Reglas
� Reglas para evitar punteros incorrectos producidos porla recolección en memoria restringida.
� Evitar que objetos de mayor tiempo de vida referenciena objetos con tiempo de vida menor.
LimitadoYesYesVariable local
LimitadoYesYesScoped
NoYesYesImmortal
NoYesYesHeap
Ref. a ScopedRef. a ImmortalRef. a HeapReference constraints
ORT Uruguay © Daniel Tejera, Marzo 2007 13
Gestión de Memoria:
� Variables de referencia no pueden tener una vida más largaque la del objeto referenciado.
� Desde memoria Heap o Immortal no se puede hacerreferencia a objetos en Scoped
� Notas:� Variables Estáticas en ImmortalMemory -> No pueden hacer
referencia a objetos en ScopedMemory� IllegalAssignmentError� Las clases de Java no están pensadas para que se ejecuten
en ScopedMemory.
ORT Uruguay © Daniel Tejera, Marzo 2007 14
Gestión de Memoria:Memorias restringidas anidadas
ORT Uruguay © Daniel Tejera, Marzo 2007 15
Gestión de Memoria:Compartiendo memorias restringidas
ORT Uruguay © Daniel Tejera, Marzo 2007 16
Relojes y Valores temporales:
ORT Uruguay © Daniel Tejera, Marzo 2007 17
Planificación:Scheduler
� Java: no se garantiza que una hebra de mayor prioridad se ejecutesiempre primero
� Planificador Scheduler.� Contiene métodos para admisión de hebras, mecanismos de
manejo de eventos asíncronos� Subclase PriorityScheduler:
» Con desalojo basado en prioridades fijas (al menos 28prioridades)
� Implementar algoritmos alternativos de planificación extendiendoclase Scheduler
» Ejemplo: EDF (Earliest Deadline First)
ORT Uruguay © Daniel Tejera, Marzo 2007 18
Planificación:Interfaz Schedulable� Interfaz Schedulable: Objetos planificables (schedulable object)
� RealtimeThreads y AsyncEventHandlers� Parámetros usados por objetos planificables:
� SchedulingParameters � PriorityParameters: Prioridad� MemoryParameters: Limita uso de áreas de memoria� ReleaseParameters � AperiodicParameters,
PeriodicParameters, SporadicParameters» Todos: Costo y Plazo de respuesta» Periódicos: Inicio y Período» Esporádicos: Mínimo tiempo entre dos activaciones» Todos: OverrunHandler y MissHandler
� ProcessingGroupParameters: periodo, costo y plazocompartido
ORT Uruguay © Daniel Tejera, Marzo 2007 19
Planificación:Hebras de tiempo real
ORT Uruguay © Daniel Tejera, Marzo 2007 20
Manejo de eventos Asíncronos:AsyncEvent
ORT Uruguay © Daniel Tejera, Marzo 2007 21
Manejo de eventos Asíncronos:AsyncEventHandler
� Manejadores:� heredan de AsyncEventHandler y sobrescriben el método
handleAsyncEvent() o� pasan a uno de los constructores un objeto que implemente la
interfaz Runnable.� Cuando ocurre un evento los métodos handleAsyncEvent()
o los métodos run() son invocados� Los parámetros temporales, de memoria, y planificación
asociados al manejador controlan la ejecución del mismo� AsyncEventHandler: latencias por asignación de hebra� BoundAsyncEventHandler: sin latencias, permanentemente
asociados a una hebra de tiempo real
ORT Uruguay © Daniel Tejera, Marzo 2007 22
Manejo de eventos Asíncronos:
� Muchos sistemas de tiempo real son equivalentes a unaalarma de reloj o un timer.
� Solución nuevos eventos:� Timer: subclase de AsyncEvent, que representa un objeto
dirigido por tiempo.� OneShotTimer: subclase de Timer
» se dispara una vez, en el momento especifico.� PeriodicTimer: subclase de Timer
» Se dispara en el momento especifico y luego de acuerdo aun intervalo de tiempo.
ORT Uruguay © Daniel Tejera, Marzo 2007 23
Transferencia asíncrona de control:
� Mecanismo que permite a una hebra lanzar una excepciónsobre otra hebra.
� Basada en los siguientes principios� El OP tiene que declarar que está preparado� Los métodos o bloques sincronizados difieren la TAC� TAC tiene semántica de terminación, es decir, una TAC es
una transferencia de control no retornable.
� Las excepciones transferibles se definen heredando deAsynchronouslyInterruptedException
ORT Uruguay © Daniel Tejera, Marzo 2007 24
Transferencia asíncrona de control:� Cada método debe indicar que está preparado para recibir una TAC
poniendo AsynchronouslyInterruptedException en la cláusula throw� Por seguridad:
� Las TAC son diferidas mientras se ejecutan métodos o bloquessincronizados o inicializadores estáticos
� Las TAC puede ser manejadas únicamente dentro de métodosdiferidos
� Cuando se invoca el método java.lang.interrupt() sobre una hebra:� Si hebra está ejecutando un método interrumpible, el método
inmediatamente actuará como si el sistema hubiera lanzado laexcepción.
� Si hebra no está ejecutando método interrumpible, sistema pondrála excepción en estado pendiente para la hebra y la entregarácuando se pase control a método interrumpible
ORT Uruguay © Daniel Tejera, Marzo 2007 25
Sincronización y Recursos compartidos:Inversión de Prioridades ilimitadas
ORT Uruguay © Daniel Tejera, Marzo 2007 26
Sincronización y Recursos compartidos:Colas
� Colas para comunicación entre NHRTs - Threads� WaitFreeWriteQueue: NHRTs utilizan operación write; Threads
utilizan la operación read.
� WaitReadFreeQueue: Threads utilizan operación write; NHRTsutilizan la operación read.
WriteRead No bloqueanteUnsynchronized
BloqueanteSynchronized
WriteRead BloqueanteSynchronized
No BloqueanteUnsynchronized
ORT Uruguay © Daniel Tejera, Marzo 2007 27
Acceso a Memoria Física:
Clases para acceder a memoria física directamente desdecódigo Java:
� RawMemoryAccess:�Objeto que represente conjunto de dirs físicas como una
secuencia de bytes.
� PhysicalMemory:�Objeto que representa un rango de direcciones físicas
en los que el sistema puede almacenar objetos Java
� Estas clases permiten a los programas implementardrivers o mapear memoria a dispositivos de I /O.
ORT Uruguay © Daniel Tejera, Marzo 2007 28
RT-JVM:
� Implementaciones RTSJ:
�TimeSys RTSJ Reference Implementation(JTime ) -- Linux.
�Sun Java SE Real-time (Java RTS ) --Sparc/Solaris.
�IBM/Apogee Aphelion -- Linux.�IBM WebSphere Real Time -- Linux.
�Aicas Jamaica VM -- Linux.�Aonix PERC
ORT Uruguay © Daniel Tejera, Marzo 2007 29
Aplicaciones:
� Dentro del proyecto europeo HIJA:� “Safety Critical Applications and Hard RealTime
Profile for Java: A Case Study in Avionics”� “Flexible Java RealTime Profile for Businesscritical
Systems”� Otros ejemplos:
�RTZen: es un middleware basado en corba 2.3 y rt-corbael cual está implementado usando RTSJ
» http://doc.ece.uci.edu/rtzen/
ORT Uruguay © Daniel Tejera, Marzo 2007 30
Documentación:
� Concurrent and Real-Time Programming in Java�Andy Wellings
� Real-Time Java™ Platform Programming�Peter C. Dibble
� http://www.rtsj.org /