High-Resolution Time

Werbung
Seminar
Real-Time Java
Wintersemester 2002/2003
High-Resolution Time
Real-Time Threads
Matthias Peters
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 RZSysteme
–
–
–
–
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 Threads
import 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
Prioritäten
20.02.2003
<
28 real-time
Prioritäten
Seminar: Real-Time Java
Matthias Peters
Real-Time Threads
Optionale Features für periodisches
Scheduling:
•
•
•
•
•
20.02.2003
feasibility analysis
deadline aware
miss handler
overrun-Handler
ImportanceParameters
Seminar: Real-Time Java
Matthias Peters
Real-Time Threads
Periodischer Thread
Release Parameter:
•
•
•
•
•
•
20.02.2003
start
period
cost
deadline
missHandler
overrunHandler
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 RTUmgebung vertrauen
• alle langsamen Threads finden und „boosten“
• alle langsamen Threads finden und ein RTUntersystem 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 JVMEntwicklern
• 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
20.02.2003
Seminar: Real-Time Java
Matthias Peters
Herunterladen