RTSJ (Real-Time Specification for Java) Universidad ORT Uruguay 7 de marzo de Daniel Tejera Carballa

RTSJ (Real-Time Specification for Java) Universidad ORT Uruguay 7 de marzo de 2007 Daniel Tejera Carballa [email protected] Índice:     ORT Ur

0 downloads 92 Views 409KB Size

Recommend Stories


Programación Java SE 7
Programación Java SE 7 : 5 Este curso, que es el segundo de una serie de dos cursos que tratan de la plataforma Java Standard Edition 7 (Java SE 7),

1997, de 7 de marzo,
Miercoles 26 marzo 1997 BOE num. 73 6328 REAL DECRETO 331/1997, de 7 de marzo, por el que se establece el certificado de profesionafidad de la ocup

Dr. Luis Quintana Tejera Universidad Autónoma del Estado de México
Estudio parcial de Veinte poemas de amor y una canción desesperada de Pablo Neruda. El otro ante la mirada del amor: la palabra al servicio de la comu

Java y Java++
{POO}. Clases. Objetos. Herencia. Multihilo. Multithread

Story 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

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.