-
Die Erfindung betrifft ein Verfahren zur Kontrolle
des korrekten Ablaufs eines Programms in einem sogenannten
Multitask-Rechner mit Hilfe eines oder mehrerer Prozessoren,
in denen die Programmaufgaben Nachrichten aussenden und
unter Berücksichtigung solcher Nachrichten ausgeführt
werden, wobei die Nachrichten je eine Zeitmarke enthalten. Die
Druckschrift US-A-4 251 885 bietet ein Beispiel für ein
System, in dem die korrekte Ausführung einer Subroutine
durch Erzeugung eines besonderen Kodes gemeldet wird.
-
Die Ausführung eines Multitask-Programms ist korrekt,
wenn die folgenden vier Bedingungen erfüllt sind (die
Prozessoren sind nicht gestört).
-
1) Jede Aufgabe sendet eine oder mehrere Nachrichten
als Antwort auf die Berücksichtigung einer oder mehrerer
weiterer Nachrichten nach einer Zeitverzögerung aus, die
unterhalb der bei Konzeption des Programms vorgegebenen
Verzögerung liegt.
-
2) Jede von einer Aufgabe ausgesendete Nachricht wird
korrekt an die Aufgaben übermittelt, für die diese Nachricht
bestimmt ist.
-
3) Jede von einer Aufgabe ausgesendete Nachricht hat
einen korrekten Wert.
-
4) Die Aufgaben berücksichtigen einerseits die
Nachrichten, die für sie bestimmt sind, in einer
chronologischen Reihenfolge, die bei der Konzeption des Programms
festgelegt wurde, und werden andererseits gemäß einer
chronolögischen Reihenfolge ausgeführt, die ebenfalls bei der
Konzeption des Programms festgelegt wurde. Nachfolgend gilt,
daß die normale Ausführung des Programms einen unzyklischen
Graphen bestimmt, dessen Endpunkte die Aufgaben und dessen
Verbindungslinien den Fluß der Nachrichten zwischen den
Aufgaben bilden.
-
Um zu kontrollieren, ob die erste Bedingung erfüllt
ist, ist es bekannt, daß die Zeitmarken in den Aufgaben
durch die Nachrichten gereicht werden und in jeder Aufgabe
die Marke jeder Nabhricht in einem durch einen Taktgeber
bestimmten örtlichen Zeitpunkt verglichen wird.
-
Um zu kontrollieren, ob die zweite Bedingung erfüllt
ist, verwendet man bekanntlich Fehlererkennungskodes,
beispielsweise vom Typ CRC.
-
Um zu kontrollieren, ob die dritte Bedingung erfüllt
ist, wiederholt man bekanntlich die Aufgaben des Programms
und wendet Mehrheitsentscheidungen an.
-
Ziel der Erfindung, wie sie in den Ansprüchen
definiert ist, ist es, eine Lösung für die Kontrolle anzugeben,
ob die vierte Bedingung erfüllt ist. Diese Bedingung ist
nicht erfüllt, wenn beispielsweise Nachrichten
verlorengegangen oder dupliziert wurden oder auch von den Aufgaben
weggelassen wurden. Ein Verfahren zur Kontrolle, ob diese
vierte Bedingung von einem Programm eines Multitask-Rechners
erfüllt wird, ist aus der Druckschrift IEEE 1991 "Logical
Time in Distributed Computing Systems", Colin Fidge,
beschrieben. In diesem bekannten Verfahren erarbeitet jede
eine Nachricht aussendende Aufgabe einen dieser Nachricht
zugeordneten Ausführungsschlüssel, der eine kausale
Abhängigkeitsbeziehung für diese Nachricht identifiziert, die
durch die chronologische Reihenfolge der Ausführung der
Aufgaben und die chronologische Reihenfolge der
Berücksichtigung der Nachrichten durch diese Aufgaben definiert ist,
welche zur Aussendung dieser Nachricht durch diese
aussendende Aufgabe geführt haben. Jeder Ausführungsschlüssel
besteht aus einer Liste von Zählern, und zwar ein Zähler für
jede Aufgabe des Programms, die einen Zeitvektor bilden.
Jedesmal, wenn eine Aufgabe eine Nachricht für eine
Zielaufgabe aussendet, inkrementiert sie in ihrem Zeitvektor den
entsprechenden Zähler und überträgt eine Kopie dieses
Zeitvektors an die Zielaufgabe. Die Zielaufgabe aktualisiert
ihren eigenen Zeitvektor, indem sie für jeden Zähler den
größeren der Werte dieses Zählers zwischen seinem Zeitvektor
und dem empfangenen Zeitvektor nimmt. Ein Problem, das sich
bei diesem bekannten Verfahren stellt, besteht darin, daß
die Ausführungsschlüssel eine sehr große Zahl von Bits
besitzen, die linear von der Anzahl der Aufgaben des
Programms abhängt (ein Zähler für jede Aufgabe). Daraus folgt,
daß die Übertragung der Ausführungsschlüssel zwischen
Nachrichten aussendenden Aufgaben und solche Nachrichten
empfangenden Aufgaben viel Zeit erfordert und ggf. die
Echtzeitausführung des Rechnerprogramms beeinträchtigt.
-
Außerdem ist in diesem bekannten Verfahren keine
automatische Kontrolle der korrekten Ausführung eines
Multitask-Rechnerprogramms während seines operationellen Betriebs
vorgesehen. Dieses Verfahren wird nämlich in erster Linie
für das Debugging eines Multitask-Rechnerprogramms
verwendet.
-
Ziel der Erfindung ist es, diese Nachteile zu
beheben. Hierzu ist Gegenstand der Erfindung ein Verfahren zur
Kontrolle des korrekten Ablaufs eines
Multitask-Rechnerprogramms, dadurch gekennzeichnet, daß jeder
Ausführungsschlüssel durch die Exklusiv-ODER-Verknüpfung Bit für Bit
von Binärwörtern gebildet wird, die je die binäre
Repräsentation einer Aufgabenidentifikation oder einer
Nachrichtenidentifikation oder einer Nachrichten-Zeitmarke enthalten,
wobei die Bits jedes Binärworts vorher zyklisch mit
unterschiedlichen Umfängen für jedes Wort permutiert werden.
-
Die Anzahl von Bits eines solchen
Ausführungsschlüssels hängt daher nur von der Anzahl der Bits ab, die für die
binäre Darstellung der Identifizierung der Aufgabe oder
einer Nachricht oder einer Zeitmarke erforderlich ist, wozu
ggf. die Anzahl von Bits kommt, die für die zirkulare
Permutation größten Umfangs verwendet werden.
-
Die Bit-für-Bit-Kornbination ist vorzugsweise eine
Exklusiv-ODER-Verknüpfung Bit-für-Bit.
-
Wenn das Multitask-Rechnerprogramm eine
Industrieanlage
steuert, beispielsweise eine Eisenbahnanlage, kann
ein Ausführungsfehler des Multitask-Programms schwerwiegende
Folgen haben. Es ist daher nützlich oder sogar notwendig,
die korrekte Ausführung eines solchen Rechnerprogramms
während seines Ablaufs so zu kontrollieren, daß bei
Auftreten eines Ausführungsfehlers ein Alarm ausgegeben werden
kann und eine restriktive Steuerung für die gesteuerte
Anlage erzeugt werden kann. Hierzu sendet gemäß einem
anderen Aspekt der Erfindung mindestens eine der Aufgaben
mindestens eine Nachricht in Antwort auf die Berücksichtigung
mindestens einer Eingangsnachricht aus, wobei ein Vergleich
zwischen dem an letzter Stelle von einer Aufgabe des
Programms erarbeiteten Ausführungsschlüssel und einem aufgrund
der Eingangsnachricht erarbeiteten Bezugsschlüssel
durchgeführt wird, auf dessen Basis ein Ausführungsfehler erfaßt
werden kann.
-
Ein Ausführungsbeispiel der Erfindung wird nun anhand
der beiliegenden Zeichnungen näher erläutert.
-
Figur 1 zeigt schematisch die Struktur einer
Datenverarbeitungsanlage, in der das erfindungsgemäße Verfahren
durchgeführt wird.
-
Figur 2 zeigt schematisch Aufgaben eines Multitask-
Rechnerprogramms, die miteinander über Nachrichten in
Verbindung stehen.
-
Figur 3 zeigt ein Zeitdiagramm, aus dem die
Reihenfolge der Ausführung der Aufgaben des in Figur 2 gezeigten
Programms und die Reihenfolge der Berücksichtigung der
Nachrichten durch diese Aufgaben hervorgeht.
-
Figur 4a zeigt schematisch einen Ausführungsgraphen
eines Multitask-Rechnerprogramms.
-
Figur 4b zeigt genauer ausgeführt einen
Bezugsschlüssei in Form einer Kausalitätskette.
-
Figur 5 zeigt, wie ein Ausführungsschlüssel von einer
eine Nachricht aussendenden Aufgabe erarbeitet wird.
-
Gemäß Figur 1 wird die Struktur der
Datenverarbeitungsanlage,
die zur Durchführung des erfindungsgemäßen
Verfahrens vorgesehen ist, einerseits von mindestens einem
Prozessor 1, 1', 1", die je eine oder mehrere Aufgaben eines
zu kontrollierenden Multitask-Programms wie z.B. 10 in Figur
2 ausführen sollen, und von einem fehlerfreien Eingangsorgan
3 und einem fehlerfreien Ausgangsorgan 4 gebildet, die bei
einem Fehler miteinander über eine spezialisierte Verbindung
und mit den Prozessoren über einen Bus 2 verkehren. Solche
Eingangs- und Ausgangsorgane können als besondere
Prozessoren betrachtet werden, die programmiert sind, um die
folgenden Aufgaben zu erfüllen: Für jedes Datensignal E, das für
das zu kontrollierende Programm bestimmt ist, bildet das
Eingangsorgan 3 eine Eingangsnachricht einschließlich einer
Zeitmarke und übermittelt diese parallel an das Programm und
an das Ausgangsorgan 4. Wie nachfolgend beschrieben
erarbeiten die Aufgaben während der Ausführung des Programms durch
die Prozessoren Ausführungsschlüssel immer dann, wenn sie
eine Nachricht aussenden. Parallel dazu berechnet das
Ausgangsorgan einen Bezugsausführungsschlüssel aus der vom
Eingangsorgan gelieferten Eingangsnachricht. Auf der Basis
eines Vergleichs des letzten Ausführungsschlüssels, der von
einer Aufgabe des Programms erarbeitet wurde, mit dem
Bezugsausführungsschlüssel erfaßt das Ausgangsorgan 4 das
Vorliegen oder Nichtvorliegen eines Ausführungsfehlers und
liefert ein Ausgangssignal 5 entsprechend dem
Vergleichsergebnis.
-
In Figur 2 ist ein einfaches Beispiel eines
Multitask-Rechnerprogramms 10 dargestellt. Es enthält sechs
Aufgaben 13 mit den Bezeichnungen Pa, Pb, Pc, Pd, Pe, Pf,
die interne Nachrichten 12 mit den Bezeichnungen r2, r3, r4,
r5, r6, r8, r9 aussenden. Die Aufgaben Pa und Pe empfangen
Eingangsnachrichten 11, die die Bezeichnungen r1 und r7
tragen. Als Antwort auf die Nachricht r1 sendet die Aufgabe
Pa, wenn sie ausgeführt wird, die Nachrichten r2 und r3 aus.
-
Als Antwort auf die Nachricht r7 sendet die Aufgabe Pe, wenn
sie ausgeführt wird, die Nachricht r8 aus. Die Aufgaben Pb,
Pc, Pd, Pf werden bei Berücksichtigung einer oder mehrerer
interner Nachrichten ausgeführt und die Aufgabe Pf, die als
letzte ausgeführt wird, sendet die Ausgangsnachricht r9.
-
In Figur 3 zeigt das Diagramm den normalen
chronologischen Ablauf der Ausführung der Aufgaben 13 des Programms
und den normalen chronologischen Ablauf der
Berücksichtigung der Eingangsnachrichten 11 oder internen Nachrichten 12
durch diese Aufgaben. In diesem Beispiel berücksichtigt die
Aufgabe Pe die Nachricht r7, ehe die Aufgabe Pa die
Nachricht r1 berücksichtigt. Außerdem sendet die Aufgabe Pf die
Nachricht r9 aus, wenn sie die Nachrichten r6 und r8
berücksichtigen kann, die von der Berücksichtigung der Nachrichten
r7 und r1 durch die Aufgaben Pe und Pa resultieren.
-
Das Verfahren zur Erarbeitung der
Ausführungsschlüssel durch die Aufgaben wird nun anhand des Beispiels des
Programms 10 aus Figur 2 beschrieben,
-
1. Fall: Aufgaben Pa und Pe
-
Die Aufgaben Pa und Pe berücksichtigen je eine
Eingangsnachricht 11, die vom Eingangsorgan 3 geliefert
wird. Jede Eingangsnachricht enthält mindestens eine
Identifikation der Nachricht, eine Zeitmarke und Daten. Die
Identifikation der Nachricht wird üblicherweise vom Symbolnamen
der Nachricht gebildet, der im Augenblick der Konzeption des
Programms definiert wurde. Die Zeitmarke ist üblicherweise
eine Systemangabe, die vom Eingangsorgan der
Eingangsnachricht zugeordnet wird. Wenn mehrere Eingangsnachrichten
durch das Eingangsorgan mit gleichen
Nachrichtenidentifikatiorien geliefert werden, haben sie notwendigerweise
unterschiedliche Zeitmarkenwerte. Außerdem verfügt jede Aufgabe
über eine Aufgabenidentifikation und über die Identifikation
jeder internen Nachricht, die sie aussendet. Die
Aufgabenidentifikation ist der Symbolname der Aufgabe, der bei der
Konzeption des Programms definiert wurde. In gleicher Weise
wird die interne Nachrichtenidentifikation durch den
Symbolnamen
der internen Nachricht gebildet, der bei der
Konzeption des Programms definiert wurde. Als Antwort auf die
Berücksichtigung der Nachricht r1 erfaßt die Aufgabe Pa
während ihrer Ausführung die Nachrichtenidentifikation und
die Zeitmarke der Nachricht r1. Sie erarbeitet einen der
internen Nachricht r2 zugeordneten Ausführungsschlüssel wie
folgt: Die binären Darstellungen der
Nachrichtenidentifikation r1, der Zeitmarke dieser Nachricht r1, der
Aufgabenidentifikation der Aufgabe Pa und der Nachrichtenidentifika
tion r2 liegen je in Speicherregistern einer Länge von B
Bits. Eine zyklische Permutation wird auf die Bits jedes
Speicherregisters mit einem Umfang angewendet, der unter
einer vorher gespeicherten und für die Aufgabe Pa
zugänglichen Liste verschiedener Umfänge ausgewählt wird. Die
Permutationen in den verschiedenen Speicherregistern haben
unterschiedliche Umfänge, die aus der Umfangsliste genommen
werden. Diese Umfangsliste kann aus einer Liste von
ganzzahligen Werten bestehen, die in zunehmender Reihenfolge
geordnet sind und mit dem Wert 1 beginnen, z.B. 1, 2, 3, ... usw.
Nach der Permutation werden die Werte der Speicherregister
Bit für Bit ohne Übertrag addiert, um eine
Ausführungssignatur Sex(r2) in Form eines Binärworts mit B Bits zu erhalten.
Der Ausführungsschlüssel Cex(r2), der der Nachricht r2
zugeordnet ist, besteht aus der berechneten
Ausführungssignatur Sex(r2) und einem Aufgabenbeitragszähler Nex(r2).
Für den Nachrichtenausführungsschlüssel r2 ist der Wert
Nex(r2) des Zählers auf 1 festgelegt, da er von keiner
anderen Aufgabe abhängt, die vorher ausgeführt werden muß.
-
Die Aufgabe Pa erarbeitet auch einen
Ausführungsschlüssel Cex(r3), der der Nachricht r3 ähnlich wie für die
Nachricht r2 beschrieben zugeordnet ist, wobei die
symbolische Darstellung der Nachricht r2 durch die symbolische
Darstellung der Nachricht r3 ersetzt ist. Der Wert des
Zählers Nex(r3) ist auch auf den Wert 1 festgelegt.
-
Ähnlich erarbeitet die Aufgabe Pe, wenn sie
ausgeführt
wird, einen Ausführungsschlüssel Cex(r8) für die
Nachricht r8, wie oben beschrieben. Der Wert des Zählers
Nex(r8) ist auf 1 festgelegt.
-
Die von den Aufgaben Pa und Pe erarbeiteten
Ausführungsschlüssel werden mit den Nachrichten r2, r3, r8 an
die diese Nachrichten empfangenden Aufgaben übermittelt,
d.h. daß der Ausführungsschlüssel Cex(r2) an die Aufgabe Pb,
der Ausführungsschlüssel Cex(r3) an die Aufgabe Pc und der
Ausführungsschlüssel Cex(r8) an die Aufgabe Pf übertragen
wird.
-
2. Fall: Aufgaben Pb, Pc, Pd
-
Jede dieser Aufgaben berücksichtigt eine interne
Nachricht, die von einer Aufgabe ausgesendet wurde. Sie
empfängt daher einen der Nachricht zugeordneten
Ausführungsschlüssel, den sie berücksichtigt. Diese Aufgaben hängen von
einer Aufgabe ab, die vor ihnen ausgeführt wurde.
-
Die Aufgabe Pb entnimmt aus dem Ausführungsschlüssel
Cex(r2) die Signatur Sex(r2) und den Zähler Nex(r2) sowie
aus der Nachricht r2 die Identifikation und die Zeitmarke
dieser Nachricht. Die Zeitmarke der Nachricht r2 gleicht der
der Nachricht r1, da die Nachricht r2 unmittelbar von der
Nachricht r1 abgeleitet wird. Die Aufgabe Pd erarbeitet
einen Ausführungsschlüssel Cex(r4) für die Nachricht r4 wie
folgt: Die binären Darstellungen der Identifikation der
Nachricht r2, der der Nachricht r2 zugeordneten Zeitmarke,
der Identifikation der Aufgabe Pb und der Identifikation der
Nachricht r4 werden je in einem Speicherregister mit einer
Länge von B Bits angeordnet. Eine zyklische Permutation wird
auf die Bits jedes Speicherregisters mit einem Umfang
angewandt, der aus der gleichen Umfangsliste wie für die Aufgabe
Pa entnommen wird. Nach der Permutation werden die Werte der
Speicherregister Bit für Bit addiert, um die partielle
Ausführungssignatur Spex(r4) in Form eines Binärworts B Bits
zu erhalten. Eine zyklische Permutation wird auf die Bits
von Spex(r4) mit einem Umfang von Nex(r2) angewandt. Nach
der Permutation der Bits werden die Werte von Sex(r2) und
Spex(r4) Bit für Bit ohne Übertrag addiert, um eine
Ausführungssignatur SeK(r4) in Form eines Binärworts mit B Bits
zu erhalten. Der Ausführungsschlüssel Cex(r4), der der
Nachricht r4 zugeordnet ist, wird von Sex(r4) und einem
Zähler Nex(r4) gebildet, dessen Wert dem Wert von Nex(r2)+1
gleicht.
-
In gleicher Weise erarbeitet die Aufgabe Pc einen
Ausführungsschlüssel Cex(r5).
-
Um den Ausführungsschlüssel, der der Nachricht r6
zugeordnet ist, zu erarbeiten, entnimmt die Aufgabe Pd
zuerst aus den Ausführungsschlüsseln Cex(r4) und Cex(r5) die
Ausführungsschlüssel Sex(r4) und Sex(r5) und die Zähler
Nex(r4) und Nex(r5). Dann entnimmt sie aus den Nachrichten
r4 und r5 ihre Nachrichtenidentifikation und ihre Zeitmarke.
Die Zeitmarke der Nachrichten r4 und r5 gleicht der der
Nachrichten r1.
-
Die Aufgabe Pd erarbeitet während ihrer Ausführung
einen Ausführungsschlüssel Cex(r6) für die Nachricht r6 wie
folgt: Die binären Darstellungen der Identifikation der
Nachricht r5, der der Nachricht r5 zugeordneten Zeitmarke,
der Identifikation der Nachricht r4, der Zeitmarke der
Nachricht r4, der Identifikation der Aufgabe Pd und der
Identifikation der Nachricht r6 werden je in einem
Speicherregister mit einer Länge von B Bits eingespeichert. Eine
zyklische Permutation wird auf die Bits jedes
Speicherregisters mit einem Umfang gemäß der gleichen Umfangsliste wie
für die Aufgabe Pa angewandt. Nach der Permutation werden
die Werte der Speicherregister Bit für Bit ohne Übertrag
addiert, um eine partielle Ausführungssignatur Spex(r6) in
Form eines Binärworts von B Bits zu ergeben. Eine zyklische
Permutation wird auf die Bits von Sex(r5) mit einem Umfang
gleich Nex(r4) und auf die Bits von Spex(r6) mit einem
Umfang gleich Nex(r4)+Nex(r5) angewandt. Nach der Permuta
tion der Bits werden die Werte von Sex(r5), Sex(r4) und
Spex(r6)
Bit für Bit ohne Übertrag addiert, um eine
Ausführungssignatur Sex(r6) in Form eines Binärworts von B Bits
zu ergeben. Der Ausführungsschlüssel Cex(r6), der der
Nachricht r6 zugeordnet ist, wird von Sex(r6) und einem Zähler
Nex(r6) gebildet, dessen Wert der Summe Nex(r4)+Nex(r5)+1
gleicht.
-
Um einen Ausführungsschlüssel zu erarbeiten, der der
Nachricht r9 zugeordnet ist, entnimmt die Aufgabe Pf zuerst
aus den Ausführungsschlüsseln Cex(r6) und Cex(r8) die
Ausführungssignaturen Sex(r6) und Sex(r8) und die Zähler
Nex(r6) und Nex(r8). Sie entnimmt dann aus den Nachrichten
r6 und r8 deren Nachrichtenidentifikation und deren
Zeitmarke. Die Zeitmarke der Nachricht r6 gleicht der der Nachricht
r1 und die Zeitmarke der Nachricht r8 gleicht der der
Nachricht r7.
-
Die Aufgabe Pf erarbeitet bei ihrer Ausführung einen
Ausführungsschlüssel Cex(r9) für die Nachricht r9 wie folgt:
Die binären Darstellungen der Identifikation der Nachricht
r8, der der Nachricht r8 zugeordneten Zeitmarke, der
Identifikation der Nachricht r6, der Zeitmarke der Nachricht r6,
der Identifikation der Aufgabe Pf und der Identifikation der
Nachricht r9 werden je in einem Speicherregister mit einer
Länge von B Bits untergebracht. Eine zyklische Permutation
wird auf die Bits jedes Speicherregisters mit einem Umfang
angewandt, der aus der gleichen Liste von Umfängen wie für
die Aufgabe Pa oder Pe entnommen wird. Nach der Permutation
werden die Werte der Speicherregister Bit für Bit ohne
Übertrag addiert, um eine partielle Ausführungssignatur
Spex(r9) in Form eines Binärworts von B Bits zu ergeben.
Eine zyklische Permutation wird auf die Bits von Sex(r8) mit
einem Umfang gleich Nex(r6) und auf die Bits von Spex(r9)
mit einem Umfang gleich Nex(r8)+Nex(r6) angewandt. Nach der
Permutation der Bits werden die Werte von Sex(r8), Sex(r6)
und Spex(r9) Bit für Bit ohne Übertrag addiert und ergeben
eine Ausführungssignatur Sex(r9) in Form eines Binärworts
mit
B Bits. Der Ausführungsschlüssel Cex(r9), der der
Nachricht r9 zugeordnet ist, wird von Sex(r9) und einem Zähler
Nex(r9) gebildet, dessen Wert der Summe Nex(r8)+Nex(r6)+1
gleicht. Der Ausführungsschlüssel Cex(r9) wird an das
Ausgangsorgan 4 übermittelt.
-
Außerdem wird ein Bezugsausführungsschlüssel Cref(r9)
durch das Ausgangsorgan 4 ausgehend von den
Eingangsnachrichten r1 und r2 erarbeitet, indem der oben für den
normalen Ausführungsgraphen des Programms 10 beschriebene Prozeß
wiederholt wird, so daß ein Ausführungsfehler durch
Vergleich des Bezugsausführungsschlüssels Cref(r9) mit dem
Ausführungsschlüssel Cex(r9) erkannt werden kann. Wenn
während der Ausführung des Programms 10 mehrere Nachrichten
r1 und mehrere Nachrichten entsprechend r7 ausgesendet
werden und wenn beispielsweise eine Nachricht r1 von der
Aufgabe Pa weggelassen wurde, dann haben bestimmte
Nachrichten r6 und r7, die von der Aufgabe Pf berücksichtigt werden,
unterschiedliche Zeitmarken. Daraus ergibt sich, daß ein
Ausführungsfehler vom Ausgangsorgan 4 erkannt wird.
-
Der normale Ausführungsgraph des Programms 10 kann
leicht, beispielsweise beim Kompilieren, durch Analyse der
Syntax des Quellenkodes des Programms 10 erhalten werden,
aus dem die symbolischen Namen der Eingangsnachrichten, der
internen Nachrichten und der Aufgaben sowie der kausale
Abhängigkeitsbezug der Nachricht r9 entnommen werden. In
Figur 4a ist ein normaler Ausführungsgraph eines Multitask-
Programms dargestellt. In dieser Figur enthält das Programm
drei Aufgaben 13 mit dem Namen T1, T2, und T3. Die Aufgaben
Tl und T2 empfangen parallel eine Eingangsnachricht 11,
deren Identifikation durch das Symbol e bezeichnet ist. Die
Aufgaben T1 und T2 senden je als Antwort auf die
Eingangsnachricht 11 die internen Nachrichten 12 aus, deren
Identifikationen durch die Symbole a und b bezeichnet sind. Die
Aufgabe T3 sendet als Antwort auf die internen Nachrichten
12 zwei interne Nachrichten aus, deren Identifikationen
durch die Symbole c und d bezeichnet sind. Ausgehend von
diesem Ausführungsgraphen können Kausalitätsketten für jede
von einer Aufgabe ausgesendete interne Nachricht automatisch
konstruiert werden. Figur 4b zeigt verschiedene Kausalitäts
ketten 41, 42, 45, 46, die für die Nachrichten a, b, c, d
erarbeitet wurde. Wenn die Symbole T1, T2, T3
Identifikationen der Aufgaben T1, T2, T3 und die Symbole Θ(e), Θ(a) und
Θ(b) (hier gilt Θ(a) = Θ(b) = Θ(e)), die den Nachrichten e,
a, b zugewiesenen Zeitmarken bezeichnen, enthält jede
Kausalitätskette alle symbolisch dargestellten Elemente, die von
einer Aufgabe verwendet werden, um eine Ausführungssignatur
zu erarbeiten. So entspricht die Kausalitätskette 41 dem
Wert Sex(a), die Kette 42 dem Wert Sex(b), die Kette 45 dem
Wert Sex(c) und die Kette 46 dem Wert Sex(d). In den Ketten
Sex(c) und Sex(d) liegen auch die partiellen Signaturen 44
und 43 mit den Werten Spex(c) und Spex(d). Das Ausgangsorgan
kann daher solche Kausalitätsketten erarbeiten, in denen die
Werte der Zeitmarken der Nachrichten abhängig von den vom
Eingangsorgan gelieferten Eingangsnachrichten aktualisiert
werden, und dann die Elemente (Symbole) der
Kausalitätsketten kombinieren, um einen einem Zeitmarkenwert
entsprechenden Bezugsausführungsschlüssel zu erhalten.
-
Das erfindungsgemäße Verfahren wird nun ganz
allgemein anhand der Figur 5 beschrieben.
-
Nachfolgend werden die folgenden Definitionen
verwendet:
-
B ist eine ganze Zahl, die die Anzahl der Bits
angibt, die für die binäre Darstellung einer
Ausführungssignatur erforderlich sind.
-
Pk ist die zyklische Permutationsfunktion des Umfangs
von k Bits in einem Wort von B Bits.
-
r ist eine ganze Zahl, die die Anzahl von Bits
angibt, die für die binäre Darstellung eines Symbols
erforderlich sind, ob es sich um eine Nachrichtenidentifikation,
eine Aufgabenidentifikation oder eine Zeitmarke handelt.
-
nmax ist eine ganze Zahl, die die maximale Anzahl von
Nachrichten angibt, die eine Aufgabe berücksichtigt.
-
s ist eine Folge von natürlichen ganzen Zahlen, die
die Verschiebung von Bits darstellt, derart, daß gilt:
-
r + maxj{s(i)}< B
-
Hierbei ist s(i) das i-te Element der Liste und der Index
für diese Folge reicht von 1 bis 2(1+nmax).
-
symbolisiert die logische Exklusiv-ODER-Funktion
Bit für Bit.
-
Eine Aufgabe T gemäß Figur 5 empfängt am Eingang n
erste Nachrichten i&sub1;, ... in, berücksichtigt sie und sendet m
zweite Nachrichten o&sub1;, ... om aus. Sie besitzt eine
Aufgabenidentifikation, die durch das Symbol T bezeichnet ist.
-
Wenn die Aufgabe T ausgeführt wird, übernimmt sie
parallel zu den n ersten Nachrichten n Ausführungsschlüssel
Cex(i&sub1;), ... Cex(in). Wenn ij eine Eingangsnachricht ist, hat
konstruktionsbedingt Cex(ij) nur Bits mit dem Wert 0.
-
Aus den Ausführungsschlüsseln Cex(i&sub1;), Cex(in)
entnimmt sie n Zähler für die Beiträge von Aufgaben Nex(i&sub1;), ...
Nex(in) und n Ausführungssignaturen Sex(i&sub1;), ... Sex(in). Aus
den n ersten berücksichtigten Nachrichten entnimmt sie n
Nachrichtenidentifikationen i&sub1;, in und n
Nachrichtenzeitmarken Θ(i&sub1;), ... Θ(in).
-
Für jede zweite Nachricht ok erarbeitet die Aufgabe T
einen Ausführungsschlüssel Cex(ok) wie folgt:
-
Zuerst erarbeitet sie eine partielle Signatur
Spex(oi) ausgehend von folgender Beziehung:
-
Spex(ok)= j=1,n[Ps(2j-1)(ij) Ps(2j)(θ(ij))]
-
Ps(2n+1)(T)
-
Ps(2n+2)(ok)
-
Dann erarbeitet sie eine Ausführungssignatur Sex(ok)
ausgehend von folgender Beziehung:
-
Sex(ok)= j=1,n[PΣp=1,j-1 Nex(ip)(Sex(ij))]
-
PΣp=1,n Nex(ip)(SPex(ok))
-
Der Ausführungsschlüssel Cex(ok) für die Nachricht ok
besteht aus Sex(ok) und einem Zähler Nex(ok), dessen Wert der
Summe Σj=1,n(Nex(ij)+1 gleicht.
-
Selbstverständlich verwenden die Aufgaben eines
Programms, dessen Ausführung kontrolliert wird, die gleiche
Liste 5 von natürlichen ganzen Zahlen für die Permutationen.
-
Das Ausgangsorgan 4 kann die gleiche Folge von
natürlichen ganzen Zahlen wie die Aufgaben benutzen, so daß,
wenn das Multitask-Programm normal abläuft, der vom
Ausgangsorgan erarbeitete Bezugsschlüssel dem an letzter Stelle
durch eine Aufgabe für eine Eingangsnachricht oder für
Eingangsnachrichten erarbeiteten Ausführungsschlüssel
gleicht. Außerdem kann das Ausgangsorgan den Wert des
Bezugsausführungsschlüssels Cref abhängig von neuen
Eingangsnachrichten aktualisieren, die von den Aufgaben zu unter
schiedlichen Zeitpunkten berücksichtigt werden, so daß die
Kontrolle während der ganzen Zeit erfolgt, in der das
kontrollierte Programm abläuft.