Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Christin Dressler Geändert vor über 7 Jahren
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.
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.