6. Design von Echtzeitsystemen
Transcrição
6. Design von Echtzeitsystemen
Übersicht 1. 2. 3. 4. 5. Einführung Design-Prozesse Modellierungs-Sprachen Analyse Zusammenfassung Vorlesung Real-Time Systems 6. Design von Echtzeitsystemen Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 1 1. Einführung 2 1. Einführung Neben diesen "klassischen" Designaspekten müssen für Echtzeitsysteme insbesondere die folgenden Punkte im Detail berücksichtigt werden: Dieses Kapitel gibt einen Einblick in ausgewählte Aspekte des Systementwurfs. Der Fokus liegt hier auf den speziellen Echtzeitaspekten. Allgemeine Aspekte des Systementwurfs: • Identifizieren von harten und weichen Echtzeitbedingungen • Strukturieren der Anwendung in eine Anzahl konkurrierender Tasks • Festlegen der korrekten Timing-Bedingungen für jede Task • Wahl einer geeigneten Plattform, mit der die gegebenen Zeitbedingungen garantiert werden können • Analyse der Umgebung • physikalische Gegebenheiten, insbesondere bzgl. Timing • Analyse / Auswahl der Sensoren und Aktuatoren bezüglich • Reaktionsgeschwindigkeit, Verzögerungen etc. • Umgebungsbedingungen (Temperaturbereich, Feuchtigkeit, …) • Ausfallsicherheit • Analyse / Verifikation der Timing-Eigenschaften des realisierten Systems • Response Times, Execution Times, Signallaufzeiten, etc. • Anwendung, Anforderungen • Was will der Kunde? • Welche Anwendung soll erstellt werden? • Funktionen • Welche Funktionen soll die Anwendung haben? • Architektur • Was wird in SW, was wird in HW realisiert? • Wie soll die SW strukturiert sein? • Welche HW-Architektur wird benutzt? • Prozesse • Wie kommt man von den Anforderungen zur Realisierung durch eine konkrete HW- und SW-Architektur? • Modellierung • Wie werden Anforderungen, Funktionen, Architektur, etc. formal beschrieben? Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 3 Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 4 1 1. Einführung Anforderungen (Requirements) an ein System gliedern sich in: 2. Prozesse Ein Design-Prozess für den Systementwurf teilt den gesamten Entwurf in kleinere, überschaubare Phasen auf. Dazu existiert eine Reihe von strukturierten Methoden (s.u.). Echtzeitaspekte müssen dabei in jeder Phase des Entwurfsprozesses berücksichtigt werden, von Anfang an. Je später ein Timing-Fehler in einem System bemerkt wird, desto teurer wird seine Behebung (vgl. Pathfinder Beispiel). Das Aufspüren und Debuggen eines Timing-Fehlers kann, im Gegensatz zu funktionalen Fehlern, extrem schwierig und aufwändig sein. • Funktionale Anforderungen • Anforderungen an die Funktionen, die das System realisieren soll: z.B. Berechnungen, Datenspeicherung, Benutzeroberfläche. • Nichtfunktionale Anforderungen • Timing-Anforderungen ß hier relevant • Antwortzeiten, Rechenzeiten, Abtastperioden, Jitter, … • Zuverlässigkeit • Reliability (Ausfallsicherheit), Safety, Security • Maintainability: Reparaturzeit nach einem Fehler • Availability: Betriebszeit / (Betriebszeit + Reparaturzeit) • Kosten • Ressourcenverbrauch • Termine Idealerweise sollte daher jederzeit im Entwurfsprozess klar sein, • welche Timing-Anforderungen an das System existieren, • welche Timing-Eigenschaften das System hat bzw. haben wird. Dadurch kann kontinuierlich – d.h. nicht erst am fertigen System – verifiziert werden, ob das System mit seinen Eigenschaften die gegebenen Anforderungen erfüllen kann. Im Folgenden werden einige gängige Prozessmodelle kurz vorgestellt. Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 5 2. Prozesse Das Wasserfallmodell Entwurf Vorteile: • Einfach verständlich • Wenig Managementaufwand • Klare Abgrenzung der Phasen Entwurf von Komponenten Implementierung Programmieren der Komponenten Integration Zusammensetzen der Komponenten zum Gesamtsystem Test gegen Anforderungen Test Fortschritt 6 2. Prozesse Das Wasserfallmodell ist ein "dokumentgetriebenes" Modell, d.h. am Ende jeder Phase ("Meilenstein") steht ein fertiges Dokument bzw. Sourcecode. Anforderungsermittlung Analyse Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt Installation Rückkopplung Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt Inbetriebnahme Einsatz Nachteile: • Klare Abgrenzung der Phasen ist unrealistisch • Testen erfolgt erst sehr spät => Fehler werden zu spät erkannt • Beteiligung des Kunden nur in der Anfangsphase; Änderungen stellen einen Neuauftrag dar. Wartung 7 Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 8 2 2. Prozesse Das Spiralmodell 2. Prozesse Das Spiralmodell ist eine Weiterentwicklung des Wasserfallmodells. Das Vorgehen ist risikogetrieben, d.h. die Minimierung des Restrisikos steht im Mittelpunkt. Vorteile: • Sehr universell einsetzbar. In den Zwischenschritten kann das Spiralmodell auch andere Vorgehensmodelle verwenden. • Kostenkontrolle • Anforderungen können sich während der Entwicklung ändern • Unterstützt SW-Wiederverwendung Nachteil: • Hoher Managementaufwand; für kleine Projekte weniger geeignet Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 9 2. Prozesse Das V-Modell AnforderungsAnalyse SystemIntegration SystemDesign Fortschritt Vorteile: • Universell einsetzbar, allgemeingültig für alle Arten von Projekten • Standard in vielen Bereichen • Sehr detaillierte Vorgaben IntegrationsTest SoftwareArchitektur 10 2. Prozesse Das V-Modell ist dokumentgetrieben, d.h. am Ende jeder Phase stehen entsprechende Dokumente bzw. Sourcecode. Üblicherweise gibt es auch im VModell Iterationen zwischen den einzelnen Phasen (nicht eingezeichnet). Der V-Zyklus deckt nicht nur die SW-Entwicklung, sondern ein komplettes Projekt ab. Die aktuelle Weiterentwicklung des V-Modells ist das V-Modell XT. Abnahme SystemAnalyse Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt Nachteile: • Hoher Managementaufwand, für kleine Projekte weniger geeignet • Testen erfolgt relativ spät im Entwurfsablauf • Phasenablauf zu starr (im V-Modell XT flexibler) ModulTest Implementierung Verifikation / Validierung Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 11 Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 12 3 3. Sprachen In der modellbasierten Entwicklung (Model Driven Architecture, MDA) wird ein System – möglichst in allen Phasen des Entwurfsablaufs – in einer formalen Modellierungssprache beschrieben. Diese Modelle dienen z.B. als Basis für Analyse, Simulation, Verifikation und Codegenerierung. MDA hat eine Reihe von Vorteilen: • Modelle (insbes. graphische Darstellungen) sind einfacher zu verstehen als Sourcecode. • Zum Verständnis der Modelle ist wenig Vorwissen nötig. • Modelle sind unmissverständlich im Gegensatz zu Umgangssprache. • Systeme können simuliert werden. Dadurch können Designentscheidungen vorab evaluiert werden. • Automatische Codegenerierung => Programmierung ist weniger fehleranfällig. • Ein Modell kann auf gewisse Eigenschaften hin überprüft werden. 3. Sprachen Einige Beispiele für visuelle Modellierungssprachen: • IEC-Standards 1131, 1491 • Prozessleittechnik, Automatisierungstechnik, etc. • MATLAB/Simulink/Stateflow, Statemate • Automaten/Statecharts und Datenfluss- / Block-Konzepte • Luft- und Raumfahrttechnik, Automobiltechnik, etc. • SDL (Specification and Description Language) • Telekommunikation, etc. • Esterel • synchrone Sprache • SystemC • C++ Bibliothek zur Modellierung + Simulation von HW und SW Eine Modellierungssprache beschreibt sowohl die Struktur / Architektur als auch das Verhalten des Systems. Für Echtzeitsysteme sind natürlich auch Konzepte zur Modellierung von Timing-Eigenschaften erforderlich. Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 13 3. Sprachen UML (Unified Modelling Language) ist inzwischen ein weit verbreiteter Standard zur Modellierung von Systemen in allen Phasen des Entwurfsablaufs. Die Sprache definiert verschiedene Diagrammtypen (graphische Notationen) zur Beschreibung von statischen Architekturen sowie zur Beschreibung des dynamischen Verhaltens eines Systems. Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 14 3. Sprachen Verhalten: • Anwendungsfalldiagramm (use case diagram) • Zustandsdiagramm (statechart) • Aktivitätsdiagramm (activity diagram) Statechart Struktur: • Klassendiagramm (class diagram) • Objektdiagramm (object diagram) • Komponentendiagramm (component diagram) • Kompositionsstrukturdiagramm (composite structure diagram) • Verteilungsdiagramm (deployment diagram) • Paketdiagramm (package diagram) Klassendiagramm Quelle: AUTOSAR.org Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 15 Quelle: AUTOSAR.org Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 16 4 3. Sprachen Interaktion: • Sequenzdiagramm (sequence diagram) • Interaktionsübersichtsdiagramm (interaction overview diagram) • Kommunikationsdiagramm (communication diagram) • Zeitdiagramm (timing diagram) 3. Sprachen Die Behandlung von Echtzeitaspekten wird in der (Standard-) UML noch nicht unterstützt. Dazu existieren einige Erweiterungen, z.B. das UML Profile for Modelling and Analysis of Real-Time and Embedded Systems (MARTE) von der OMG. Basierend auf UML und MARTE wurde/wird in der Automobilindustrie die EAST-ADL (EAST Architecture Description Language) entwickelt. Sie entstand 2002 – 2004 in dem Forschungsprojekt "EAST-EEA" (daher der Name), und hat sich inzwischen zu einem breit akzeptierten de facto Standard entwickelt. Die aktuelle EAST-ADL2 (2008) enthält bereits einige Erweiterungen. Insbesondere an der Integration von Echtzeitaspekten wird derzeit noch gearbeitet (geplant für 2010). Sequenzdiagramm Ein ähnlicher Standard ist die AADL (Architecture Analysis & Design Language). Sie wurde vorwiegend in der Luftfahrtindustrie angewendet und ist daher auch unter dem Namen "Avionics Architecture Description Language" bekannt. Quelle: AUTOSAR.org Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 17 3. Sprachen Die EAST-ADL2: Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 3. Sprachen Die EAST-ADL2 definiert 5 Abstraktionsebenen (in Anlehnung an das VModell), auf denen ein System mit wachsendem Detaillierungsgrad modelliert werden kann. Die beiden unteren Ebenen werden durch die AUTOSAR SW-Architektur abgedeckt. Ziel der EAST-ADL2: • Eine einzige Architekturbeschreibungssprache für die Behandlung aller Informationen, die während der Systementwicklung benötigt werden, z.B.: • Anforderungen • Variabilität (Variantenmanagement) • Sicherheit • Verhalten • Modellierung der Umwelt • Design-Methodik Feature content Vehicle Level Analysis Level Design Level Implementation Level Operational Level Abstract functional architecture Functional architecture, HW architecture, platform abstractions AUTOSAR Software architecture Embedded system in produced vehicle Die Sprache ist in Form eines UML2-Profils implementiert und wird bereits durch ein Prototyp-Werkzeug ("Papyrus") unterstützt. Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 18 19 Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 20 5 3. Sprachen Ein typisches Szenario: 3. Sprachen Ein typisches Szenario: • Der Automobilhersteller entscheidet, welche Funktionen das nächste Produkt enthalten soll. • Features sind z.B. Bremse, Scheibenwischer, Tempomat • Alle Features werden im Vehicle Feature Model beschrieben • Dabei können auch Varianten (z.B. Scheibenwischer mit/ohne Regensensor) beschrieben werden. • Ein Ingenieur entwickelt einen neuen Steuerungsalgorithmus (ABS, ESP). • Der Algorithmus wird definiert als ADLFunction auf der "Analysis Level" Ebene • Die EAST-ADL2 beschreibt die Struktur. Das Verhalten kann durch vorhandene Werkzeuge / Sprachen (z.B. Statecharts) beschrieben werden. • Das so erstellte Modell kann leicht zwischen Hersteller und Zulieferer ausgetauscht werden. • Verschiedene Funktionen können bereits integriert werden, bevor SW und HW existiert. • Die Interaktion (Schnittstellen) zwischen Vehicle Level Funktionen kann bereits verifiziert werden. Analysis Level Vehicle Level Analysis Level Design Level Design Level Implementation Level Implementation Level Operational Level Operational Level Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 21 Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 3. Sprachen Ein typisches Szenario: 3. Sprachen Ein typisches Szenario: • Ein Systemarchitekt spezifiziert die detaillierte Systemarchitektur. • HW-Architektur • Allokierung, Mapping • Anforderungen an die Implementierung • Sensoren, Aktuatoren • Ein SW-Architekt definiert die detaillierte SW-Architektur. • Spezifikation der AUTOSAR SW-Komponenten • Konfiguration der AUTOSAR Basic Software • RTE Generierung 22 • Integration der SW auf ECUs. • Validierung / Verifizierung des Gesamtsystems. Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt Vehicle Level Vehicle Level Analysis Level Analysis Level Design Level Design Level Implementation Level Implementation Level Operational Level Operational Level 23 Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 24 6 3. Sprachen Abstraktionsebenen sind das fundamentale Konzept der EAST-ADL2. Elemente auf den unteren Ebenen realisieren jeweils die Elemente auf den höheren Ebenen. Realize 3. Sprachen Anwendung: Timing-Spezifikation in EAST-ADL2 und AUTOSAR AUTOSAR • Standard SW-Architektur für Steuergeräte • Standard Austauschformate, Methodik, Applikationsinterfaces • Erweiterungen für Timing Spezifikation EAST-ADL2 • Beschreibungssprache für alle relevanten Informationen im Entwurfsprozess • Verschiedene Abstraktionsebenen • Spezifikation von Timing noch eingeschränkt Vehicle Level Analysis Level Design Level Implementation Level Operational Level Operational Level TIMMO – Timing Model • Sprache: Formale Spezifikation von Timing-Eigenschaften und -Anforderungen auf allen Abstraktionsebenen. Erweiterungen der EAST-ADL • Methodik: Formale Spezifikation von Timing-Eigenschaften und -Anforderungen in allen Entwicklungsphasen. Realize Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 25 Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 3. Sprachen 26 3. Sprachen Timing-Anforderungen und -Eigenschaften EAST ADL Abstraktionsebenen und AUTOSAR Feature Level Feature Model Analysis Level Functional Analysis Architecture Design Level Functional Design Architecture Environment Models Operational Level OEM – «Anforderung» Die Türen sollen entriegelt werden spätestens 1 Sekunde nachdem ein gültiges Schlüsselsignal erkannt wurde. Feature Level Analysis Level Functional View Middleware Abstraction Hardware Design Architecture Operational Architecture AUTSAR System and ECU View ? Wie werden Timing Anforderungen aufgeteilt in Timing Anforderungen / Eigenschaften? Wie werden Timing Eigenschaften transformiert in Timing Anforderungen / Eigenschaften? Implementation Level AUTOSAR Software and Hardware View Operational Level «Anforderung», «Eigenschaft» ... Zulieferer – «Eigenschaft» Die Funktion (runnable) unlockDoor antwortet innerhalb 120 ms auf die Aufforderung, die Türen zu entriegeln. [Annahme: Ausführung auf einem X12 6MHz Prozessor ... ] Abstraktionsebene Artefakt Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt «Anforderung», «Eigenschaft» ... Design Level Implementation Architecture AUTOSAR VFB View, System, ECU Mapping Abstraktionsebene Design Level Implementation Level Realize Implementation Level Vehicle Level Analysis Level 27 Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 28 7 3. Sprachen 3. Sprachen Events, Timing Feature Level Events Analysis Level Beispiel System – Was möchte ich spezifizieren Events werden auf allen Abstraktionsebenen verfeinert. Ein Event auf einer Ebene kann dabei zu einer Folge von Events auf der nächsttieferen Ebene verfeinert werden. End-to-End Delay Brake Pedal Position Monitor Event-Modelle (periodic, sporadic, pattern, arbitrary) können spezifiziert werden. Design Level Implementation Level Synchronisation Vehicle Functionality Braking Brake Force Actuation Brake Controller Auf dem Operational Level erscheinen alle Events in zeitlicher Reihenfolge. Wheel Speed Calculation Brake Force Actuation Events Operational Level Zeit Stop Light Actuation End-to-End Delay Synchronisation Abstraktionsebenen Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 29 Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 3. Sprachen 3. Sprachen AUTOSAR Virtual Function Bus Sicht AUTOSAR System Sicht ECU #1 Sensor SWC SWC #1 30 SWC #2 SWC #3 SWC #4 FL Actuator SWC Wheel FL Actuator SWC Wheel RR Sensor SWC ECU #2 SWC ECU #3 RTE RTE Basic SW ECU Wheel FL SWC SWC SWC #1 #2 #3 SWC SWC #4 RTE Basic SW Basic SW Actuator SWC RTE Basic SW ECU Wheel RR SWC #4 Actuator SWC RTE Basic SW Bus #1 Virtual Function Bus ECU Abstraction Component (Sensor) SWC Software Component AUTOSAR Service Bus #2 ECU Abstraction Component (Actuator) ECU Abstraction Component (Actuator) Observable Events Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 31 Sensor Actuator Signalweg RTE Run Time Environment Observable Events SWC Software Component Actuator ECU Electronic Control Unit Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 32 8 3. Sprachen 3. Sprachen AUTOSAR ECU Sicht ECU #1 Sensor SWC SWC Sensor SWC SWC RTE RTE Basic SW Communication Services I/O HW Abstraction Communication Hardware Abstraction I/O Drivers Communication Drivers Peripheral Communication Controller Observable Events "Observable Events": Zusammenfassung: Events, Anforderungen, Beschreibungen • ECU Sicht: Basic Software Module Entry Called, Basic Software Module Entry Returned • Internal Behaviour: Runnable Entity Activated, Runnable Entity Started, Runnable Entity Terminated, Basic Software Module Entity Activated, Basic Software Module Entity Started, Basic Software Module Entity Terminated • Kommunikation: Signal Sent To COM, Signal Available For RTE, IPDU Sent To Interface, IPDU Received by COM, Frame Queued for Transmission, Frame Transmitted on Bus, Frame Received by Interface TIMMO / EAST-ADL2 liefern eine Sprache für die Spezifikation von TimingAnforderungen und -Eigenschaften: • Events • hierarchische Event-Ketten • Anforderungen an Events: • Reihenfolge • Dauer / Verzögerung • Synchronisation • Event Triggering (Arbitrary, Concrete Pattern, Periodic, Sporadic) • Beschreibung / Eigenschaften: • ECU Sicht, VFB Sicht, Internal Behaviour, Kommunikation Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 33 3. Sprachen Programmiersprachen Die TIMMO-Sprache liegt in Form eines UML-Metamodells vor. Teile davon fließen in AUTOSAR R4.0 (Ende 2009) ein. Die TIMMO Konzepte werden in das UML2 Profil der EAST-ADL2 (Mitte 2010), integriert. Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 34 3. Sprachen Die meisten (eingebetteten) Echtzeitsysteme werden heute in C / C++ realisiert, obwohl diese Sprachen eigentlich keine speziellen Echtzeit-Konstrukte bieten. Ada ist eine Programmiersprache, die speziell für die Entwicklung von sicherheitskritischen, verteilten Echtzeitsystemen entwickelt wurde. Sie wurde/wird meist in militärischen Systemen angewendet. Z.B. schreibt das USDepartment of Defense und das deutsche Verteidigungsministerium BMVg den Einsatz von Ada bei allen Softwareentwicklungen vor. Allgemein hat Ada sich allerdings (noch?) nicht durchgesetzt. Gründe hierfür könnten sein: • Keine Objektorientierung; OO-Konzepte wurden erst nachträglich integriert. • Extrem viele Sprachkonstrukte im Vergleich zu anderen Sprachen. • Daher sowohl für Anwender als auch für Compilerbauer sehr komplexe Sprache • Abneigung gegen militärische Standards (?) Die Sprache bietet viele Konzepte für die Modularisierung und die Entwicklung nebenläufiger Programme (s. [Burns, Wellings]). Ada z.B. war eine der ersten Sprachen, die ein Exception Handling Konzept eingebaut hat. Strenge Typisierung und Prüfungen zur Laufzeit (z.B. Speicherüberläufe) machen die Sprache "sicherer" als z.B. C. Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 35 Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 36 9 3. Sprachen Real-Time Java Prinzipiell hat Java viele Vorteile gegenüber C/C++: • Sicherer: viele typische Programmierfehler in C / C++ sind in Java nicht möglich (z.B. beim Freigeben von Objekten). • Portabilität, Prozessorunabhängigkeit • Konzepte zur Programmierung verteilter Systeme (Threads, Monitor, rmi) • Weit verbreiteter, akzeptierter Standard. Für die Anwendung in Echtzeitsystemen ist Java allerdings nicht geeignet, z.B.: • Scheduling: Zu wenig Prioritätsklassen, keine Möglichkeiten zur Anbindung besserer Schedulingalgorithmen mit mehr Prioritätsklassen • Garbage Collector: Hat höchste Priorität, führt zu unvorhersagbaren und langen Latenzzeiten • Priority inversion: kein Priority Ceiling Protocol • Physical Memory Access: Java unterstützt nicht den Zugriff auf ganz bestimmte Speicherbereiche (z.B. für Memory Mapped I/O) Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 37 3. Sprachen Scheduling, Threads: • Zusätzlich zu den „normalen“ Threads gibt es RT-Threads mit höheren Prioritäten. • Bestimmte RT-Threads dürfen keine Objekte auf dem Heap anlegen und dürfen deshalb den Garbage Collector beliebig unterbrechen. • Das priority ceiling protocol wird unterstützt • RT-Threads haben verschiedene Scheduling-Parameter wie Ausführungszeit, Deadline, Periode, etc., die für Scheduling-Algorithmen und -Analysen verwendet werden können. 3. Sprachen Die Real-Time Specification for Java [www.rtsj.org] definiert entsprechende Erweiterungen, die die Programmierung von Echtzeitsystemen in Java unterstützen sollen. Grundlegende Ziele dabei waren: • Keine Einschränkungen auf eine bestimmte Klasse von Entwicklungsumgebungen (z.B. Micro Edition J2ME) • Rückwärtskompatibilität: existierende Standard-Java-Programme sollen auch auf RT-JVMs ausführbar sein • Portabilität • Unterstützung für heute gängige RT-Konzepte (wie z.B. RMS), aber offen für Fortentwicklungen • Vorhersagbare Ausführungszeiten • Keine syntaktischen Erweiterungen / Änderungen der Sprache • Variantenbildung möglich: die Spezifikation soll verschiedene Implementierungen mit z.B. unterschiedlichen Scheduling-Algorithmen erlauben Die Erweiterungen betreffen i.W. Scheduling, Threads und Speichermanagement (s. [Burns, Wellings]). Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 38 3. Sprachen Darüber hinaus gibt es auch Ansätze, den Garbage Collector unterbrechbar zu implementieren ("inkrementeller Garbage Collector"). Das wird aber von der RTSJ nicht gefordert. Die Echtzeitfähigkeit einer RT-JVM (bzw. eines Ada-Programms) ist natürlich nur gegeben, wenn sie zusammen mit einem RTOS verwendet wird. Speichermanagement: • Scoped Memory: • Einem RT-Thread wird ein Scoped-Memory-Bereich zugeordnet. • Alle (mit new) angelegten Objekte werden im Scope angelegt. • Beim Verlassen eines Scopes (run-Methode des RT-Threads terminiert) wird der aktuelle Scope mit allen Objekten gelöscht. • Immortal Memory: Objekte leben für immer (bis zum Ende der Anwendung). • Verwendung ganz bestimmter Speicherbereiche und Zugriff auf absolute Adressen kann erzwungen werden. Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 39 Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 40 10 3. Sprachen Programmierstil Die speziellen Eigenschaften von eingebetteten Echtzeitsystemen erfordern einen extrem sorgfältigen Programmierstil, um Ressourcenbedarf und Performance eines Programms zu optimieren. Hier einige Hinweise (ohne Anspruch auf Vollständigkeit): Allgemein: • Zeitkritische Tasks sollten möglichst keine bzw. wenige Systemaufrufe verwenden. • Verwende kritische Abschnitte sparsam, insbesondere bei Tasks mit niedriger Priorität (à Prioritätsinversion). • Verlagere zeitaufwändige Aufgaben in eigene Tasks. 3. Sprachen • Vermeide dynamische Speicherallokation • Dynamische Speicherverwaltung ist aufwändig (Fragmentierung) und schwer vorhersagbar; "out-of-memory"-Risiko. • Verwende Bibliotheksfunktionen (memcp, strcpy, …) • Solche Funktionen sind i.d.R. für die gegebene Zielplattform optimiert. • Verwende niemals Zählschleifen zum Warten • z.B. for( i=0; i < 100000; i++ ) ; // wait • • • • Ist nicht portierbar. Funktioniert nicht bei preemptivem Scheduling. Ein guter Compiler optimiert das weg. Verwende stattdessen Systemaufrufe wie sleep(), pause(), … Programmierung: • Vermeide Rekursion • Rekursion führt zu hohem Speicherverbrauch auf dem Stack. Dabei kann ein rekursiver Algorithmus immer auch in einen iterativen überführt werden (das kann u.U. auch der Compiler machen). Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 41 3. Sprachen • Vermeide Busy Waiting • z.B. Polling von I/O Registern: while (*RegisterAdr == 0) ; //Wait until button pressed • Verbraucht unnötig CPU-Leistung • Benutze stattdessen (wenn möglich) einen Interrupt für das entsprechende I/O Register Compiler-Optimierungen: Die Beachtung der folgenden Hinweise macht es dem Compiler leichter, bestimmte Optimierungen bei der Codegenerierung anzuwenden. Auf einem Desktop-Computer sind die Effekte zwar meist minimal, auf einem embedded µController können sie aber durchaus signifikant werden. [Jakob Engblom: "Getting the Least Out of Your C Compiler". Embedded Systems Conference, San Francisco. 2001]. Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 43 Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 42 3. Sprachen • Verwende immer den kleinstmöglichen Datentyp • C definiert int als mindestens 16 Bit lang. Auf einem 8-Bit µController führt die Verwendung von int daher zu Overhead. • Überprüfe den "richtigen" Datentyp bei einer Portierung des Codes! • Benutze unsigned wenn möglich • Insbesondere Bit-Shift-Operationen können für negative Zahlen unerwartete Ergebnisse liefern. Wenn der Compiler weiß, dass negative Zahlen nicht vorkommen, kann er entsprechend effizienteren Code erzeugen. • Deklariere alle Funktionen korrekt • Kennt der Compiler den Funktionsprototyp nicht, muss er für Rückgabewert und Parameter per default int bzw. double annehmen. Das kann zu unnötigen cast-Operationen führen. Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 44 11 3. Sprachen • Gruppiere Funktionsaufrufe • Vor einem Funktionsaufruf müssen Registerwerte u.U. wieder ins RAM geschrieben werden, da die Register für Parameter und Rückgabewert gebraucht werden. Beispiel: void foo (int a, b, c, d) { } void foo (int a, b, c, d) { //a, b, c, d in Registern //a, b, c, d in Registern struct S s; s.A = a; s.B = bar(b); s.C = c; //c nicht mehr im Register s.D = c; s.E = baz(d); } struct S s; s.A = a; s.C = c; s.D = c; s.B = bar(b); s.E = baz(d); Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 45 3. Sprachen • Vermeide "cleveren" Code • Möglichst viele Operationen in eine Anweisung zu packen ist nicht nur unleserlich, sondern führt auch fast nie zu effizienterem Object-Code. • Generell gilt: Code, der für einen Menschen leichter verständlich ist, ist auch vom Compiler besser zu handhaben und optimieren. • Beispiel: int bar (char *str) { return foo (str + (*str == '+')); //braucht zusätzlichen Speicher / Register //für Zwischenergebnis } Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 46 4. Analyse Ziel der Analyse eines (Echtzeit-) Systems ist es, die Korrektheit so weit wie möglich formal und automatisch nachzuweisen. Testen allein ist i.d.R nicht ausreichend, da dadurch bekanntlich nur die Anwesenheit, aber nicht die Abwesenheit von Fehlern nachgewiesen werden kann. Für verschiedene Aspekte von (Echtzeit-) Systemen existieren verschiedene Analyseverfahren, z.B. die Schedulability-Analyse (s. Kapitel 2, 4), Model Checking, oder WCET-Analyse. int bar (char *str) { if(*str == '+') str++; return foo (str); } Model Checking wird verwendet um nachzuweisen, dass ein System: • Niemals bestimmte Fehlerzustände erreicht, • "Das Getriebe wird niemals in den Rückwärtsgang schalten, wenn das Fahrzeug vorwärts fährt." • Einen gewünschten Zustand irgendwann erreicht, • "Der Motor wird irgendwann im Normalmodus laufen." • Nach einem Zustand x immer Zustand y erreichen wird. • "Wenn der Motor läuft, wird er nach Drücken des Stop-Knopfes irgendwann aus sein." Viele solcher Regeln und Hinweise sind in firmen- und branchenspezifischen Coding Rules festgelegt (z.B. MISRA-C, Motor Industry SW Reliability Association). Das Hauptziel solcher Regeln ist, den Source-Code sicherer zu machen, indem kritische und fehleranfällige Konzepte der Sprache eingeschränkt bzw. ganz verboten werden. Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 3. Sprachen • Mache lokale Funktionen static • Ermöglicht Inlining, da der Compiler weiß, dass die Funktion nicht von extern aufgerufen wird. • Mache lokale Variablen static • Mehr Optimierungsmöglichkeiten, da der Compiler weiß, dass nicht von extern auf die Variable zugegriffen wird. • Vermeide inline-Assembler • Inline-Assembler zwingt den Compiler, die meisten Optimierungen auszuschalten, da er nichts darüber weiß, welche Effekte der AssemblerCode hat. • Schreibe compilerfreundliche Schleifen • Die Indexvariable sollte im Schleifenrumpf nicht verändert werden. • Die Indexvariable sollte nach der Schleife nicht mehr verwendet werden. 47 Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 48 12 4. Analyse Die Zustände des Systems und die Übergänge zwischen den Zuständen werden durch endliche Automaten dargestellt. Die Aussagen über das System ("Fehlerzustände werden nie erreicht", etc.) werden mittels temporaler Logik formal ausgedrückt. CTL (Computation Tree Logic) ist eine temporale Logik, mit der formale Aussagen über Zustände und (unendliche) Folgen von Zuständen gemacht werden können. Die Zustandsfolgen bilden Pfade bzw. Bäume. Syntax: f und g seien Aussagen über das System, die entweder wahr oder falsch sein können. Die Quantoren E und A stehen für "entlang mind. eines Pfades" (Exist), bzw. "entlang aller Pfade" (All). Ausgehend von einem Startzustand können die folgenden Aussagen gemacht werden: • AX f: Für alle direkten Nachfolger gilt f ("neXt state"). • EX f: Es existiert ein direkter Nachfolger, für den f gilt. • A (f U g): f gilt immer bis zum ersten Auftreten von g. • E (f U g): Für mind. einen Pfad gilt: Bis zum ersten Auftreten von g gilt f. Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 49 4. Analyse Beispiele: EF f AG f Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt • AF f: • EF f: • AG f: • EG f: • ¬ f: • f ∧ g: 4. Analyse Auf allen Pfaden wird ein Zustand erreicht, in dem f gilt ("Future state"). Auf mind. einem Pfad erreicht man einen Zustand, in dem f gilt. Auf allen Pfaden gilt in jedem Zustand f ("Globally"). Auf mind. einem Pfad gilt in jedem Zustand f. Negation. UND. Bemerkung: • AF f = A (true U f) • EF f = E (true U f) • AG f = ¬E (true U ¬f) • EG f = ¬A (true U ¬f) Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 50 4. Analyse Model Checking: Ausgehend vom Startzustand exploriert ein Model Checker alle möglichen Nachbarzustände: • Auswahl eines noch nicht evaluierten Zustandes • Prüfung aller möglichen Zustandsübergange: • bereits bekannter Zustand: verwerfen • unbekannter Zustand: Eigenschaft prüfen • falls Eigenschaft nicht erfüllt, Abbruch und Präsentation eines Gegenbeispiels • falls erfüllt, zur Menge der nicht evaluierten Zustände hinzufügen • Abbruchbedingung: alle erreichbaren Zustände wurden überprüft AF f EG f • Problem: Zustandsraumexplosion • Die Menge der möglichen Zustände und Pfade ist exponentiell groß. • Es existieren aber effiziente Model Checking Algorithmen (symbolische Model Checker, bounded Model Checker), so dass das Verfahren in der Praxis auch für komplexe Systeme anwendbar ist. 51 Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 52 13 4. Analyse Worst-Case Execution Time (WCET) Analyse 4. Analyse ? Programmverhalten: l # Schleifendurchläufe l Abhängigkeiten zw. if-Statements l Funktionsaufrufe l etc. WCET: • längstmögliche Ausführungszeit eines Programms auf einer gegebenen Zielhardware • ohne Interrupts und Context Switches Objekt-Code Ebene Technik: statische Analyse • Das Programm wird nicht ausgeführt, sondern analysiert • Im Prinzip unmöglich à Halteproblem! Häufigkeit tatsächl. BCET Hardwareverhalten l Ausführungszeiten für Programmteile l Berücksichtigung von Hardware-Eigenschaften Berechnung Berechnung sichere WCET Schätzungen mögliche Ausführungszeiten genauer genauer Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt WCET Berechnung l durch Kombination der Ergebnisse von high- und low-level Analyse Zeit 53 4. Analyse Kontrollfluss-Analyse Hierarchischer Kontrollflussgraph: A B C I f i= or( for 1.. (j= .n) 1.. D . E if( en th F G ..) s el e H inner loop J Low-Level Low-Level Analyse Analyse tatsächl. WCET sichere BCET Schätzungen 0 KontrollKontrollfluss fluss Analyse Analyse Source-Code Ebene .i) Knoten sind die Basisblöcke des Programms, d.h. Folgen von Instruktionen ohne Verzweigungen Gesucht: Informationen über mögliche – und unmögliche – Programmabläufe • Anzahl der Iterationen • unmögliche Pfade (z.B. "wenn C dann nicht G") 54 4. Analyse Low-Level Analyse: Pipelines • überlappende Ausführung von Instruktionen • erhöht den Durchsatz • vgl. Fließbandproduktion • heute Standard in fast allen Prozessoren Beispiel: 3 Stufen • Instruction Fetch, Execute, Write Back • Ausführungszeiten sind abhängig von benachbarten Instruktionen Takt: 1 2 3 4 5 6 7 8 9 10 IF EX WB non-pipelined pipelined Superscalare Architekturen • verarbeiten mehrere Instruktionen gleichzeitig • mehrere parallele Einheiten (z.B. Integer und Floating Point) outer loop Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt Takt: 1 2 3 4 5 6 7 8 9 10 IF EX WB Informationsquellen: • Programmierer • Codegeneratoren • Analyseverfahren • z.B. "abstract interpretation" WCET WCET Schätzung Schätzung 55 Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 56 14 4. Analyse Analyseverfahren: • abstraktes (SW-) Modell des Prozessors • Folgen von Instruktionen "simulieren" bzgl. Zeitverhalten • Ergebnis: Zustand der Pipeline nach Ausführung der Instruktionen • "Addition" von größeren Blöcken durch Konkatenation der Pipelines 4. Analyse Ergebnis der Low-Level Analyse: Annotierter Kontrollflussgraph δ AI tA = 5 IF EX WB tB = 7 tI IF EX WB I • Ausführungszeiten pro Knoten isoliert tB B δ BC δ BD • Pipeline-Effekt pro Kante (negativ) tC C δ CE δ EF tF tAB = 10 δ IJ IF EX WB Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt .. Aufgabe der Analyse: • Vorhersage "cache hit" / "cache miss" für Speicherzugriffe zur Laufzeit • Modellieren des Cache-Verhaltens • Abbildung RAM à Cache • Verdrängungsstrategie (LRU, FIFO, ...) 57 ... RAM Instruction Cache D tD δ DE δ HB E tE δ EG δ JA G tG δ GH H F δ FH tH δ HJ tJ •AB = tAB – (tA + tB) = –2 4. Analyse Low-Level Analyse – Caches • kleiner, schneller (daher teurer) . Pufferspeicher • behält zuletzt verwendete Blöcke aus dem RAM • Zugriff i.d.R. innerhalb 1 Takt • Laden aus dem RAM: ca. 50 Takte tA A δ AB InnerLoop J OuterLoop Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 58 4. Analyse Algorithmus: • Für jeden Knoten v des Kontrollflussgraphen • IN(v): Cache-Inhalt am Anfang von v • OUT(v): Cache-Inhalt nach Ausführung von v Data Cache for each v do IN (v) := { } OUT(v) := { } Prozessor Prozessor while 'any change' do choose v ∩ IN (v) := {OUT (p) | p ∈ Vorgänger(v)} OUT (v):= 'simuliere Cache-Verhalten innerhalb v' cache miss Takt: 1 2 . IF EX WB Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt . . . Am Besten in topologischer Reihenfolge 50 59 Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 60 15 4. Analyse 4. Analyse Für die Berechnung der WCET gibt es 2 Ansätze: IN = { } OUT = {a, d, e} a = 7; if (d > e) { c = d / e; if (a > c) { a = c; } c = b; } else { c = e / d; } e = b + c; ILP (Integer Linear Programming) • gesucht: maximale Ausführungshäufigkeit xi je Knoten / Kante • WCET = maximiere •(xi * ti) IN = {a, d, e} OUT = {a, c, d, e} δ AI • Struktur-Constraints IN = {a, c, d, e} OUT = {a, c, d, e} • xE • xCE + xDE • Kontrollfluss-Constraints I • xA • 42 IN = {a, c, d, e} OUT = {a, b, c, e} tF δ IJ Graphbasiert: • gesucht: der längste Weg im Kontrollflussgraphen • effizient (O(m)), aber weniger mächtig IN = {a, c, e} OUT = {a, b, c, e} 61 4. Analyse A tB δ BC B D tD δ DE δ CE E tE δ EG δ HB δ JA G tG δ GH F δ FH tH δ AB δ BD C δ EF • komplex (NP-schwer!), aber mächtig bzgl. Kontrollflussinformationen IN = {a, d, e} OUT = {a, c, d, e} Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt tC tI tA H δ HJ tJ InnerLoop J OuterLoop Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 62 4. Analyse Komplexität der Berechnung: start t =11 A δ =-2 δ =-2 t =15 B δ =-1 δ =-2 D t =5 δ =-3 δ =-1 E F δ =-3 Benchmark insertsort jfdctint matmult compress nsichneu nsichneu2 nsichneu3 t =17 C δ =-3 t =19 Berechnung des längsten Weges • Für jede Schleife • Bottom-up: innere Schleifen zuerst • Modifikationen am Graphen • Rückwärtskanten eliminieren • Schleifen aufrollen • unmögliche Pfade eliminieren t =29 Variablen Constraints 51 61 86 99 224 262 701 753 4656 4290 5186 4833 5456 5109 Zeit (s) ILP Graphb. 0,04 0,01 0,08 0,01 0,29 0,02 2,04 0,06 76,79 0,21 98,53 113,44 108,53 317,75 • ILP Laufzeit explodiert mit der Problemgröße • Graphbasierte Methode explodiert mit der Komplexität der Constraints δ =-1 G t =15 δ =-1 end δ =-2 cont Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 63 Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 64 16 4. Analyse Stand der Technik: WCET Tools • Die Low-Level Analyse (Modellierung von Prozessorarchitekturen) ist sehr ausgereift. Allerdings werden die Prozessoren auch immer komplexer und schwerer analysierbar. • Kommerzielle WCET Tools: • aiT (Deutschland) • Bound-T (Finnland) • RapiTime (England) • Open Source / Research Tools: • SWEET (Schweden / Deutschland) • Chronos (Singapur) • Heptane (Frankreich) • ... 5. Zusammenfassung der Vorlesung Timing ist ein Thema, das durchgehend im gesamten Entwurfsprozess berücksichtigt werden muss. Eigenschaften von RTS Allgemein Spezielle Probleme bei RTS Scheduling RTS RTOS Verteilte RTS Anwendungen • Avionics, z.B. Airbus A380 flight control Software (aiT) • ESA (Bound-T) • Automotive RTS Design Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 65 5. Zusammenfassung der Vorlesung Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 66 5. Zusammenfassung der Vorlesung Periode T Taskmodell Ausführungszeit C Deadline D D=T Eigenschaften von RTOS RMS DMS POSIX optimale Prioritätsvergabe Standards statisch D <= T RTA Blockiert-Zeiten OSEK AUTOSAR Priority Inversion Scheduling Priority Inheritance RTOS Priority Ceiling Tasks, Scheduler Release Jitter Timer OS-Overhead RTOS Elemente (D>=T) Events Message Queues EDF dynamisch Interrupts LLF Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 67 Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 68 17 5. Zusammenfassung der Vorlesung 5. Zusammenfassung der Vorlesung spezielle Aufgaben beim Design von RTS zentral Uhrensynchronisation Allgemein verteilt fehlertolerant Anforderungen an Prozesse für RTS Design CAN event-triggered Prioritäten für Nachrichten Wasserfallmodell Prozesse Busarbitrierung Spiralmodell V-Modell statischer Teil Echtzeitkommunikation Verteilte RTS FlexRay time-triggered dynamischer Teil Model Driven Architecture Uhrensynchronisation Middleware UML RTS Design RT-CORBA Modellierungssprachen EAST-ADL Abstraktionsebenen AUTOSAR RTE Events, Event-Ketten holistische Analyse Scheduling in verteilten Systemen Ada Deadline Monotonic Scheduling in verteilten Systemen Programmiersprachen RT-Java Programmierstil Berechnung der Übertragungsdauer (Token ring) Scheduling Temporale Logik Simulated Annealing Analyse Allocation Model Checking WCET Analyse Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 69 Friedhelm Stappert – Design von RTS – Real-Time Systems - SoSe 2009 – Hochschule Darmstadt 70 18