EBS 2.2 Flashcards
Kapitel 4-6
Warum sind für die Programmierung eingebetteter Systeme im Vergleich zu gängigen Praktiken völlig neuartige Ansätze erforderlich?
Eingebettete Systeme, besonders Echtzeitsysteme, haben strikte Anforderungen an das zeitliche Verhalten. Sie müssen nicht nur logisch korrekte Ergebnisse liefern, sondern diese auch rechtzeitig zu bestimmten Deadlines. Dies erfordert spezielle Programmieransätze, die sowohl zeitliche als auch parallele und verteilte Prozesse beherrschen können
Was ist der Unterschied zwischen harten und weichen Echtzeitsystemen?
- Harte Echtzeitsysteme: Müssen alle Deadlines unter allen Umständen einhalten, da sonst katastrophale Folgen drohen (z.B. Flugzeugsteuerungen, Airbags).
- Weiche Echtzeitsysteme: Können geringfügige Deadline-Überschreitungen tolerieren, wobei die Qualität der Ergebnisse oder Dienste leidet, aber die Funktionalität weiterhin besteht (z.B. Videodekompression).
Welche Herausforderung besteht bei der Zeitachse der Umgebung und der Zeitachse des Rechners in eingebetteten Systemen?
Die reale Welt hat eine kontinuierliche, reellwertige Zeit, während digitale Rechner mit einer diskreten Zeit arbeiten. Das manuelle Abgleichen dieser Zeitachsen ist mühsam und fehleranfällig, weshalb automatische Ansätze zur Übereinstimmung wünschenswert sind.
Was ist die Hypothese der perfekten Synchronie in der synchronen Programmierung?
Die Hypothese der perfekten Synchronie besagt, dass Zustandsübergänge und virtuelle Kommunikation keine Zeit verbrauchen. Zeit vergeht nur in stabilen Zuständen des Systems. Diese Annahme ermöglicht es, Reaktionszeiten unabhängig von der Implementierung zu planen und künstliche Verzögerungen zu vermeiden.
Was sind die Vorteile der perfekten Synchronie?
- Reaktionszeiten sind frühzeitig bekannt.
- Unabhängig von der konkreten Implementierung.
- Vermeidung künstlicher Verzögerungen.
- Ermöglicht die Verfeinerung von Systemreaktionen ohne Beeinflussung des zeitlichen Verhaltens.
Was ist Esterel und wofür wurde es entwickelt?
Esterel ist eine textuelle, perfekt synchrone Sprache für die Programmierung reaktiver Systeme. Sie wurde entwickelt, um die Steuerung komplexer reaktiver Systeme wie Roboter zu ermöglichen, da herkömmliche Programmiersprachen dafür ungeeignet waren.
Wie arbeitet ein Esterel-Programm?
Ein Esterel-Programm verarbeitet Ströme von Ereignissen und reagiert auf jedes Eingabeereignis sofort durch Änderung des internen Zustands. Diese Reaktion erfolgt synchron mit der Eingabe, ohne dass während der Berechnung neue Eingaben auftreten.
Was sind die Hauptmerkmale von Esterel?
- Perfekte Synchronisation von Ein- und Ausgabe.
- Nebenläufiges, deterministisches Verhalten.
- Umfangreiche Konstrukte zur Zeitdarstellung.
- Möglichkeit zur Modularisierung.
- Unterstützung durch parallele Programmierung.
Wie werden Konstanten und Funktionen in Esterel deklariert?
- Konstanten: constant MIN, MAX: integer;
- Funktionen: function TOP(): integer;
Funktionen können keine, eine oder mehrere Argumente haben und ihre Definition erfolgt in der Hostsprache (C oder Ada).
Was sind Signale in Esterel und welche Arten gibt es?
Signale dienen der Kommunikation per Broadcasting und können als Input-, Output- oder Input-Output-Signale deklariert werden. Es gibt reine Signale (ohne Daten), einfache Signale (mit Wert) und kombinierte Signale (mit Kombinationsfunktion).
Was ist der Unterschied zwischen Variablen und Signalen in Esterel?
- Signale: Übertragen Werte nur zu bestimmten Zeitpunkten und besitzen den Status “present” oder “absent”.
- Variablen: Haben einen gespeicherten Wert, der mehrfach während eines Zeitpunkts geändert werden kann und besitzen keinen Status.
Was bedeutet das WTO-Prinzip in Esterel?
Das Write Things Once-Prinzip erlaubt die Wiederverwendung von Programmcode durch Verschachtelung syntaktischer Strukturen. Dies führt zu kompakteren, weniger fehleranfälligen und besser wartbaren Programmen.
Wie funktioniert Parallelität in Esterel?
Esterel erlaubt die Parallelkomposition von Programmen, bei der zwei Programme P1 und P2 nebenläufig ausgeführt werden und Eingaben sowie Ausgaben synchronisiert behandelt werden. Die Kommunikation erfolgt durch Instantaneous Broadcasting.
Was sind die Hauptbestandteile eines Esterel-Programms?
Ein Esterel-Programm besteht aus Deklarationen (von Datentypen, Konstanten, Funktionen, Prozeduren und Signalen) und Instruktionen (elementare Anweisungen, Verzweigungen, Schleifen, Eingabe/Ausgabe, zeitliche Anweisungen und Ausnahmebehandlungen).
Was ist Giotto und wofür wird es verwendet?
Giotto ist ein zeitgesteuerter Programmieransatz für eingebettete Systeme, der eine zeitgesteuerte Programmiersprache, einen Compiler und ein Laufzeitsystem umfasst. Es wurde entwickelt, um die Softwareentwicklung für Systeme mit harten Echtzeitanforderungen und periodischem Verhalten zu unterstützen, insbesondere in der Automobilindustrie.
Wie unterscheidet sich der zeitgesteuerte Ansatz von Giotto von anderen Ansätzen wie Esterel?
Im Gegensatz zu Esterel, das ereignisgesteuert ist, verwendet Giotto einen zeitgesteuerten Ansatz. Es spezifiziert die genaue Echtzeitinteraktion zwischen Softwarekomponenten und der Systemumgebung und trennt zeitliche Belange von funktionalen Anforderungen.
Wer hat Giotto entwickelt und welche Hauptmerkmale hat es?
Giotto wurde an der University of California, Berkeley, im Team von Professor Thomas Henzinger entwickelt. Hauptmerkmale sind die Trennung von plattformunabhängigen funktionalen und zeitlichen Belangen von plattformspezifischen Scheduling- und Kommunikationsfragen, was zu vorhersagbarem zeitlichen Verhalten führt.
Welche Struktur und Elemente beinhaltet ein Giotto-Programm?
Ein Giotto-Programm umfasst Sensoren, Aktuatoren, Tasks und Treiber, die in Modes organisiert sind. Jeder Mode hat eine definierte Zeitperiode, Mode Ports, Task Invocations, Actuator Updates und Mode Switches. Diese Struktur ermöglicht eine klare Trennung von Timing und Funktionalität.
Welche Aufgaben hat der Giotto-Compiler?
Der Giotto-Compiler übersetzt das Giotto-Programm in ausführbaren Code, bestimmt das Scheduling für nebenläufige Tasks und entscheidet, welche Tasks auf welchen Prozessoren ausgeführt werden. Er benötigt die Worst Case Execution Time (WCET) jedes Tasks und Informationen über die Leistungsfähigkeit der Plattform.
Was sind die E-Maschine und die S-Maschine im Giotto-Laufzeitsystem?
Die E-Maschine (Embedded Machine) ist für die reaktive Interaktion mit der Systemumgebung zuständig und interpretiert den E-Code. Die S-Maschine (Scheduling Machine) regelt das proaktive Zusammenspiel mit der Plattform und interpretiert den S-Code, der die zeitliche Reihenfolge der Taskausführung spezifiziert.
Welche Vorteile bietet Giotto für die Entwicklung von Echtzeitsystemen?
Giotto verbessert die Zuverlässigkeit und Vorhersagbarkeit des Systemverhaltens durch strikte Trennung von Timing und Funktionalität. Es reduziert den Entwicklungsaufwand, indem es den Compiler für das Timing verantwortlich macht, und erlaubt einfache Änderungen am Zeitverhalten und der Funktionalität.
Warum ist Giotto besonders für sicherheitskritische Applikationen geeignet?
Giotto gewährleistet ein deterministisches Verhalten der Software, da es das Timing exakt vorgibt und die Ausführung von Tasks überwacht. Dies ermöglicht eine formale Verifikation des Systems und macht Giotto geeignet für sicherheitskritische Applikationen mit harten Echtzeitanforderungen.
Wie löst Giotto die Herausforderung der Trennung von Timing und Scheduling?
Giotto trennt Timing (Echtzeitanforderungen) von Scheduling (Aufgabenverteilung auf der Plattform). Der Entwickler spezifiziert nur das Timing und die Interaktion der Prozesse, während der Compiler das Scheduling übernimmt, was zu einer effizienten und fehlerfreien Ausführung führt.