La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Cenni di Real-Time JAVA E.Mumolo, DEEI

Presentazioni simili


Presentazione sul tema: "Cenni di Real-Time JAVA E.Mumolo, DEEI"— Transcript della presentazione:

1 Cenni di Real-Time JAVA E.Mumolo, DEEI

2 Real Time Specifications for Java (RTSJ) RTSJ: specifiche ottenute dalle prime specifiche lanciate nella comunità Java, JSR-1 (Inverno 1998) Approvate nel Gennaio Prima implementazione commerciale: estate 2003 Seconda versione di RTSJ: Giugno 2005 Versione IBM: estate 2006 Caratteristiche generali: applicazioni hard e soft real-time Schedulazione real time Task periodici e sporadici, gestione delle deadlines, possibilità data ai task di ridurre il ritardo nella garbage collection La Java Community Process JCP ha accettato una Java Specification Requests (JSR) per RTSJ: lista di miglioramenti e modifche di RTSJJCP

3 Real Time Specifications for Java (RTSJ) Package javax.realtime scaricabile da (gratuito per l'utilizzo con scopi non commerciali). Home page: Le specifiche dettagliano le richieste in 7 aree scheduling, memory management, synchronization, asynchronous event handling, asynchronous transfer of control, asynchronous thread termination, physical memory access

4 Real Time Specifications for Java (RTSJ) Scheduling Funzioni: schedulare secondo la priorità, Aumentare il numero dei livelli di priorità a 28. rendere schedulabili non solo i thread ma tutti gli oggetti che implementano linterfaccia Schedulable e che diventano schedulable object Gli oggetti schedulabili, secondo le specifiche, sono di tre tipi: RealtimeThread, NoHeapRealtimeThread, AsyncEventHandler Ogni schedulable object ha bisogno di tre parametri fondamentali per la sua schedulazione: release parameter: condizioni di inizio esecuzione memory parameter: tipo di memoria scheduling parameter: come ordinare i processi in coda

5 Real Time Specifications for Java (RTSJ) Scheduling Release parameter. Parametri: thread periodico aperiodico Costo computazionale Deadline handler che gestirà i casi in cui le deadline o i costi siano superati. memory parameter: il tipo e quantità di memoria scheduling parameter : Attualmente si consente solo l'assegnazione di 28 livelli diversi di priorità per gli oggetti schedulabili.

6 Real Time Specifications for Java (RTSJ) Scheduling

7 Real Time Specifications for Java (RTSJ) Memory management Classe ScopedMemory: sottoclassi: VTMemory (allocazioni fornite in un tempo variabile) e LTMemory (allocazioni fornite in un tempo lineare proporzionale alla grandezza dell'oggetto)

8 Real Time Specifications for Java (RTSJ) Memory management RTSJ introduce due nuove aree di memoria nelle quali il Garbage Collector agisce in modo predicibile immortal memory: condivisa tra i thread di un'applicazione. Rilascio solo al termine. Scoped memory. Definisce limiti di vita di un oggetto; numero dei riferimenti a quell'area. Se == 0 la memoria viene rilasciata (metodi finalize() di quegli oggetti) public void run() { LTMemory myMem = new LTMemory(1000, 5000); // LTMemory (initialSize, maxSize in byte) myMem.enter(new Runnable() { public void run() { //all'interno di una Scoped Memory prima istanziata! } }; ImmortalMemory.instance().enter(new Runnable() { public void run() { // ogni allocazione di memoria eseguita qua dentro // avverrà nella Immortal memory } };

9 Real Time Specifications for Java (RTSJ) Orologi e tempo RTSJ introduce un realtime clock monotonico (classe Clock, metodo getRealtimeClock() ), Una classe astratta, HighResolutionTime, in grado di salvare e fare operazioni su tempi con risoluzioni fino al nanosecondo. Classi derivate: AbsoluteTime e RelativeTime (intervallo temporale). Esempio di misura di intervallo temporale { AbsoluteTime oldTime, newTime; RelativeTime interval; Clock myclock = Clock.getRealtimeClock(); oldTime = myclock.getTime(); // other computations newTime = myclock.getTime(); interval = newTime.subtract(oldTime); }

10 Real Time Specifications for Java (RTSJ) Eventi asincroni e loro handler Classi eventi: gestiti nel metodo fire() AsyncEvent : rappresenta segnali, interrupt, eventi, Metodo handleAsyncEvent() AsyncEventHandler: oggetti molto simili ai thread. E uno schedulable object Ogni evento è gestito da un handler diverso Un handler può anche gestire più eventi Particolare tipo di AsyncEvent: timer. Lancia un evento (metodo fire()) a tempi stabiliti OneShotTimer PeriodicTimer

11 Real Time Specifications for Java (RTSJ) Eventi asincroni e loro handler

12 Real Time Specifications for Java (RTSJ) Real Time Thread

13 Due nuovi thread: RealtimeThread estende la classe java.lang.Thread. E un oggetto schedulabile NoHeapRealtimeThread estende RealtimeThread. Non può allocare o anche solo creare riferimenti nello heap (GC) In caso di sforamento di una deadline, viene chiamato il deadline miss handler specificato. Metodo waitForNextPeriod() di RealtimeThread: utilizzabile solo con i thread periodici. Mette in wait il thread fino al prossimo periodo Gestione sovraccarichi: handler per gestire un overrun rispetto al costo computazionale prefissato. Sincronizzazione e condivisione risorse Algoritmi introdotti: simple priority inheritance e priority ceiling emulation inheritance


Scaricare ppt "Cenni di Real-Time JAVA E.Mumolo, DEEI"

Presentazioni simili


Annunci Google