Upload
klothilda-moris
View
116
Download
1
Tags:
Embed Size (px)
Citation preview
20.02.2003 Seminar: Real-Time Java Matthias Peters
SeminarReal-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
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
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
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)
20.02.2003 Seminar: Real-Time Java Matthias Peters
High-Resolution Time
• Klassendiagramm
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
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
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
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
20.02.2003 Seminar: Real-Time Java Matthias Peters
Real-Time Threads
javax.realtime.RealtimeThread
extends
java.lang.Thread
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
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
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(); }
}
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
20.02.2003 Seminar: Real-Time Java Matthias Peters
Real-Time Threads
Parameter des Konstruktors
• Scheduling Parameter
• Release Parameter– periodisch – aperiodisch– sporadisch
20.02.2003 Seminar: Real-Time Java Matthias Peters
Real-Time Threads
Parameter des Konstruktors
• Memory Parameter
• Memory area
• Prozess-Gruppe
• Logic
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
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
20.02.2003 Seminar: Real-Time Java Matthias Peters
Real-Time Threads
Periodischer Thread
Release Parameter:• start
• period
• cost
• deadline
• missHandler
• overrunHandler
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)
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
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
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)
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
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
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
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
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
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