1 / 13

Cenni di Real-Time JAVA

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

oni
Download Presentation

Cenni di Real-Time JAVA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Cenni di Real-Time JAVA E.Mumolo, DEEI mumolo@units.it

  2. 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

  3. 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

  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 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

  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) 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! } } };

  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. 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

More Related