Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time...

30
20.02.2003 Seminar: Real-Time Java Matthias Peters Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003

Transcript of Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time...

Page 1: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

SeminarReal-Time Java

High-Resolution Time

Real-Time Threads

Matthias Peters

Wintersemester 2002/2003

Page 2: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

Übersicht

High-Resolution Time•Motivation•Genauigkeit •Haupt- und Unterklassen

Real-Time Threads•Motivation•Features•Erzeugung•Handler

Page 3: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

High-Resolution Time

Motivation• „Zeit“ bedeutendes Merkmal vieler Realzeit-Systeme

• RZ-Systeme benötigen Zeit-Darstellung als– Intervalle

– Zeitpunkte

– Frequenz

und mit– hoher Genauigkeit

– grosser Reichweite

• Gewöhnliche Java-Zeit nicht ausreichend

Page 4: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

High-Resolution Time

• Darstellung durch 84 Bit– 64 Bit für Millisekunden-Wert– 32 Bit für Nanosekunden ( d.h. höchste 12 Bit

sind Millisekunden)

• Reichweite 292 Millionen Jahre

• Genauigkeit Nanosekunden

Page 5: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

High-Resolution Time

• Abstrakte Basis-Klasse– Felder für Milli- und Nanosekunden– Gemeinsame Methoden der Unterklassen

• Unterklassen:– AbsoluteTime– RelativeTime– RationalTime (extends RelativeTime)

Page 6: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

High-Resolution Time

• Klassendiagramm

Page 7: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

High-Resolution Time

AbsoluteTime

Absolute Zeit relativ zu

00:00:00.000 GMT am 1.Januar 1970

Methoden– Rechnen mit relativen Zeiten– Konvertieren von und zu java.util.Date

Page 8: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

High-Resolution Time

RelativeTime

• Zeitspanne, positiv, negativ oder null

• Arithmetische Operationen auf den Zeitspannen

• Zusätzliche Methoden für Unterklasse

RationalTime

Page 9: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

High-Resolution Time

RationalTime extends RelativeTime

• Fügt Frequenz hinzu

• Bestimmte Anzahl Ausführungen in einer Zeitspanne

• Keine zu enge Einschränkung:Betrachtung aufeinanderfolgender Intervalle

Page 10: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

Real-Time Threads

Motivation

• gewöhnliche Threads nicht geeignet für RZ-Systeme– zu wenig Prioritäten möglich– unterliegen dem Garbage-Collecting– unzureichende Behandlung asynchroner Events– unzureichende periodische Benutzbarkeit

Page 11: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

Real-Time Threads

javax.realtime.RealtimeThread

extends

java.lang.Thread

Page 12: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

Real-Time Threads

Real-Time Threads haben zusätzliche Features:– Erweiterte Prioritäten– Scoped Memory– Dienste für asynchr. unterbrochene Exception– Periodisches Scheduling– Jedes nicht-periodische Scheduling, das von der

Plattform angeboten wird

Page 13: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

Real-Time Threads

Weitere Features (auch bei gewöhnlichen Threads):– Striktes Prioritäten Scheduling– Priority inheritance protocol für wechselseitige

Blockierungen

Page 14: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

Real-Time Threads

Erzeugung von Threadsimport javax.realtime.*;

public class Hello1 {

public static void main(String [] args){

RealtimeThread rt= new RealtimeThread(){

public void run() {

System.out.println("Hello RT world");

}

};

rt.start(); }

}

Page 15: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

Real-Time Threads

Erzeugter Thread– Erbt Parameter-Werte der Eltern oder– Bekommt default-Werte durch zuständigen

Scheduler– Unterschied, ob Erzeuger gewöhnlicher oder

Real-Time Thread

Page 16: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

Real-Time Threads

Parameter des Konstruktors

• Scheduling Parameter

• Release Parameter– periodisch – aperiodisch– sporadisch

Page 17: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

Real-Time Threads

Parameter des Konstruktors

• Memory Parameter

• Memory area

• Prozess-Gruppe

• Logic

Page 18: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

Real-Time Threads

Scheduling

RTSJ verlangt:– fixed-priority preemtive Scheduler

– mindestens 28 versch. Prioritäten

10 non-real-time < 28 real-time

Prioritäten Prioritäten

Page 19: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

Real-Time Threads

Optionale Features für periodisches Scheduling:

• feasibility analysis

• deadline aware

• miss handler

• overrun-Handler

• ImportanceParameters

Page 20: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

Real-Time Threads

Periodischer Thread

Release Parameter:• start

• period

• cost

• deadline

• missHandler

• overrunHandler

Page 21: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

Real-Time Threads

Periodischer Thread

Reaktionen bei Overrun oder Miss ohne Handler:– good citizen– desperate outlaw (ignoriert waitForNextPeriod)

Page 22: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

Real-Time Threads

Periodischer Thread

Ausnutzen der Feasibility-Analyse– addIfFeasible– setIfFeasible– setMemoryParametersIfFeasible– ...

zusätzlich der gleiche Satz ohne Admission Control

Page 23: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

Real-Time Threads

Periodischer Thread mit Handler– Scheduler erkennt Overrun frühzeitig und

reagiert– deschedulePeriodic stoppt Thread– OverrunHandler wird aufgerufen und versucht

„Fehler“ zu beheben– Thread wird mit schedulePeriodic fortgesetzt

Page 24: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

Real-Time Threads

OverrunHandler extends AsyncEventHandler– sucht den Grund des Problems– kann Kosten des Threads erhöhen– benutzt die Feasibility-Analyse– terminiert fehlerhafte Threads mittels AIE

(asynchronously interrupted exception)

Page 25: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

Real-Time Threads

MissHandler– ähnlicher Mechanismus, wie der

OverrunHandler– reagiert je nach „Härte“ der Realzeit

der Thread• wird sofort wieder aktiviert und darf mit seiner

Berechnung fortfahren• bekommt AIE und darf in nächster Periode neue

Berechnung starten• darf mit aktueller Berechnung in der nächsten

Periode fortfahren

Page 26: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

Real-Time Threads

MissHandler

• passiv: keine Anstrengungen, weitere Misses zu verhindern

• aggressiv: versucht, Problem zu beheben

feuert AIE auf Thread

• unterschiedliche Auswirkungen auf die Ausführung anderer Threads

Page 27: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

Real-Time Threads

Interaktion mit normalen Threads

• gewöhnliche Threads können ohne Modifikation in der RT-Umgebung laufen

• Performance-Probleme bei Interaktion

• Priority-Boosting nicht JLS-gerecht

Page 28: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

Real-Time Threads

Übernahme von herkömmlichen Java-Code in RTSJ-Plattform

• Realzeit-Möglichkeiten ignorieren und auf RT-Umgebung vertrauen

• alle langsamen Threads finden und „boosten“

• alle langsamen Threads finden und ein RT-Untersystem schaffen mit identischen RT-Threads

• alle gewöhnlichen Threads in RT-Threads konvertieren

Page 29: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

Real-Time Threads

Erschaffen und Benutzen eines anderen Schedulers

• default : fixed-priority preemptive scheduler

• Thread kann beliebigen Scheduler wählen

• RTSJ enthält APIs zum Anpassen– dynamischer Prioritäten-Scheduler

– beliebiger Scheduler von Betriebssystem oder JVM-Entwicklern

• Erschaffen komplett neuer Scheduler nicht in RTSJ

Page 30: Matthias Peters20.02.2003Seminar: Real-Time Java Seminar Real-Time Java High-Resolution Time Real-Time Threads Matthias Peters Wintersemester 2002/2003.

20.02.2003 Seminar: Real-Time Java Matthias Peters

Real-Time Threads

Fazit

• Jeder gewöhnliche Thread kann durch einen Real-Time Thread ersetzt werden

• RT Threads bieten – funktionierende Prioritäten– periodisches Scheduling – priority boosting