Lernziele
- Ausfalltoleranz
- hot standby
Unterlagen
- Beschreibung der Ada-Umgebung
- Ada Language Reference Manual
- Beschreibung der Modelleisenbahn und Ansteuerung
- Ergebnisse aus Aufgabe 4
Aufgabenstellung
Bisher ist der automatische und störungsfreie Zugverkehr gewährleistet, solange Störungen nur an der Eisenbahn auftreten.
Die Tatsache, dass der ganze Zugbetrieb zum Erliegen kommt, wenn ein Rechner ausfällt, ist wenig befriedigend, denn entweder fahren die Lokomotiven ohne Steuerung weiter bis etwas passiert oder die Lokomotiven bleiben stehen. Der erste Fall ist gefährlich, denn die Lokomotiven werden irgendwann zusammenstoßen, der zweite Fall ist unschön, denn es kann noch sehr weit bis zum nächsten Bahnhof sein.
Daher soll die Steuerung der Eisenbahn mit zwei Rechnern erfolgen, so dass der Zugverkehr auch beim Ausfall eines Rechners nicht unterbrochen wird. Fällt ein Rechner aus, soll dies vom anderen Rechner bemerkt und die Steuerung der Eisenbahnanlage von ihm übernommen werden.
Übernehmen außerdem Sie die Ergebnisse aus Aufgabe 4: Stellen Sie die Lokgeschwindigkeiten zueinander so ein, dass die Summe der Wartezeiten möglichst gering wird. Die Grundgeschwindigkeit kann dabei frei gewählt werden, sollte aber nicht zu schnell sein.
Vorschlag zum Vorgehen zur Lösung der Aufgabe
Mit der Steuerung aus der Aufgabe 3 ist es möglich, zwei Lokomotiven ohne Kollisionen ihren Fahrplan fahren zu lassen. Da beide Rechner nichts anderes machen, als die Eisenbahn zu steuern, ist es denkbar, ein hot-standby-Verfahren anzuwenden. Die Steuerung ist dann wie folgt zu verändern bzw. zu erweitern:
- Überwachungsmechanismus
- Die beiden Rechner müssen in regelmäßigen Abständen Nachrichten austauschen, um feststellen zu können, ob der jeweils andere Rechner ausgefallen ist.
- Aktiver/passiver Rechner
- Ein Rechner steuert als aktiver Rechner die Eisenbahn, d.h. er greift lesend und schreibend auf das Eisenbahn-Interface zu. Der zweite Rechner ist passiv und greift nur lesend auf das Eisenbahn-Interface zu, nimmt aber alle notwendigen Berechnungen intern vor, ohne die Ergebnisse ans Interface zu geben. Damit ist sichergestellt, dass beide Rechner den Systemzustand kennen. Die Festlegung, welche Steuerung aktiv und welche Steuerung passiv ist, kann über die Tastatur angegeben oder alternativ durch die Rechner automatisch ausgehandelt werden.
- Ausfall des aktiven Rechners
- Erkennt der passive Rechner, dass der bisher aktive Rechner nicht antwortet, übernimmt er die Steuerung. Dies ist ohne Unterbrechung möglich, da der Systemzustand bekannt ist.
- Ausfall des passiven Rechners
- Der Ausfall des passiven Rechners muss vom aktiven Rechner bemerkt und soll dem Benutzer durch eine entsprechende Ausgabe angezeigt werden. Am Betrieb der Eisenbahn ändert sich dadurch nichts.
Folgende vereinfachende Annahmen zum Rechnerausfall werden gemacht:
- Kommunikationsfehler treten nicht auf. Alle Nachrichten kommen unverfälscht beim Empfänger an. Dieser kann sie lesen, wenn er betriebsbereit ist.
- Mindestens ein Rechner ist immer betriebsbereit. Der seltene Fall, dass beide Rechner gleichzeitig ausfallen, wird hier nicht berücksichtigt.
Der Zustand des gesamten Systems, also welcher Rechner aktiv ist, welcher Rechner passiv ist, wie gesteuert wird, usw. muss anhand von Ausgaben an den Konsolen der Prozessrechner nachvollzogen werden können. Die in Aufgabe 3 genannten Fehler müssen weiterhin erkannt und behandelt werden.
Um den Ausfall eines Rechners zu simulieren, sehen Sie bitte einen bestimmten Tastendruck vor, der bewirkt, dass sofort alle Tasks verlassen werden. Mit einem weiteren Tastendruck nach Beendigung des Experiments kann dann das Programm verlassen werden.