Download RTSJ (Real-Time Specification for Java) Universidad ORT Uruguay

Document related concepts
no text concepts found
Transcript
RTSJ (Real-Time Specification for Java)
Universidad ORT Uruguay
7 de marzo de 2007
Daniel Tejera Carballa
[email protected]
Índice:
ORT Uruguay
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
© Daniel Tejera, Marzo 2007
2
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 no
basta con que las acciones sean correctas, sino que tienen
que ejecutarse dentro del intervalo de tiempo especificado
Tipos: Críticos, Firmes y Acríticos
ORT Uruguay
© Daniel Tejera, Marzo 2007
3
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
4
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
5
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
6
Introducción:
Java para tiempo real
NIST (National Institute of Science and Technology) Requirements
for 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
7
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 introducir
características avanzadas en el futuro
Sin extensiones sintácticas
Permite variaciones en las implementaciones
ORT Uruguay
© Daniel Tejera, Marzo 2007
8
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
9
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 real
no suficientemente avanzada
RTSJ: extiende modelo gestión de memoria para eliminar el
efecto 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
10
Gestión de Memoria:
MemoryArea
HeapMemory
ScopedMemory
LTMemory
ORT Uruguay
ImmortalMemory
VTMemory
© Daniel Tejera, Marzo 2007
11
Gestión de Memoria: Reglas
Reglas para evitar punteros incorrectos producidos por
la recolección en memoria restringida.
Evitar que objetos de mayor tiempo de vida referencien
a objetos con tiempo de vida menor.
Reference constraints
Ref. a Heap
Ref. a Immortal
Ref. a Scoped
Heap
Yes
Yes
No
Immortal
Yes
Yes
No
Scoped
Yes
Yes
Limitado
Variable local
Yes
Yes
Limitado
ORT Uruguay
© Daniel Tejera, Marzo 2007
12
Gestión de Memoria:
Variables de referencia no pueden tener una vida más larga
que la del objeto referenciado.
Desde memoria Heap o Immortal no se puede hacer
referencia 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
13
Gestión de Memoria:
Memorias restringidas anidadas
ORT Uruguay
© Daniel Tejera, Marzo 2007
14
Gestión de Memoria:
Compartiendo memorias restringidas
ORT Uruguay
© Daniel Tejera, Marzo 2007
15
Relojes y Valores temporales:
ORT Uruguay
© Daniel Tejera, Marzo 2007
16
Planificación:
Scheduler
Java: no se garantiza que una hebra de mayor prioridad se ejecute
siempre 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 28
prioridades)
Implementar algoritmos alternativos de planificación extendiendo
clase Scheduler
» Ejemplo: EDF (Earliest Deadline First)
ORT Uruguay
© Daniel Tejera, Marzo 2007
17
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 plazo
compartido
ORT Uruguay
© Daniel Tejera, Marzo 2007
18
Planificación:
Hebras de tiempo real
ORT Uruguay
© Daniel Tejera, Marzo 2007
19
Manejo de eventos Asíncronos:
AsyncEvent
ORT Uruguay
© Daniel Tejera, Marzo 2007
20
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
21
Manejo de eventos Asíncronos:
Muchos sistemas de tiempo real son equivalentes a una
alarma 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 a
un intervalo de tiempo.
ORT Uruguay
© Daniel Tejera, Marzo 2007
22
Transferencia asíncrona de control:
Mecanismo que permite a una hebra lanzar una excepción
sobre 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 de
AsynchronouslyInterruptedException
ORT Uruguay
© Daniel Tejera, Marzo 2007
23
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 bloques
sincronizados o inicializadores estáticos
Las TAC puede ser manejadas únicamente dentro de métodos
diferidos
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 la
excepció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
24
Sincronización y Recursos compartidos:
Inversión de Prioridades ilimitadas
ORT Uruguay
© Daniel Tejera, Marzo 2007
25
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.
Bloqueante
Synchronized
Read
Write
No bloqueante
Unsynchronized
WaitReadFreeQueue: Threads utilizan operación write; NHRTs
utilizan la operación read.
No Bloqueante
Unsynchronized
ORT Uruguay
Read
Write
© Daniel Tejera, Marzo 2007
Bloqueante
Synchronized
26
Acceso a Memoria Física:
Clases para acceder a memoria física directamente desde
có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 implementar
drivers o mapear memoria a dispositivos de I /O.
ORT Uruguay
© Daniel Tejera, Marzo 2007
27
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
28
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-corba
el cual está implementado usando RTSJ
» http://doc.ece.uci.edu/rtzen/
ORT Uruguay
© Daniel Tejera, Marzo 2007
29
Documentación:
Concurrent and Real-Time Programming in Java
Andy Wellings
Real-Time Java™ Platform Programming
Peter C. Dibble
http://www.rtsj.org/
ORT Uruguay
© Daniel Tejera, Marzo 2007
30