130 likes | 306 Views
Cenni di Real-Time JAVA. E.Mumolo, DEEI mumolo@units.it. Real Time Specifications for Java (RTSJ). RTSJ: specifiche ottenute dalle prime specifiche lanciate nella comunità Java, JSR-1 (Inverno 1998) Approvate nel Gennaio 2002. Prima implementazione commerciale: estate 2003
E N D
Cenni di Real-Time JAVA E.Mumolo, DEEI mumolo@units.it
Real Time Specifications for Java (RTSJ) • RTSJ: specifiche ottenute dalle prime specifiche lanciate nella comunità Java, JSR-1 (Inverno 1998) • Approvate nel Gennaio 2002. 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 RTSJ
Real Time Specifications for Java (RTSJ) • Package javax.realtimescaricabile da www.timesys.com, (gratuito per l'utilizzo con scopi non commerciali). • Home page: http://www.rtsj.org/ • 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
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 l’interfaccia 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
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.
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)
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) ImmortalMemory.instance().enter(new Runnable() { public void run() { // ogni allocazione di memoria eseguita qua dentro // avverrà nella Immortal memory } }; 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! } } };
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); }
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
Real Time Specifications for Java (RTSJ)Eventi asincroni e loro handler
Real Time Specifications for Java (RTSJ) Real Time Thread • Due nuovi thread: • RealtimeThread estende la classe java.lang.Thread. E’ unoggetto 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