matthias peters20.02.2003seminar: real-time java seminar real-time java high-resolution time...

Post on 05-Apr-2015

116 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related