Java Realtime Systeme Till Steinbach Java Realtime Systeme Realtime und Java RTSJ - The Real Time Specication for Java Real-Time Java im Einsatz Die RTSJ Zusammenfassung Till Steinbach Student der Technischen Informatik Hochschule für Angewandte Wissenschaften Hamburg Informatik-Seminar, 20. November 2007 Zum Vortrag Inhalt Java Realtime Systeme Till Steinbach Realtime und Java Die RTSJ Real-Time Java im Einsatz Zusammenfassung Motivation: Realtime Realtime geht uns alle an... Java Realtime Systeme Till Steinbach Warum müssen wir uns Gedanken über Zeit machen? Einige Aspekte: Realtime und Java Motivation Entstehung Die wichtigsten Spezikationen Die RTSJ Komfort Vorhersagbarkeit Sicherheit Doch warum gerade Java als Programmiersprache? Real-Time Java im Einsatz Zusammenfassung Motivation: Realtime mit Java Write Once, Run Anywhere Java Realtime Systeme Till Steinbach Realtime und Java Bei seiner Vorstellung scheint Java ungeeignet für Echtzeitentwicklungen Motivation Entstehung Die wichtigsten Spezikationen Die Idee Write Once, Run Anywhere Die RTSJ birgt Nebeneekte, die für die Real-Time Java im Einsatz Echtzeitentwicklung ungeeignet sind Genau diese Idee birgt jedoch groÿes Sparpotential im Realtime-Bereich (speziell Embedded) Zusammenfassung Wie Realtime Java entstand Erste Schritte der Anforderungs-Analyse Java Realtime Systeme Bis zum Sommer 1998 sind die Bemühungen zersplittert: Das Department of Defense (DoD) interessiert sich aus Kostengründen für Java als Ada Alternative Das National Institute of Standards and Technology (NIST) leitet zusammen mit der Firma NewMonics einen Ansatz IBM leitet eine Gruppe von Firmen Sun entwickelt an einem internen Realtime Projekt Till Steinbach Realtime und Java Motivation Entstehung Die wichtigsten Spezikationen Die RTSJ Real-Time Java im Einsatz Zusammenfassung Wie Realtime Java entstand Der Zusammenschluss... Requirements Dokument Java Realtime Systeme Till Steinbach Im Juni 1998 nden die Gruppen zusammen: Bildung der Requirements Working Group for Real-time Extensions Ziel ist vorallem ein einfach zu realisierender Ansatz Resultat ist das Dokument Requirements for Real-time Extensions for the Java Platform [9] was Basis aller wichtigen Spezikationen ist. Realtime und Java Motivation Entstehung Die wichtigsten Spezikationen Die RTSJ Real-Time Java im Einsatz Zusammenfassung Wie Realtime Java entstand Die Umsetzung in eine Spezikation Java Realtime Systeme Till Steinbach Realtime und Java Die Gruppen zerspalten sich: Motivation Entstehung Die wichtigsten Spezikationen Gruppe der SUN-Lizenznehmer unter dem Die RTSJ Java Specication Request (JSR) 00001[7] Real-Time Java im Einsatz Die unabhängigen Hersteller als Real-Time Zusammenfassung Java Working Group (RTJWG) Die wichtigsten Spezikationen Java Realtime Systeme Till Steinbach Realtime und Java Real-Time Core Extensions for the Java Platform Real-Time Data Access Real-Time Specication for Java (RTSJ)[6] Motivation Entstehung Die wichtigsten Spezikationen Die RTSJ Real-Time Java im Einsatz Zusammenfassung Entstehung der RTSJ Java Realtime Systeme Till Steinbach Entwickelt durch die Real-Time for Java Expert Group (RTJEG) Java Specication Request (JSR) 00001[7] 1999 erster öentlicher Entwurf Frühjahr 2005 erste Version (1.0.1) Aktuelle Version (1.0.2) seit Frühjahr 2006 arbeit an der Version 1.1 unter JSR 282 Realtime und Java Die RTSJ Aktueller Stand Details der Spezikation Scheduling Memory Management Synchronization Asynchronous Event Handling Asynchronous Transfer of Control Asynchronous Real-Time Thread Termination Physical Memory Access Sonstiges Real-Time Java im Einsatz Zusammenfassung Richtlinien der RTSJ Java Realtime Systeme Till Steinbach Realtime und Java Die RTSJ keine Syntaxerweiterung erhalten der Abwärtskompatiblität erhalten der Portabilität deterministische Ausführung oen für kommende Erweiterungen Aktueller Stand Details der Spezikation Scheduling Memory Management Synchronization Asynchronous Event Handling Asynchronous Transfer of Control Asynchronous Real-Time Thread Termination Physical Memory Access Sonstiges Real-Time Java im Einsatz Zusammenfassung Aufbau Die Schichten in Java und RealTime Java Java Realtime Systeme Till Steinbach Realtime und Java Die RTSJ Aktueller Stand Details der Spezikation Scheduling Memory Management Synchronization Asynchronous Event Handling Asynchronous Transfer of Control Asynchronous Real-Time Thread Termination Physical Memory Access Sonstiges Real-Time Java im Einsatz Zusammenfassung Erweiterungen in der RTSJ Übersicht Java Realtime Systeme Till Steinbach 7 Bereiche erweiterter Semantik: Realtime und Java Scheduling Die RTSJ Memory Management Synchronization Asynchronous Event Handling Asynchronous Transfer of Control Asynchronous Real-Time Thread Termination Physical Memory Access Erweiterungen deniert im Package javax.realtime.* Aktueller Stand Details der Spezikation Scheduling Memory Management Synchronization Asynchronous Event Handling Asynchronous Transfer of Control Asynchronous Real-Time Thread Termination Physical Memory Access Sonstiges Real-Time Java im Einsatz Zusammenfassung Erweiterungen in der RTSJ Scheduling Java Realtime Systeme zwei Arten neuer Threads: RealtimeThread NoHeapRealtimeThread Till Steinbach Realtime und Java (Hard-Realtime geeignet) Keine Unterbrechung durch Garbage Collector Parameter für: Speicherbereich des neuen Threads Startzeit (Start-Verzögerung) Periode Deadline maximale CPU-Zeit OverRun- und MissHandler Code zu den Releaseparametern Code zur Threaderzeugung Die RTSJ Aktueller Stand Details der Spezikation Scheduling Memory Management Synchronization Asynchronous Event Handling Asynchronous Transfer of Control Asynchronous Real-Time Thread Termination Physical Memory Access Sonstiges Real-Time Java im Einsatz Zusammenfassung Realtime Threads Vererbungshierarchie Java Realtime Systeme Till Steinbach Realtime und Java Die RTSJ Aktueller Stand Details der Spezikation Scheduling Memory Management Synchronization Asynchronous Event Handling Asynchronous Transfer of Control Asynchronous Real-Time Thread Termination Physical Memory Access Sonstiges Real-Time Java im Einsatz Zusammenfassung Realtime Threads ReleaseParameter Java Realtime Systeme Till Steinbach Realtime und Java Die RTSJ Aktueller Stand Details der Spezikation Scheduling Memory Management Synchronization Asynchronous Event Handling Asynchronous Transfer of Control Asynchronous Real-Time Thread Termination Physical Memory Access Sonstiges Real-Time Java im Einsatz Zusammenfassung Realtime Threads ReleaseParameter Java Realtime Systeme Till Steinbach Realtime und Java Die RTSJ Aktueller Stand Details der Spezikation Scheduling Memory Management Synchronization Asynchronous Event Handling Asynchronous Transfer of Control Asynchronous Real-Time Thread Termination Physical Memory Access Sonstiges Real-Time Java im Einsatz Zusammenfassung Realtime Threads ReleaseParameter Java Realtime Systeme Till Steinbach Realtime und Java Die RTSJ Aktueller Stand Details der Spezikation Scheduling Memory Management Synchronization Asynchronous Event Handling Asynchronous Transfer of Control Asynchronous Real-Time Thread Termination Physical Memory Access Sonstiges Real-Time Java im Einsatz Zusammenfassung Erweiterungen in der RTSJ Scheduling Java Realtime Systeme Till Steinbach mindestens 28 Prioritäten die über den Java Realtime und Java Prioritäten liegen Die RTSJ strikter PriorityScheduler weitere Scheduling-Algorithmen implementierbar zwei Protokolle zur Verhinderung von Priority Inversion Priority Inheritance Priority Ceiling Emulation Code zur Priority Inversion Avoidance Aktueller Stand Details der Spezikation Scheduling Memory Management Synchronization Asynchronous Event Handling Asynchronous Transfer of Control Asynchronous Real-Time Thread Termination Physical Memory Access Sonstiges Real-Time Java im Einsatz Zusammenfassung Scheduling PriorityScheduler Java Realtime Systeme Till Steinbach Realtime und Java Die RTSJ Aktueller Stand Details der Spezikation Scheduling Memory Management Synchronization Asynchronous Event Handling Asynchronous Transfer of Control Asynchronous Real-Time Thread Termination Physical Memory Access Sonstiges Real-Time Java im Einsatz Zusammenfassung Erweiterungen in der RTSJ Memory Management Java Realtime Systeme Till Steinbach zwei neue Speicherbereiche neben dem HeapMemory: ImmortalMemory Keine Speicherverwaltung Objekte sind bis zum Ende allokiert ScopedMemory Scope existiert bis kein Thread mehr darauf referenziert. verschachtelte Scopes möglich Realtime und Java Die RTSJ Aktueller Stand Details der Spezikation Scheduling Memory Management Synchronization Asynchronous Event Handling Asynchronous Transfer of Control Asynchronous Real-Time Thread Termination Physical Memory Access Sonstiges Real-Time Java im Einsatz Zusammenfassung ScopedMemmory verschachtelte Scopes Java Realtime Systeme Till Steinbach Realtime und Java Die RTSJ Aktueller Stand Details der Spezikation Scheduling Memory Management Synchronization Asynchronous Event Handling Asynchronous Transfer of Control Asynchronous Real-Time Thread Termination Physical Memory Access Sonstiges Real-Time Java im Einsatz Zusammenfassung Erweiterungen in der RTSJ Synchronization Java Realtime Systeme Till Steinbach Realtime und Java Die RTSJ Wait-Free-Queues zur Synchronisation zweier Threads WaitFreeWriteQueue WaitFreeReadQueue WaitFreeDeQueue Aktueller Stand Details der Spezikation Scheduling Memory Management Synchronization Asynchronous Event Handling Asynchronous Transfer of Control Asynchronous Real-Time Thread Termination Physical Memory Access Sonstiges Real-Time Java im Einsatz Zusammenfassung Synchronisation zwischen Realtime und Non-Realtime Threads Java Realtime Systeme Till Steinbach Realtime und Java Die RTSJ Aktueller Stand Details der Spezikation Scheduling Memory Management Synchronization Asynchronous Event Handling Asynchronous Transfer of Control Asynchronous Real-Time Thread Termination Physical Memory Access Sonstiges Real-Time Java im Einsatz Zusammenfassung Erweiterungen in der RTSJ Asynchronous Event Handling Java Realtime Systeme Till Steinbach AsyncEvent AysncEventHandler Realtime und Java Die RTSJ Anbindung an System-Signale und Interrupts möglich Besondere Ausprägung von AsyncEvent sind PeriodicTimer OneShotTimer OverrunHandler RealtimeThread und sind MissHandler für AsyncEventHandler Timer Aktueller Stand Details der Spezikation Scheduling Memory Management Synchronization Asynchronous Event Handling Asynchronous Transfer of Control Asynchronous Real-Time Thread Termination Physical Memory Access Sonstiges Real-Time Java im Einsatz Zusammenfassung AsyncEventHandler Java Realtime Systeme Till Steinbach Realtime und Java Die RTSJ Aktueller Stand Details der Spezikation Scheduling Memory Management Synchronization Asynchronous Event Handling Asynchronous Transfer of Control Asynchronous Real-Time Thread Termination Physical Memory Access Sonstiges Real-Time Java im Einsatz Zusammenfassung Erweiterungen in der RTSJ Asynchronous Transfer of Control Java Realtime Systeme Till Steinbach Realtime und Java genutzt bei Algorithmen die das Ergebnis sequentiell verfeinern. Watchdog überwacht und unterbricht Thread kurz vor Deadline. interrupt() Methode InterruptedException Unterstützung durch erweiterte und Die RTSJ Aktueller Stand Details der Spezikation Scheduling Memory Management Synchronization Asynchronous Event Handling Asynchronous Transfer of Control Asynchronous Real-Time Thread Termination Physical Memory Access Sonstiges Real-Time Java im Einsatz Zusammenfassung Asynchronous Transfer of Control mit Hilfe eines Watchdogs Java Realtime Systeme Till Steinbach Realtime und Java Die RTSJ Aktueller Stand Details der Spezikation Scheduling Memory Management Synchronization Asynchronous Event Handling Asynchronous Transfer of Control Asynchronous Real-Time Thread Termination Physical Memory Access Sonstiges Real-Time Java im Einsatz Zusammenfassung Erweiterungen in der RTSJ Asynchronous Real-Time Thread Termination Java Realtime Systeme Till Steinbach Realtime und Java Die RTSJ Es kann nötig sein Threads vorzeitig zu beenden (Beispiel Nothalt). Realisiert durch interrupt() Methode Aktueller Stand Details der Spezikation Scheduling Memory Management Synchronization Asynchronous Event Handling Asynchronous Transfer of Control Asynchronous Real-Time Thread Termination Physical Memory Access Sonstiges Real-Time Java im Einsatz Zusammenfassung Asynchronous Real-Time Thread Termination sicheres Beenden eines Threads Java Realtime Systeme Till Steinbach Realtime und Java Die RTSJ Aktueller Stand Details der Spezikation Scheduling Memory Management Synchronization Asynchronous Event Handling Asynchronous Transfer of Control Asynchronous Real-Time Thread Termination Physical Memory Access Sonstiges Real-Time Java im Einsatz Zusammenfassung Erweiterungen in der RTSJ Physical Memory Access Java Realtime Systeme Till Steinbach Realtime und Java Die RTSJ neue Klassen: RawMemoryAccess RawMemoryFloatAccess Ermöglicht z.B. direkten Zugri auf Memory Mapped Hardware Code zum Physical Memory Access Aktueller Stand Details der Spezikation Scheduling Memory Management Synchronization Asynchronous Event Handling Asynchronous Transfer of Control Asynchronous Real-Time Thread Termination Physical Memory Access Sonstiges Real-Time Java im Einsatz Zusammenfassung Erweiterungen in der RTSJ Sonstiges Java Realtime Systeme Till Steinbach Realtime und Java Die RTSJ Zeit: Zeitklassen: AbsolutTime, RelativeTime 32Bit Nanosekunden und 64Bit Millisekunden somit 1ns bis ca. 292 Mio. Jahre abgedeckt Genauigkeit abhängig von Betriebsystem Klasse Clock repräsentiert Systemuhr Aktueller Stand Details der Spezikation Scheduling Memory Management Synchronization Asynchronous Event Handling Asynchronous Transfer of Control Asynchronous Real-Time Thread Termination Physical Memory Access Sonstiges Real-Time Java im Einsatz Zusammenfassung Implementationen der RTSJ Java Realtime Systeme Till Steinbach Auswahl von RTSJ implementationen: Realtime und Java TimeSys RTSJ Reference Die RTSJ Implementation[10] - X86/Linux Real-Time Java im Einsatz Java Real-Time System (Java RTS)[8] Sparc/Solaris IBM/Apogee Aphelion[2] - Linux IBM WebSphere Real Time[5] - Linux Aicas JamaicaVM[1] - div. Plattformen (nur mit Option -strictRTSJ) Implementationen In Aktion Zusammenfassung Real-Time Java in Aktion Einige Beispiele Java Realtime Systeme Till Steinbach Realtime und Java Die RTSJ Film: (nicht in diesem PDF enthalten) Java gesteuerter Industrieroboter Rockey7 Marsrover Projekt EADS Barracuda Drohne Real-Time Java im Einsatz Implementationen In Aktion Zusammenfassung Zusammenfassung und Fazit Stärken Java Realtime Systeme Till Steinbach Realtime und Java Die RTSJ kann die Entwicklung von Realtime-Systemen wesentlich vereinfachen bewährte Java-Technologien lassen sich einfach mit der RTSJ kombinieren Realtime-Entwicklung mit Java spart Zeit Java Realtime Code ist einfach wiederverwendbar Die RTSJ Real-Time Java im Einsatz Zusammenfassung Zusammenfassung und Fazit Schwächen Java Realtime Systeme Till Steinbach Realtime und Java Stellenweise ist die Portabilität nicht vollständig zu gewährleisten Realtime-Java reicht nicht an die Performance von C oder C++ heran Nicht alle Java-Klassen sind Bedingungslos im Realtime-Bereich einsetzbar. Die RTSJ Real-Time Java im Einsatz Zusammenfassung Zusammenfassung und Fazit Ausblick Java Realtime Systeme Till Steinbach Realtime und Java Die RTSJ Der Anteil an Java Realtime Systemen wird deutlich Real-Time Java im Einsatz zunehmen Zusammenfassung In naher Zukunft wird sich Java im Realtime-Bereich nicht gegen C oder C++ durchsetzen Zusammenfassung und Fazit Java Realtime Systeme Till Steinbach Realtime und Java Die RTSJ Der Java Slogen: Write once, run anywhere sollte bei Verwendung der RTSJ Write once carefully, run anywhere conditionally heiÿen (James Gosling) Real-Time Java im Einsatz Zusammenfassung Fragen und Diskussion Java Realtime Systeme Till Steinbach Realtime und Java Die RTSJ Welche Fragen kann ich euch noch beantworten? Habt Ihr eine Meinung zum Thema Java auf Realtime-Systemen? Real-Time Java im Einsatz Zusammenfassung Java Realtime Systeme Till Steinbach 5 Anhang Code-Beispiele ReleaseParameter RealtimeThread-Erzeugung Priority Inversion Avoidance Wait Free Queues Raw Memory Access Literatur Glossar Glossary46 Anhang Code-Beispiele ReleaseParameter RealtimeThreadErzeugung Priority Inversion Avoidance Wait Free Queues Raw Memory Access Literatur Literatur Glossary Code-Beispiele ReleaseParameter Java Realtime Systeme Till Steinbach Anhang 1 RelativeTime 0) ; 2 // startZeit = Millisek . , RelativeTime RelativeTime ; 4 / / Muss periode = RelativeTime 30 , Zurück 0) ; deadline kleiner RelativeTime ( new = als new RelativeTime ( RelativeTime ( Periode maximaleKosten = // M a x i m a l e 1000 , Nanosek . ; 3 new 0) 50 , 0) sein new −Z e i t CPU 100 , RelativeTime ( Code-Beispiele ReleaseParameter RealtimeThreadErzeugung Priority Inversion Avoidance Wait Free Queues Raw Memory Access Literatur Literatur Glossary Code-Beispiele RealtimeThread-Erzeugung 1 MeinMissHandler 2 MeinOverrunHandler 3 // 4 ReleaseParameter new mh = oh = Java Realtime Systeme MeinMissHandler () ; new MeinOverrunHandler () ; bei Anhang periodischen deadline , releaseParameter = cost , 5 // 6 ReleaseParameter mh , aperiodischen 8 9 // Thread Threads releaseParameter = rtt = new mh , oh ) ; RealtimeThread ( PriorityParameters (30) , 10 releaseParameter ) ; 11 // T h r e a d 12 rt . start () ; Zurück cost , erzeugen RealtimeThread new period , oh ) ; AeriodicParameter ( deadline , 7 Code-Beispiele ReleaseParameter RealtimeThreadErzeugung Priority Inversion Avoidance Wait Free Queues Raw Memory Access Literatur Threads PeriodicParameter ( starttime , bei Till Steinbach starten // // Prioritaet ReleaseParameter 30 Literatur Glossary Code-Beispiele Priority Inversion Avoidance Java Realtime Systeme Till Steinbach 1 MyClass myClass = new MyClass ( ) ; Anhang 2 3 // Mit Priority Inheritance 4 PriorityInheritance pi = Protokoll PriorityInheritance . instance () ; 5 M o n i t o r C o n t r o l . s e t M o n i t o r C o n t r o l ( myClass , p i ) ; 6 7 // Mit PriorityCeilingEmulation bei Prioritaet Literatur Glossary 23 pce = new 8 PriorityCeilingEmulation 9 M o n i t o r C o n t r o l . s e t M o n i t o r C o n t r o l ( myClass , pce ) ; P r i o r i t y C e i l i n g E m u l a t i o n (23) ; Zurück Code-Beispiele ReleaseParameter RealtimeThreadErzeugung Priority Inversion Avoidance Wait Free Queues Raw Memory Access Literatur Code-Beispiele Wait Free Queues Java Realtime Systeme Till Steinbach Anhang 1 WaitFreeReadQueue myQueue = new WaitFreeReadQueue ( 2 myHardRealtimeThread , blockierender // Nicht Schreibe −T h r e a d 3 myThread , // lesender Thread 4 150 , // maximale Laenge 5 memArea ) ; // Speicherbereich der Zurück Queue Code-Beispiele ReleaseParameter RealtimeThreadErzeugung Priority Inversion Avoidance Wait Free Queues Raw Memory Access Literatur Literatur Glossary Code-Beispiele Raw Memory Access Java Realtime Systeme Till Steinbach Anhang 1 / / LPT1 auslesen 2 RawMemoryAccess rma = new RawMemoryAccess ( 3 P h y s i c a l M e m o r y M a n a g e r . IO_PAGE , / / 4 0 x378 , // A d r e s s e 5 3) ; // L a e n g e Speicherart byte 6 Zurück dataOnLPT1 = rma . g e t B y t e ( 0 ) Code-Beispiele ReleaseParameter RealtimeThreadErzeugung Priority Inversion Avoidance Wait Free Queues Raw Memory Access Literatur Literatur Glossary [1] aicas GmbH, Karlsruhe: JamaicaVM. http://www.aicas.com/jamaica.html, Abruf: 24.10.2007 [2] Apogee: Aphelion. http://www.apogee.com/aphelion.html, Abruf: 18.08.2007 [3] Brich ; Hinsken ; Krause ; Siemens AG (Hrsg.): Echtzeitprogrammierung in Java. Erlangen und München, Deutschland : Publicis MCD Verlag, 2000. ISBN 3895781533 [4] Dibble, P. C.: Real-Time Java Platform Programming. Palo Alto, USA : Sun Microsystems Inc, 2002. ISBN 0130282618 [5] International Business Machines Corp.: WebSphere Real Time. http://www.ibm.com/software/webservers/realtime/. Version: 2006, Abruf: 24.10.2007 [6] Real-Time for Java Expert Group: Real-Time Specication for Java. Sun Microsystems Inc. http://www.rtsj.org/specjavadoc/book_index.html. Version: 1.0.2 - 2006, Abruf: 10.08.2007 [7] Real-Time for Java Expert Group: JSR-000001 Real-time Specication for Java. Sun Microsystems Inc. http://jcp.org/ aboutJava/communityprocess/mrel/jsr001/index2.html. Version: Final Release 3 - 12 Jul, 2006, Abruf: 18.08.2007 [8] Sun Microsystems Inc: Java SE Real-Time. Sun Microsystems Inc. http://java.sun.com/javase/technologies/realtime/, Abruf: 18.08.2007 Java Realtime Systeme Till Steinbach Anhang Literatur Glossar Glossary [9] The Requirements Working Group for Real-time Extensions for the Java Platform: Requirements for Real-time Extensions for the Java Platform. National Institute of Standards and Technology. http:// www.nist.gov/itl/div897/ctg/real-time/rtj-final-draft.pdf. Version: Special Publication 500-243 - September 1999, Abruf: 23.08.2007 [10] TimeSys: RTSJ Reference Implementation. TimeSys. http://www.timesys.com/java/, Abruf: 25.10.2007 [11] Wellings, A. : Concurrent and Real-Time Programming in Java. West Sussex, England : John Wiley & Sons Ltd., 2004. ISBN 047084437X Department of Defense (DoD) Verteidigungsministerium der Vereinigten Staaten - http://defenselink.mil/, p. 5. Java Community Process (JCP) http://jcp.org/. Java Real-Time System (Java RTS) http://java.sun.com/javase/technologies/realtime/, p. 32. Java Specication Request (JSR) , p. 7. National Institute of Standards and Technology (NIST) Bundesbehörde der Vereinigten Staaten für Standardisierungsprozesse - http://nist.gov, p. 5. Java Realtime Systeme Till Steinbach Anhang Literatur Glossary D J N R Real-Time for Java Expert Group (RTJEG) , p. 9. Real-Time Java Working Group (RTJWG) seit 1999 teil des Java Realtime Systeme J-Consortiums, p. 7. Till Steinbach Real-Time Specication for Java (RTSJ) http://rtsj.org, p. 8. Anhang Literatur Glossary D J N R