Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Einführung in Esterel Imperative Synchrone Parallele Programmiersprache für Reaktive Systeme.

Ähnliche Präsentationen


Präsentation zum Thema: "Einführung in Esterel Imperative Synchrone Parallele Programmiersprache für Reaktive Systeme."—  Präsentation transkript:

1 Einführung in Esterel Imperative Synchrone Parallele Programmiersprache für Reaktive Systeme

2 2 Überblick  Geschichte  Begriffsdefinitionen  Synchrone Programmierung  Entwicklungswerkzeuge  Esterel Studio  Esterel Programmiersprache  Vorteile/Nachteile  Übung

3 3 Geschichte  Erfinder Jean-Paul Marmorat und Jean-Paul Rigault 1982 Motivation  Design eines Roboters für ein Rennen  Keine geeigneten Programmierwerkzeuge  Kontrollalgorithmus vs. Programmiersprache Sabine Moisan  Namensgeberin für ESTEREL Laurent Cosserat  Esterel V1 Compiler basierend auf Brzozowski Algorithmus

4 4 Geschichte Gerard Berry  Esterel v2 1985-86, Esterel v3 1987-88 Esterel v4  Vermeiden von State Space Explosion in Esterel v3  Generierung von Netzlisten  Grafischer Debugger Esterel v5  Basierend auf BDD  Letzte freie Compiler Version ist v5.92 Esterel Studio 5.2.1e benützt Compiler v7

5 5 Begriffsdefinitionen  Grundsätzlich Unterscheidung nach David Harel und Amir Pnueli 1985 “Transformational Systems“ “Reactive Systems“

6 6 Begriffsdefinitionen  Unterscheidung bei “Synchroner Programmierung“ “Transformational Systems“ “Interactive Systms“ “Reactive Systems“

7 7 Transformational Systems Input Output Transformational System terminiert mit einem Resultat

8 8 Interactive Systems Umwelt Fähigkeit sich mit ihrer Umgebung zu synchronisieren! -> zwingt Umgebung zu warten!

9 9 Reactive Systems Ständiges interagieren mit der Umgebung Geschwindigkeit bestimmt durch Umgebung

10 10 Reactive Systems  Unbeschränkte Laufzeit  Keine Terminierung  Kommunikation Extern  Interaktion mit der Umwelt Interne  Interaktion mit Subsysteme  Simultan  Deterministisch  Zuverlässigkeit für kritische Systeme

11 11 Synchrone Sprachen  Erfunden für Design von Reaktiven Kernels  Programmierer sieht System als einen unverzüglichen Reaktor auf externe Events  Programmierverhalten ist komplett deterministisch  Versucht Parallelität und Nicht-Determinismus zu lösen  Physikalisch Zeit durch abstrakte Zeit ersetzen “stop within 5 milliseconds“ “every 100 meters do“

12 12 Synchrone Programmierung  Typisch als Automat implementiert  Auswertung des Speicher führt zu Automatenzustand  Reaktion bildet den Zustandsübergang des Automaten foreach input_event do end foreach period do end “Event driven““Sampling“

13 13 Synchrone Paradigma  Reaktion beinhaltet viele Berechnungen  Reaktion ist atomar (aus Automatensicht)  Berücksichtigung der Eingänge zwischen zwei Reaktionen  Reaktion benötigt keine Zeit -> INSTANT  Alle Events während Reaktion sind simultan

14 14 Instant  Instant ist “logisch Zeit“  Bei jeder Instant lesen/berechnen/schreiben gleichzeitig  Historie des Systems: geordnete Reihe von Instants  Kommunikation findet sofort statt (unverzüglich – “synchronous broadcast“)  Berechnungen intern geordnet

15 15 Programmier-Tools

16 16 Esterel Hintergrund  Synchrone Programmierumgebung Sprache  Reaktive Systeme, kontroll-dominant  Konstrukte für sequencing, concurrency, preemption Compiler  sorted Boolean equations  Causality checking, symbolic debugging, verification  Implementierung in C, C++, VHDL und Verilog

17 17 Esterel Basics  Synchronous Hypothesis  Kommunikation über Broadcast Signale Signals, Sensors Pure, Valued  Modularität: Programm = Kollektion von Modulen  Kurz und Prägnante Programme Write Things Once (WTO)  Gut definierte Semantik

18 18 Esterel Studio

19 19 Esterel Studio

20 20 Esterel Studio  Esterel Studio Demo Beispiele ESTEREL BASICS ABRO COUNT UP/DOWN COUNTER WRISTWACH 1 WRISTWACH 2 ÜBUNGSBEISPIEL embsys.technikum-wien.at/courses/esterel

21 21 Beispiel: Present, Absent, Emit module PAE: output A,B,C; emit A; if A then emit B end; pause; emit C; end module emit A Signal A in momentanen Zyklus präsent. Wenn nicht präsent dann abwesend pause Stop in diesem Zyklus, im nächsten Zyklus wird vorgesetzt if A then p else q end Führt p im momentanen Zyklus sofort aus wenn A präsent, sonst q

22 22 Signal Coherence Rules  Ein Signal ist entweder “präsent“ oder “Abwesend“, niemals beides  Signale zuerst senden und dann lesen  Daher: if A then emit A end  Deadlock  Fehlermeldung durch Compiler

23 23 Zeitkontrolle every 5 T do emit C end every  Beispiel garantiert, dass alle 5 T ein C emittiert wird

24 24 Der || Operator  Gruppe von Anweisungen getrennt durch || laufen parallel zueinander und terminieren wenn alle beteiligten terminiert haben [ emit A; pause; emit B; pause; pause;pause;pause; || pause; emit C; pause; emit D; ]; emit E;

25 25 Kommunikation  Ein Signal in einem Zyklus ist sofort sichtbar [ pause; emit A; pause; emit A; || pause; if A then emit B end ]

26 26 Bidirektionale Kommunikation  Prozesses können in einem Zyklus vorwärts und rückwärts kommunizieren [ pause; emit A; if B then emit C end; pause; emit A; || pause; if A then emit B end ]

27 27 Beispiel: Await  “await“ Anweisung wartet auf einen bestimmten Zyklus, “await A“ wartet auf den nächsten Zyklus wo A präsent ist. [ emit A; pause; pause; emit A; || await A; emit B; ]

28 28 Beispiel: Await immediate  Normalerweise wartet “await“ einen Zyklus vor ihrer Verifizierung; “await immediate“ überprüft den Initialzyklus [ emit A; pause; pause; emit A; || await immediate A; emit B; ]

29 29 Schleifen  Esterel hat eine “infinite“ Schleifenanweisung “loop“  Regel: Schleife kann nicht sofort terminieren (instantaneous loop)  Braucht mindestens eine “pause“, “await“, usw. Anweisung  Kann in einem Zyklus keine unendliche Arbeit leisten.

30 30 Schleifen/Synchronisation  Kombination von “loop“ und “await“ stellen mächtig Synchronisations-Mechanismen zur Verfügung loop await 5 T; emit C; end loop

31 31 Preemption  Eine Ausführung unterbrechen um anderes zu tun (Beispiel: Unix Ctrl-C).  Viele Konstruktionen sind verfügbar  Grundlegend allgemeine Form: abort statement when condition  Lauft statement durch, bei condition sofortige Beendigung

32 32 Preemption Beispiel abort pause; emit A; when C; emit B;

33 33 Beispiel: ABRO

34 34 Beispiel: COUNT  Zähle die Anzahl der Eingänge von I und sende (Broadcast) den Wert von COUNT nach jedem Event von I. ?COUNT vs. pre(?COUNT) every COUNT do Body p end every Handhabung Initialwert (immediate) Verwendung einer Variable

35 35 Vorteile  Programmier erhält durch Model genau Kontrolle über die Zeit  Parallelität für Spezifikation von Kontrollsystemen  Deterministisch Mutex, Semaphore usw. nicht nötig  Finite-State Language Leicht zu analysieren Ausführungszeit vorhersagbar Leichter Formal zu verifizieren  Implementierungsvarianten Hardware Software

36 36 Nachteil  Limitierte Flexibilität Keine dynamische Speicheranforderung Keine dynamische Prozesserzeugung  Wenig Unterstützung für Datenhandhabung  Vermeidung von Kausalitätsverletzungen oft sehr schwierig  Schwer zu kompilieren  Geringe Anzahl an Benutzer und Tools  Fehleranfälligkeit der Tools

37 37 Übung People Counter Construct an Esterel program that counts the number of people in a room. People enter the room from one door with a photocell that changes from 0 to 1 when the light is interrupted, and leave from a second door with a similar photocell. These inputs may be true for more than one clock cycle. The two photocell inputs are called ENTER and LEAVE. There are two outputs: EMPTY and FULL, which are present when the room is empty and contains three  Conditioner detects rising edges of signal from photocell.  Counter tracks number of people in the room.


Herunterladen ppt "Einführung in Esterel Imperative Synchrone Parallele Programmiersprache für Reaktive Systeme."

Ähnliche Präsentationen


Google-Anzeigen