Cenni di RealTime JAVA E Mumolo DEEI mumolounits

  • Slides: 13
Download presentation
Cenni di Real-Time JAVA E. Mumolo, DEEI mumolo@units. it

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

Real Time Specifications for Java (RTSJ) n n n RTSJ: specifiche ottenute dalle prime

Real Time Specifications for Java (RTSJ) n n n 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: q applicazioni hard e soft real-time q Schedulazione real time q 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) n n n Package javax. realtime scaricabile da

Real Time Specifications for Java (RTSJ) n n n Package javax. realtime scaricabile 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 q q q q scheduling, memory management, synchronization, asynchronous event handling, asynchronous transfer of control, asynchronous thread termination, physical memory access

Real Time Specifications for Java (RTSJ) Scheduling n Funzioni: q q q schedulare secondo

Real Time Specifications for Java (RTSJ) Scheduling n Funzioni: q q q 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: Realtime. Thread, No. Heap. Realtime. Thread, Async. Event. Handler Ogni schedulable object ha bisogno di tre parametri fondamentali per la sua schedulazione: n n n 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 n Release parameter. Parametri: q q q

Real Time Specifications for Java (RTSJ) Scheduling n Release parameter. Parametri: q q q n n 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 : q Attualmente si consente solo l'assegnazione di 28 livelli diversi di priorità per gli oggetti schedulabili.

Real Time Specifications for Java (RTSJ) Scheduling

Real Time Specifications for Java (RTSJ) Scheduling

Real Time Specifications for Java (RTSJ) Memory management Classe Scoped. Memory: sottoclassi: VTMemory (allocazioni

Real Time Specifications for Java (RTSJ) Memory management Classe Scoped. Memory: 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 n RTSJ introduce due nuove aree

Real Time Specifications for Java (RTSJ) Memory management n RTSJ introduce due nuove aree di memoria nelle quali il Garbage Collector agisce in modo predicibile q immortal memory: condivisa tra i thread di un'applicazione. Rilascio solo al termine. Immortal. Memory. instance(). enter(new Runnable() { public void run() { // ogni allocazione di memoria eseguita qua dentro // avverrà nella Immortal memory } }; q 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 my. Mem = new LTMemory(1000, 5000); // LTMemory (initial. Size, max. Size in byte) my. Mem. enter(new Runnable() { public void run() { //all'interno di una Scoped Memory prima istanziata! } } };

Real Time Specifications for Java (RTSJ) Orologi e tempo n RTSJ introduce un q

Real Time Specifications for Java (RTSJ) Orologi e tempo n RTSJ introduce un q n n n realtime clock monotonico (classe Clock , metodo get. Realtime. Clock() ), Una classe astratta, High. Resolution. Time, in grado di salvare e fare operazioni su tempi con risoluzioni fino al nanosecondo. Classi derivate: Absolute. Time e Relative. Time (intervallo temporale). Esempio di misura di intervallo temporale { Absolute. Time old. Time, new. Time; Relative. Time interval; Clock myclock = Clock. get. Realtime. Clock(); old. Time = myclock. get. Time(); // other computations new. Time = myclock. get. Time(); interval = new. Time. subtract(old. Time); }

Real Time Specifications for Java (RTSJ) Eventi asincroni e loro handler n Classi eventi:

Real Time Specifications for Java (RTSJ) Eventi asincroni e loro handler n Classi eventi: gestiti nel metodo fire() q q Async. Event : rappresenta segnali, interrupt, eventi, Metodo handle. Async. Event() Async. Event. Handler: oggetti molto simili ai thread. E’ uno schedulable object n n n Ogni evento è gestito da un handler diverso Un handler può anche gestire più eventi Particolare tipo di Async. Event: timer. Lancia un evento (metodo fire()) a tempi stabiliti q q One. Shot. Timer Periodic. Timer

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

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

Real Time Specifications for Java (RTSJ) Real Time Thread

Real Time Specifications for Java (RTSJ) Real Time Thread

Real Time Specifications for Java (RTSJ) Real Time Thread n Due nuovi thread: q

Real Time Specifications for Java (RTSJ) Real Time Thread n Due nuovi thread: q q n n Realtime. Thread estende la classe java. lang. Thread. E’ un oggetto schedulabile No. Heap. Realtime. Thread estende Realtime. Thread. 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 wait. For. Next. Period() di Realtime. Thread: 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 q Algoritmi introdotti: simple priority inheritance e priority ceiling emulation inheritance