2.1 Anforderungen
33
Die Standardtheorien der Informatik modellieren Zeit allerdings nur auf eine sehr
abstrakte Art. Die O-Notation2 ist ein Beispiel dafür. Sie gibt nur Wachstumsraten von Funktionen wieder und wird häufig genutzt, um die Laufzeiten von
Algorithmen zu modellieren. Dabei ist sie aber nicht dazu in der Lage, echte
Ausführungszeiten zu ermitteln. Physikalische Größen besitzen Einheiten, die
O-Notation jedoch nicht. Damit kann sie nicht zwischen Femtosekunden und
Jahrhunderten unterscheiden. Ähnlich verhält es sich mit Eigenschaften der Terminierung von Prozessen. Es gibt Beweise, die zeigen, dass ein bestimmter Algorithmus irgendwann einmal terminiert. Bei Echtzeitsystemen hingegen müssen
wir nachweisen, dass ein Algorithmus innerhalb einer vorgegebenen Zeitspanne
terminiert, aber der Algorithmus als Ganzes muss evtl. ausgeführt werden, bis
die Spannungsversorgung ausgeschaltet wird.
Burns und Wellings [79] definieren die folgenden vier Kontexte für die Angabe
von Zeiten in Spezifikationssprachen:
– Methoden zur Messung der vergangenen Zeit:
Viele Anwendungen müssen überprüfen, wie viel Zeit seit dem Ende einer
bestimmten Berechnung vergangen ist. Dies ließe sich durch einen Zeitgeber
(engl. timer) realisieren.
– Eine Möglichkeit, Prozesse3 um eine bestimmte Zeit zu verzögern:
Echtzeitsprachen stellen üblicherweise Möglichkeiten zur Verfügung, die Ausführung hinauszuzögern. Leider garantieren die verbreiteten Softwareimplementierungen eingebetteter Systeme keine präzisen Verzögerungen. Wir nehmen an, dass ein Prozess τ um eine Zeit ∆ verzögert werden soll. Meist wird
dies implementiert, indem der Zustand von Prozess τ im Betriebssystem von
„laufend” oder „bereit” auf „blockiert” gesetzt wird. Am Ende des Zeitintervalls wird der Zustand von τ dann von „blockiert” auf „bereit” gesetzt. Dies hat
aber nicht zur Folge, dass der Prozess sofort danach ausgeführt wird. Wenn
gleichzeitig ein Prozess mit höherer Priorität läuft oder keine Verdrängung
(kein Anhalten eines laufenden Prozesses, engl. preemption) verwendet wird,
ist die wirkliche Verzögerung des Prozesses größer als ∆.
– Eine Möglichkeit, Timeouts anzugeben:
In vielen Situationen muss auf das Eintreten eines bestimmten Ereignisses
gewartet werden. Wenn dieses Ereignis nicht innerhalb einer bestimmten
Zeitspanne auftritt, möchten wir darüber informiert werden. So könnten wir
beispielsweise auf eine Antwort von einer Netzwerkverbindung warten. Wir
würden gerne informiert werden, wenn diese Antwort nicht innerhalb einer
bestimmten Zeit ∆ angekommen ist. Dies ist der Zweck von Timeouts. Die
meisten Echtzeitsprachen besitzen auch ein Timeout-Sprachelement. Die Implementierung von Timeouts bringt dieselben Probleme mit sich, wie sie bereits
für Verzögerungen beschrieben wurden.
– Methoden, um Zeitschranken und Abläufe (Schedules) anzugeben:
2 Gemäß Seite 22 hier als bekannt vorausgesetzt.
3 Prozesse sind in Ausführung befindliche Programme, siehe Definition 2.3.
Précédent

- 56/485

Suivant