RT System-Struktur

Zu der vorausgehenden Aufgabenstellung muss man dann ein System konstruieren, das dieser Aufgabe gerecht wird. Startpunkt bildet die allgemeine Form eines (reaktiven) Input-Output Systems als 'IO-System' bezeichnet oder einfach 'S':


$\displaystyle S(x)$ $\textstyle iff$ $\displaystyle x=\langle I,IS,O,\phi \rangle$ (2.12)
$\displaystyle I$ $\textstyle :=$ $\displaystyle Input$ (2.13)
$\displaystyle IS$ $\textstyle :=$ $\displaystyle Interne Zustaende$ (2.14)
$\displaystyle O$ $\textstyle :=$ $\displaystyle Output$ (2.15)
$\displaystyle \phi$ $\textstyle :$ $\displaystyle I \times IS \longmapsto O$ (2.16)

Eine offene Frage ist, ob es denkbar ist, dass Realzeitsysteme auch adaptive Systeme sein könnten mit der Verhaltensfunktion $\phi : I \times IS \longmapsto IS \times O$. Aufgrund der Sicherheitsanforderungen ist dies zur Zeit nicht zu sehen2.1

Im Falle eines Realzeitsystems besteht der Input aus der Menge der aktuellen Ereignisse, also $I = E'$ und der Output besteht aus den erwarteten Reaktionen, also $O = X$. Man würde also schreiben:


$\displaystyle RTS(x)$ $\textstyle iff$ $\displaystyle S(x) \& x=\langle E',IS,X,\phi \rangle$ (2.17)
$\displaystyle E'$ $\textstyle \subseteq$ $\displaystyle E, Aktueller Input$ (2.18)
$\displaystyle IS$ $\textstyle :=$ $\displaystyle Interne Zustaende$ (2.19)
$\displaystyle X$ $\textstyle :=$ $\displaystyle Output$ (2.20)
$\displaystyle \phi$ $\textstyle :$ $\displaystyle E' \times IS \longmapsto X$ (2.21)

Es bleibt die Frage, wie die internen Zustände weiter zu bestimmen sind. Dies wird hier mit Hilfe von drei Teilfunktionen beschrieben.

Wir gehen davon aus, dass man die globale Verhaltensfunktion $\phi$ in mindestens drei Teilfunktionen zerlegen kann:


$\displaystyle \phi_{RTS}$ $\textstyle =$ $\displaystyle Inp \otimes Sched \otimes Cpu$ (2.22)
$\displaystyle Inp$ $\textstyle :$ $\displaystyle CLCK \times E' \times E \times G \times Q \longmapsto Q$ (2.23)
$\displaystyle Sched$ $\textstyle :$ $\displaystyle Q \times \Pi \times CRES \times CLCK \longmapsto Q^{*}$ (2.24)
$\displaystyle Cpu$ $\textstyle :$ $\displaystyle Q^{*} \times CRES \longmapsto X$ (2.25)
$\displaystyle G$ $\textstyle :=$ $\displaystyle Tasks$ (2.26)
$\displaystyle Q$ $\textstyle :=$ $\displaystyle Aktive Tasks$ (2.27)
$\displaystyle CLCK$ $\textstyle \subseteq$ $\displaystyle Nat, Systemzeit als Natuerliche Zahlen$ (2.28)
$\displaystyle \Pi$ $\textstyle :=$ $\displaystyle Prioritaetsregeln$ (2.29)
$\displaystyle CRES$ $\textstyle :=$ $\displaystyle Kritische Ressourcen$ (2.30)
$\displaystyle Q^{*}$ $\textstyle :=$ $\displaystyle Geordnete Aktive Tasks$ (2.31)
$\displaystyle X$ $\textstyle :=$ $\displaystyle Erwarteter Output$ (2.32)

Die Inputfunktion $Inp$ nimmt aktuelle Ereignisse $E'$, ordnet diese mit Hilfe der Tabelle $E \times G$ den entsprechenden Tasks aus der Taskmenge $G$ zu und tut diese in die Menge der aktuell auszuführenden Tasks $Q$. Dabei wird jedem neuen Task eine Zeitmarke $t \in CLCK$ zugeordnet die markiert, ab wann dieser Task auf seine Abarbeitung wartet. Außerdem müssen die bislang noch nicht vollständig abgearbeiteten Tasks aus der 'alten' Menge $Q$ weiter in $Q$ behalten werden. Dabei kann überprüft werden, ob (i) ein Task 'zu Ende' ist bzw. (ii) ob bei einem Task die Deadline überschritten wurde. Bei einem unabgeschlossenen Task wäre das Kriterium für Deadline-Überschreitung aktueller Zeitpunkt t muss kleiner sein als Auftretenszeitpunkt $t_{start}+Deadline$, $t < t_{start}+Deadline$.Für diese Berechnung muss angenommen werden, dass die Angaben $\langle \phi, D, T\rangle$ aus der Aufgabenstellung in die Beschreibung eines jeden Tasks $\tau_{i} \in G$ übernommen wurde. Ferner sollte die Taskbeschreibung einen 'Pointer' enthalten, an welcher Stelle des Tasks die Abarbeitung durch die CPU möglicherweise unterbrochen wurde, also $\langle \phi, D, T, Brk\rangle$ mit $Brk$ als der Angabe des 'Breakpoints' (z.B. $Brk = Kommandoposition - 1$).

Die Schedulingfunktion $Sched$ muss die Menge der aktiven Tasks $Q$ mit Hilfe der Prioritätsregeln $\Pi$ und unter Berücksichtigung der Benutzung möglicher kritischer Ressourcen $CRES$ entlang der daraus resultierenden Prioritäten ordnen. Dazu muss u.U. auch auf die aktuelle Systemzeit zurückgegriffen werden, z.B. wenn mit der absoluten Deadline $d^{i.j}$ gerechnet werden muss.

Schließlich übernimmt die Ausführungsfunktion $Cpu$ die geordnete Menge $Q^{*}$, holt sich den Task mit der höchsten Priorität und führt diesen Task unter Berücksichtigung der möglichen Nutzung von kritischen Ressourcen $CRES$ aus. Die Berechnung beginnt bei dem aktuellen Breakpoint $Brk$. Es wird angenommen, dass ein Elementarkommando $cmd_{i} \in \tau_{i}$ genau eine Zeiteinheit der Systemzeit benötigt. Nach vollständiger Abarbeitung eines Tasks $\tau_{i}$ sollte die erwartete Reaktion $X$ nach außen 'erscheinen'.

Aus diesen ersten Überlegungen ergibt sich für die Struktur der Menge der Internen Zustände $IS$ folgender Sachverhalt:


$\displaystyle IS_{RTS}$ $\textstyle =$ $\displaystyle \langle E, G, Q, CLCK, Q^{*}, \Pi, CRES \rangle$ (2.33)
$\displaystyle G$ $\textstyle \subseteq$ $\displaystyle (\Phi \times D \times T \times BRK) \times CMD^{*} \times \{END\} \times X$ (2.34)
$\displaystyle Q$ $\textstyle \subseteq$ $\displaystyle (CLCK \times G)$ (2.35)



Subsections
Gerd Doeben-Henisch 2013-01-16