Der nachfolgende Text ist eine Zusammenstellung von Fragen zur Prozessdatenverarbeitung aus mehreren zurückliegenden Klausuren. Zur Orientierung sind die Punktzahlen angegeben. Klausuren dauern üblicherweise vier Stunden und es sind maximal 100 Punkte erreichbar.
a) (1 Punkt)
Nennen Sie die Arten der Kopplung eines Prozeßrechners mit einem technischen Prozeß.
b) (1 Punkt)
Welche Arten der Strukturierung von Echtzeitprogrammen kennen Sie?
c) (2 Punkte)
Was verstehen Sie unter dem Begriff echtzeitfähig? Nennen Sie eine Technik zur zeitlichen Einplanung, die in ADA realisiert ist.
d) (2 Punkte)
Was versteht man unter einer zeitgerechten Zuteilung? Wann heißt ein Zuteilungsalgorithmus optimal?
e) (2 Punkte)
Welche Aufgabe hat das Interruptvektorregister eines externen Bausteins?
f) (2 Punkte)
Beschreiben Sie die Sprachmittel von Ada zur Ausnahmebehandlung.
g) (2 Punkte)
Ist die Programmiersprache Ada für Echtzeitanwendungen geeignet? Nennen Sie mindestens drei Argumente für Ihre Einordnung.
h) (2 Punkte)
Beschreiben Sie den Fehlerbehandlungsmechanismus in Ada. Was passiert, wenn für eine Situation keine Fehlerbehandlung vorgesehen wurde?
i) (3 Punkte)
Worin unterscheiden sich Ausnahmen und Unterbrechungen? Wie können Sie jeweils ausgelöst werden?
j) (2 Punkte)
Weshalb lassen sich in Ada Spezifikation und Implementierung eines Paketes getrennt entwerfen und übersetzen?
k) (3 Punkte)
In einer Rohrpostanlage sei ein Lichtschrankensensor zur Erfassung passierender Transportbehälter installiert. Die Behälter haben eine maximale Geschwindigkeit von 10 m/s und sind 30 cm lang. Der Abstand zwischen zwei Behältern sei größer als die Behälterlänge. Wie oft muß der Sensor vom Zentralrechner mindestens abgefragt werden, um keinen Transportbehälter zu verpassen?
l) (2 Punkte)
Was bewirkt in Ada die Vereinbarung eines privaten Typs? Was ist der Unterschied zwischen der Vereinbarung private und limited private?
m) (2 Punkte)
An wen wird eine Ausnahme fortgepflanzt, wenn diese während eines Rendezvous ausgelöst wird und innerhalb des Rendezvous keine Ausnahmebehandlungsroutine existiert?
n) (2 Punkte)
Ein analoges Sprachsignal soll abgetastet und digital übertragen werden. Die höchste Frequenz des Signals sei 4000 Hz. Das Signal wird in 256 Quantisierungsintervalle unterteilt. Welche Abtastfrequenz ist notwendig unter Berücksichtigung des Abtasttheorems von Shannon? Welches ist die resultierende Bitrate?
o) (2 Punkte)
Die Firma HardRealTime möchte einen technischen Prozeß mit harten Echtzeitanforderungen durch einen Prozeßrechner steuern. Die Beratungsfirma PushySalesmen rät zu einem Rechner mit dem Prozessor vom Typ CannotDivide, weil er 100 MIPS (million instructions per second) "schafft" und damit "echtzeitfähig" sei. Was ist an dieser Aussage zu kritisieren?
Entwerfen Sie mit den folgenden Vorgaben ein ADA-Steuerprogramm für die Überwachung eines Autorades auf Blockierung oder Schlupf.
Folgende Peripheriebausteine stehen zur Verfügung:
Das zu entwerfende Steuerprogramm soll in einer task RAD_EINS das Rad mit einem Durchmesser von 60 cm überwachen und dabei folgende Funktionen erfüllen:
a) (2 Punkte)
Definieren Sie einen Datentyp für das Auslesen des Geschwindigkeitsmessers. Die Zuweisung von Werten außerhalb des Bereichs 0..200 soll nicht zulässig sein. Erzeugen Sie eine entsprechende Variable, über die die Geschwindigkeit ausgelesen werden kann.
b) (3 Punkte)
Entwerfen Sie Datentypen und Variablen für den Zugriff auf die zwei Schnittstellenregister des Timer-Bausteins. Verwenden Sie diese Datentypen in den folgenden Teilaufgaben.
c) (2 Punkte)
Entwerfen Sie die Spezifikation der task RAD_EINS innerhalb eines Pakets RADKONTROLLE. Sorgen Sie dafür, daß den Interrupts der Peripheriegeräte entsprechende Eintrittspunkte zugeordnet werden.
d) (4 Punkte)
Berechnen Sie die kritischen Werte der Anzahl der Zählimpulse des Timer-Bausteins zwischen zwei Meldungen des Radumdrehungssensors, ab denen Blockierung bzw. Schlupf für eine gegebene Autogeschwindigkeit vAuto gemeldet werden muß. Der Rechenweg muß erkennbar sein.
e) (9 Punkte)
Geben Sie nun die Implementation des Pakets RADKONTROLLE mit der task RAD_EINS an. Die in den vorangegangenen Teilaufgaben spezifizierten Typen und Variablen müssen nicht noch einmal angegeben werden. Sicherheitshalber soll an eine übergeordnete task MAIN nach dem erfolgreichen Ausführen (Initialisieren) des Pakets RADKONTROLLE die Nachricht RAD_OKgesendet werden. Dies soll nicht aus der task RAD_EINS heraus erfolgen!
f) (2 Punkte)
Beschreiben Sie kurz, wie Sie Ihr bisheriges Programm softwaretechnisch elegant erweitern würden, wenn identische Überwachunsprozesse für alle vier Räder zu implementieren sind!
g) (3 Punkte)
Nehmen Sie an, der Autohersteller fordert von Ihnen als Zulieferer des Radüberwachungssystems, daß das Blockieren eines Rades aus Sicherheitsgründen spätestens nach einer Zehntelsekunde an das ABS-System gemeldet wird. Was müßten Sie für eine solche Zusicherung untersuchen?
Für einen Internet-Buchhandel sollen die Steuerprogramme von Händler und Kunde entworfen werden.
Das Kundenprogramm soll ein Buch (spezifiziert durch den Namen) bis zu einem gegebenen maximalen Preis erwerben und nimmt dazu Kontakt mit dem Händlerprogramm auf. Das Händlerprogramm gibt Auskunft über Vorhandensein und Preis des Buchs. Nach einer positiven Auskunft hält das Händlerprogramm das Buch für 10 Minuten reserviert. Ist das Buch vorhanden und entspricht den Preisvorstellungen des Kunden, veranlaßt das Kundenprogramm die Bezahlung bei einem Online-Bankprogramm. Danach wird dem Händlerprogramm signalisiert, daß das Buch erworben werden soll. Das Händlerprogramm überprüft nun den Geldeingang bzw. leitet das Geld bei der Bank auf das Händlerkonto. Ist alles in Ordnung, wird das Buch versandt.
Entwerfen Sie die Konzeption für eine Steuerung dieses Ablaufes mit Prozessen in Ada. Kunde, Händler und Bank sollen jeweils durch einen Prozeß vertreten werden.
a) (2 Punkte)
Zeichnen Sie eine Skizze der Prozesse und ihrer Kommunikationsbeziehungen.
b) (6 Punkte)
Geben Sie die Implementierung des Kunden- und des Händlerprozesses an. Es genügt die Darstellung der Interaktionen zwischen den Prozessen in Ada und der wesentlichen Aktionen innerhalb der Prozesse. Von weiteren Einzelheiten wie Typen- und Variablendeklarationen wird abstrahiert.
c) (2 Punkte)
Kann es in dem von Ihnen entworfenen Ada-Programm zu Verklemmungen kommen? Geben Sie mindestens zwei Möglichkeiten an, wie Sie Verklemmungen erkennen und beseitigen könnten.
Gegeben sei ein Tankbehälter. Der Behälter habe einen Abfluß und einen Zufluß, die je über ein Ventil gesteuert werden. Eine Füllstandsüberwachung liefere an einer parallelen Schnittstelle ganzzahlige Werte zwischen 0 und 100 für den Füllstand in Prozent, die Schnittstelle ist 16 Bit breit, die Bits 0…7 werden für die Zahlendarstellung benutzt (Bit 0 ist LSB), Bit 8 wird auf 0 gesetzt, wenn die Füllstandswerte gültig sind. Zusätzlich zur analogen Füllstandsüberwachung sind zwei Meßeinrichtungen für Extremwerte installiert, die Interrupts bei Erreichen des Grenzwertes auslösen.
Entwerfen Sie für diese Anlage ein Steuerprogramm in Ada. Darin wird keine Füllstandsregelung vorgenommen. Das Programm soll folgende Anforderungen erfüllen:
Hinweis 1: Benutzten Sie zur Behandlung der Extremwertmeldungen Unterbrechungsbehandlung in Standard-Ada. Die Unterbrechungsvektoren seien hexadezimal 200 für den Überlauf und hexadezimal 300 für die Leermeldung.
Hinweis 2: Das Schnittstellenregister läßt sich unmittelbar an seiner Adresse oktal 777700 auslesen.
a) (4 Punkte)
Entwerfen Sie zunächst ein Task-Konzept für das Steuerprogramm indem Sie
Prozeßspezifikationen, Eintrittspunkte der Tasks und Aufrufe spezifizieren.
Stellen Sie den Zusammenhang zwischen den Tasks übersichtlich dar!
(Mindestanforderung: je eine Task zum Auslesen der Füllstände und zur
Bedienung der Ventile)
Lösungsvorschlag
b) (2 Punkte)
Spezifizieren Sie einen Variablentyp für die
Füllstandswerte. Die Typdeklaration soll sicherstellen, daß nur
gültige Werte zugewiesen erden können.
Wie können Sie
sicherstellen, daß auf Werte außerhalb des gültigen
Bereiches (verursacht beispielsweise durch einen Fehler in der
Meßeinrichtung) angemessen reagiert wird?
Lösungsvorschlag
c) (7 Punkte)
Schreiben Sie den Prozeß zum Auslesen der Füllstandswerte
aus der parallelen Schnittstelle.
Lösungsvorschlag
d) (7 Punkte)
Schreiben Sie den Prozeß zum Öffnen und Schließen der Ventile.
Berücksichtigen Sie die Extremwertmeldungen und die Ausnahme, die
mit ihnen ausgelöst wird.
Lösungsvorschlag
Gegeben Sei eine "diebstahlsichere" Tankstelle, in der nach folgenden Regeln bedient wird:
Entwerfen Sie die Konzeption für eine Nachbildung dieses Ablaufes mit Prozessen in Ada. Kunden, Tankwart und Zapfsäule sollen jeweils durch einen Prozeß modelliert werden.
a) (3 Punkte)
Geben Sie zuerst die Spezifikationen der Prozesse an.
Lösungsvorschlag
b) (6 Punkte)
Geben Sie die Implementierungen der Prozesse an. Es genügt die Darstellung der
Interaktionen zwischen den Prozessen in Ada, von allen weiteren
Einzelheiten wird abstrahiert.
Lösungsvorschlag
c) (4 Punkte)
Kann es in dem von Ihnen entworfenen Ada-Programm zu Verklemmungen kommen? Geben Sie mindestens zwei Möglichkeiten an, wie Sie Verklemmungen erkennen und beseitigen könnten. Schätzen Sie den Aufwand für diese Maßnahemn ab.
d) (2 Punkte)
Erklären sie kurz, wie Ihr Programm modifiziert werden muß, um mehrere Kunden berücksichtigen zu können. Wie können Sie erreichen, daß Kunden bevorzugt bedient werden, die das Restgeld ausbezahlt bekommen?
In einem Flugzeug wird das Erfassen und Anzeigen von Beschleunigungsdaten betrachtet: ein Sensor liefert mit hoher Frequenz Meßwerte, diese Werte werden einerseits weiterverarbeitet und andererseits im Cockpit angezeigt. Die Anzeige kann wegen der Trägheit des menschlichen Auges mit einer niedrigeren Frequenz erfolgen.
Die Steuerung soll mit zwei Ada-Prozessen durchgeführt werden:
-task EINLESEN
-task ANZEIGEN
Der Prozeß EINLESEN liest die Werte über eine parallele Schnittstelle durch Hardware-Unterbrechungen gesteuert ein. EINLESEN stellt den jeweils aktuellsten Wert anderen Prozessen zur Verfügung. Der Prozeß ANZEIGEN gibt zyklisch alle 50 ms den aktuellsten Wert aus.
Das Datenregister der parallelen Schnittstelle befindet sich an der Adresse hexadezimal FFF58000 plus einem Offset von hexadezimal A1. Die Bits 0..11 des Registers werden für die Zahlendarstellung des Meßwertes benutzt (Bit 0 ist LSB). Der Unterbrechungsvektor befindet sich an der Adresse oktal 500. Die Unterbrechung wird ausgelöst, wenn ein gültiger Datenwert vorliegt.
In beiden Prozessen wird die Einhaltung von Zeitschranken überprüft: der Prozeß EINLESEN soll eine Ausnahme auslösen, falls nach einer längeren Periode als 10 ms kein neuer Meßwert vom Sensor übermittelt wurde und der Prozeß ANZEIGEN soll eine Ausnahme auslösen, falls zwischen zwei Ausgaben mehr als 150 ms liegen.
Hinweise: Weitere Prozesse zur Zeitüberwachung sind nicht notwendig. Für den Prozeß ANZEIGEN reicht es aus, wenn die Überprüfung der Zeitbedingung jeweils nach der Ausgabe erfolgt.
a) (1 Punkt)
Stellen Sie die Prozeßstruktur mit den Eintrittspunkten und Kommunikationsbeziehungen grafisch dar.
b) (3 Punkte)
Geben Sie die Prozeßspezifikationen an. (Hinweis: Typen
und Variablen zum Einlesen des Datenwertes sollen erst im
nächsten Aufgabenteil angegeben werden.)
Lösungsvorschlag
c) (4 Punkte)
Zum Einlesen des Meßwertes sollen die hardwarenahen Sprachkonzepte
von Ada eingesetzt werden. Geben Sie die notwendigen Typ- und
Variablenvereinbarungen an.
d) (6 Punkte)
Geben Sie den Prozeßrumpf von EINLESEN an. Berücksichtigen
Sie die Zeitüberwachung und das Auslösen einer Ausnahme bei
Zeitüberschreitungen. (Hinweis: Die Zeit zum Ausführen des
Programms und zum Einlesen der Meßwerte sowie mögliche
Prozeßwechsel sollen bei der Zeitüberwachung beachtet
werden.)
Lösungsvorschlag
e) (6 Punkte)
Geben Sie den Prozeßrumpf von ANZEIGEN an. Berücksichtigen
Sie die Zeitüberwachung und das Auslösen einer Ausnahme bei
Zeitüberschreitungen. (Hinweis: Die Zeit zum Ausführen
des Programms und zum Einlesen der Meßwerte sowie mögliche
Prozeßwechsel sollen bei der Zeitüberwachung beachtet werden.)
Lösungsvorschlag
Das Abfertigen von Zügen in einem Berliner U-Bahnhof soll durch ein Ada-Programm nachgebildet werden. Betrachtet wird das Ein- und Ausfahren der Züge, der mit "preußischer Liebenswürdigkeit" agierende Abfertiger und die Fahrgäste. Die folgenden Abstimmungen sind zwischen Zug, Abfertiger und Fahrgästen nötig:
Das Programm soll aus den folgenden 3 Ada-Prozessen bestehen:
a) (2 Punkte)
Entwerfen Sie die Prozeßstruktur und stellen Sie diese grafisch dar. Die Grafik soll die Eintrittspunkte und Kommunikationsbeziehungen enthalten.
b) (3 Punkte)
Geben Sie die Prozeßspezifikationen an.
Lösungsvorschlag
c) (3 Punkte)
Geben Sie den Prozeßrumpf von ZUG an.
Lösungsvorschlag
d) (4 Punkte)
Geben Sie den Prozeßrumpf von ABFERTIGEN an.
Lösungsvorschlag
e) (4 Punkte)
Geben Sie den Prozeßrumpf von FAHRGAESTE an.
Lösungsvorschlag
f) (3 Punkte)
Falls sich nach der Ansage "Zurückbleiben" und vor der Abfahrt des Zuges eine Gefahrensituation ergibt, kann die Abfahrt von den Fahrgästen verhindert werden. Dazu wird die Notbremse gezogen. Wie muß Ihre Implementierung verändert werden, um dieses nachzubilden?
g) (1 Punkt)
Kann es nach der Änderung in f) zu Verklemmungen zu kommen? Begründung?