-
Die
Erfindung betrifft ein Verfahren zur Abarbeitung eines Computerprogramms
auf einem Computersystem, das mindestens eine Recheneinheit umfasst.
Das Computerprogramm umfasst mindestens ein Laufzeitobjekt. Ein
während
der Ausführung des
Laufzeitobjekts auftretender Fehler wird durch eine Fehlererkennungseinheit
erkannt. Bei einem erkannten Fehler erzeugt die Fehlererkennungseinheit ein
Fehlererkennungssignal.
-
Die
Erfindung betrifft auch ein Computersystem, auf dem ein Computerprogramm
ausführbar
ist. Das Computerprogramm umfasst mindestens ein Laufzeitobjekt.
Ein während
der Ausführung
des Laufzeitobjekts auf dem Computersystem auftretender Fehler ist
durch eine Fehlererkennungseinheit erkennbar.
-
Die
Erfindung betrifft ferner ein Computerprogramm, das auf einem Computersystem
ablauffähig
ist, sowie einen maschinenlesbaren Datenträger, auf dem ein Computerprogramm
abgespeichert ist.
-
Bei
der Abarbeitung eines Computerprogramms auf einem Computer können Fehler
auftreten. Fehler können
danach unterschieden werden, ob sie durch die Hardware (Prozessor,
Bussysteme, Peripheriegeräte,
etc.) oder durch die Software (Anwendungsprogramme, Betriebssysteme,
BIOS, etc.) bedingt sind.
-
Bei
auftretenden Fehlern wird ferner zwischen permanenten Fehlern und
transienten Fehlern unterschieden. Permanente Fehler sind stets
vorhanden und beruhen beispielsweise auf einer fehlerhaften Hardware
oder einer fehlerhaft programmierten Software. Transiente Fehler
treten im Gegensatz hierzu nur temporär auf und sind damit auch deutlich schwieriger
reproduzierbar und vorhersagbar. Bei binär abgespeicherten, binär übertragenen
und/oder binär
verarbeiteten Daten treten transiente Fehler beispielsweise dadurch
auf, dass durch elektromagnetische Einflüsse oder Strahlung (Alpha-Strahlung, Neutronen-Strahlung)
einzelne Bits verändert
werden.
-
Üblicherweise
wird ein Computerprogramm in mehrere Laufzeitobjekte unterteilt,
die sequentiell oder parallel auf dem Computersystem ausgeführt werden.
Laufzeitobjekte sind beispielsweise Prozesse, Tasks oder Threads.
Während
der Ausführung des
Computerprogramms auftretende Fehler können damit prinzipiell dem
ausgeführten
Laufzeitobjekt zugeordnet werden.
-
Eine
Behandlung von permanenten Fehlern basiert typischerweise auf der
Abschaltung des Computersystems oder zumindest der Abschaltung von Teilsystemen.
Dies hat jedoch den Nachteil, dass damit die Funktionalität des Computersystems
oder des Teilsystems nicht mehr zur Verfügung steht. Um einen sicheren
Betrieb insbesondere in einer sicherheitsrelevanten Umgebung dennoch
gewährleisten zu
können,
sind die Teilsysteme eines Computersystems beispielsweise redundant
ausgelegt.
-
Häufig werden
auch transiente Fehler durch eine Abschaltung von Teilsystemen behandelt.
Es ist außerdem
bekannt, bei aufgetretenen transienten Fehlern ein oder mehrere
Teilsysteme abzuschalten und erneut zu starten und beispielsweise
durch einen Selbsttest auf eine nun fehlerfreie Abarbeitung des Computerprogramms
zu schließen.
Wird kein neuer Fehler erkannt, setzt das Teilsystem seine Arbeit
fort. Hierbei ist es möglich,
dass die durch den Fehler unterbrochene Aufgabe bzw. das zu dieser
Zeit abgearbeitete Laufzeitobjekt nicht weiter ausgeführt wird (sogenanntes
Forward-Recovery). Forward-Recovery wird beispielsweise bei echtzeitfähigen Systemen angewandt.
-
Insbesondere
bei nicht-echtzeitfähigen
Anwendungen ist es bekannt, an vorgebbaren Stellen eines Computerprogramms
bzw. Laufzeitobjekts Checkpunkte zu setzen. Tritt ein transienter
Fehler auf und wird infolgedessen das Teilsystem neu gestartet,
wird die Aufgabe bei dem zuletzt bearbeiteten Checkpunkt wieder
aufgenommen. Ein derartiges als Backward-Recovery bezeichnetes Verfahren
wird beispielsweise auf Computersystemen verwendet, die zur Durchführung von
Transaktionen an Finanzmärkten
eingesetzt werden.
-
Die
bekannten Verfahren zur Behandlung aufgetretener transienter Fehler
haben den Nachteil, dass das gesamte Computersystem, zumindest jedoch
Teilsysteme zeitweise nicht verfügbar
sind, was zu einer Verzögerung
der Abarbeitung des Computerprogramms und zu Datenverlust führen kann.
-
Der
vorliegenden Erfindung liegt daher die Aufgabe zugrunde, einen bei
der Abarbeitung eines Computerprogramms auf einem Computersystem auftretenden
Fehler möglichst
flexibel zu behandeln und dabei eine möglichst hohe Verfügbarkeit
des Computersystems zu gewährleisten.
-
Zur
Lösung
dieser Aufgabe wird ausgehend von dem Verfahren der eingangs genannten
Art vorgeschlagen, dass eine Fehlerbehandlungsroutine aus einer
vorgebbaren Menge von Fehlerbehandlungsroutinen in Abhängigkeit
von einer dem Laufzeitobjekt zugeordneten Kennung ausgewählt wird und
die ausgewählte
Behandlungsroutine ausgeführt wird.
-
Vorteile der
Erfindung
-
Erfindungsgemäß ist einem
oder mehreren Laufzeitobjekten, die auf dem Computersystem ausgeführt werden,
eine Kennung zugeordnet, die wiederum mindestens eine Fehlerbehandlungsroutine bezeichnet.
Tritt während
der Ausführung
des Laufzeitobjekts ein Fehler auf, so wird die der Kennung des
Laufzeitobjekts entsprechende Fehlerbehandlungsroutine ausgewählt und
durchgeführt.
Diese Kennung kann beispielsweise bereits bei der Programmierung
des Laufzeitobjekts beziehungsweise bei der Installation des Laufzeitobjekts
auf dem Computersystem festgelegt werden. Damit kann bereits während der
Programmierung des Computersystems bzw. bei der Installation des
Computerprogramms auf dem Computersystem die im Falle eines auftretenden
Fehlers durchzuführende
Fehlerbehandlungsroutine bestimmt werden.
-
Beispielsweise
kann einem Laufzeitobjekt, das eine sicherheitsrelevante und/oder
zeitkritische Funktion betrifft, eine andere Kennung zugeordneten werden
als einem Laufzeitobjekt, das eine nicht-echtzeitfähige Funktion
betrifft. Dies ermöglicht
eine sehr flexible Behandlung auftretender Fehler unterschiedlicher
Laufzeitobjekte.
-
Insbesondere
kann mit dem erfindungsgemäßen Verfahren
erreicht werden, dass nicht stets ein Teilsystem oder gar das gesamte
Computersystem neu gestartet werden muss, wenn bei der Abarbeitung
eines Laufzeitobjekts ein Fehler auftritt. Vielmehr ist eine flexible
Auswahl eines Fehlerbehandlungsmechanismus möglich. Damit kann die Verfügbarkeit
des Gesamtsystems deutlich gesteigert werden.
-
Gemäß einer
vorteilhaften Weiterbildung des erfindungsgemäßen Verfahrens wird die Fehlerbehandlungsroutine
zusätzlich
in Abhängigkeit
von dem durch die Fehlererkennungseinheit erzeugten Fehlererkennungssignal
ausgewählt.
Die Fehlererkennungseinheit kann beispielsweise feststellen, ob
es sich um einen Hardware-Fehler oder um einen Software-Fehler handelt, bzw.
welche Hardwareeinheit (Prozessor, Bussystem, Speicher, etc.) den
Fehler ausgelöst
hat. Ferner ist es möglich,
dass die Fehlererkennungseinheit feststellt, ob es sich bei dem
aufgetretenen Fehler eher um einen permanenten Fehler oder um einen
transienten Fehler handelt. Dazu kann die Fehlererkennungseinheit
für jedes
Laufzeitobjekt einen Zähler
vorsehen, der die Anzahl aufgetretenen Fehler zählt. Treten besonders viele
Fehler bei der Ausführung
eines bestimmten Laufzeitobjekts auf, so kann die Fehlererkennungseinheit
auf einen permanenten Fehler schließen und ein anderes Fehlererkennungssignal erzeugen,
als wenn der Zähler nur
einen sehr niedrigen Wert aufweist. Insbesondere ist es vorstellbar,
dass das Fehlererkennungssignal eine Information über eine
ermittelte Größe, beispielsweise
den aktuellen Zählerstand
der Anzahl der bei der Abarbeitung des Laufzeitobjekts bisher aufgetretenen
Fehler, beinhaltet. Dies ermöglicht eine
besonders flexible Auswahl einer Fehlerbehandlungsroutine.
-
Umfasst
das Computersystem beispielsweise mehrere Recheneinheiten, kann
vorgesehen sein, dass anhand des Fehlererkennungssignals diejenige Recheneinheit
identifizierbar ist, auf der das Laufzeitobjekt ausgeführt wurde
und der Fehler auftrat. Läuft ein
und dasselbe Laufzeitobjekt beispielsweise auf mehreren unterschiedlichen
Recheneinheiten ab und sind diese Recheneinheiten unterschiedlichen
Umgebungen von unterschiedlicher Sicherheitsrelevanz zugeordnet,
so können
unterschiedliche Fehlerbehandlungsroutinen bei einem aufgetretenen
Fehler während
der Abarbeitung des Laufzeitobjekts ausgewählt werden, je nachdem, auf
welcher Recheneinheit das Laufzeitobjekt ausgeführt wurde, obwohl dem Laufzeitobjekt
stets dieselbe Kennung zugeordnet ist.
-
Sind
mehrere Recheneinheiten redundant ausgelegt und wird das Laufzeitobjekt
redundant auf diesen Recheneinheiten ausgeführt, kann eine Fehlerbehandlung
beispielsweise vorsehen, das Ergebnis, das von derjenigen Recheneinheit
zur Verfügung gestellt
wird, auf der der Fehler auftrat, bei der Weiterbehandlung (beispielsweise
bei einem anschließend
durchzuführenden
Voting) zu ignorieren. Damit wird eine noch flexiblere Behandlung
von aufgetretenen Fehlern ermöglicht.
-
Vorteilhafterweise
wird die Fehlerbehandlung in Abhängigkeit
von mindestens einer das ausgeführte
Laufzeitobjekt und/oder die Ausführung
des Laufzeitobjekts charakterisierenden Größe durchgeführt. Eine derartige Größe kann
beispielsweise eine dem Laufzeitobjekt zugeordnete Priorität sein.
Damit ist es möglich,
eine Fehlerbehandlung zusätzlich
in Abhängigkeit
zu der Priorität
des ausgeführten
Laufzeitobjekts durchzuführen.
-
Eine
die Ausführung
des Laufzeitobjekts charakterisierende Größe kann auch die bereits erfolgte
oder die noch zur Verfügung
stehende Abarbeitungsdauer bezeichnen. Tritt beispielsweise der
Fehler kurz nach dem Laden des Laufzeitobjekts auf, kann vorgesehen
sein, das gesamte Laufzeitobjekt nochmals zu laden und auszuführen. Steht
das Laufzeitobjekt jedoch bereits kurz vor Ende der zur Verfügung stehenden
Abarbeitungszeit, beziehungsweise soll ein anderes Laufzeitobjekt
dringend abgearbeitet werden, kann vorgesehen sein, dass Laufzeitobjekt, während dessen
Abarbeitung der Fehler auftrat, einfach zu beenden.
-
Die
die Abarbeitung des Laufzeitobjekts charakterisierende Größe kann
ferner beschreiben, ob bereits ein Datenaustausch mit anderen Laufzeitobjekten
oder ein Speicherzugriff erfolgt ist. Die Auswahl der Fehlerbehandlungsroutine
kann dies dann berücksichtigen.
-
In
einer bevorzugten Ausführungsform
des erfindungsgemäßen Verfahrens
umfasst das Computersystem mehrere Recheneinheiten. Das Laufzeitobjekt
wird auf mindestens zwei der Recheneinheiten redundant ausgeführt. Ein
Vergleich der redundant erzeugten Ergebnisse der mindestens zwei
Recheneinheiten wird durchgeführt
und ein Fehlererkennungssignal wird erzeugt, wenn die Ergebnisse
nicht übereinstimmen.
-
Ein
mehrere Recheneinheiten umfassendes Computersystem wird beispielsweise
als Dual-Core-Architektur (zwei Recheneinheiten) oder als Multi-Prozessor-Architektur
(mehrere Recheneinheiten) bezeichnet. Mittels des erfindungsgemäßen Verfahrens
kann insbesondere bei der redundanten Abarbeitung von Laufzeitobjekten
eine besonders flexible Fehlerbehandlung durchgeführt werden.
-
Vorzugsweise
wird das Verfahren in einem Kraftfahrzeug, insbesondere in einem
Kraftfahrzeugsteuergerät,
oder in einem sicherheitsrelevanten System eingesetzt. Sicherheitsrelevante
Systeme werden beispielsweise zur Steuerung von Flugzeugen eingesetzt.
In diesen Bereichen ist es besonders wichtig, transiente Fehler
systematisch und flexibel zu behandeln und damit eine möglichst
hohe Verfügbarkeit
des entsprechenden Systems zu erreichen.
-
Vorteilhafterweise
läuft auf
mindestens einer Recheneinheit des Computersystems ein Betriebssystem
ab, wobei die Auswertung der Kennung und/oder die Auswertung des
Fehlererkennungssignals und/oder die Auswahl der Fehlerbehandlungsroutine
durch das Betriebssystem erfolgt. Dies ermöglicht eine besonders schnelle
und sichere Bearbeitung von erkannten Fehlern, da Betriebssysteme üblicherweise
auf die zur Behandlung von aufgetretenen Fehlern notwendigen Ressourcen
Zugriff haben. Beispielsweise weisen Betriebssysteme einen sogenannten
Scheduler auf, der entscheidet, welches Laufzeitobjekt zu welcher
Zeit auf einem Prozessor ausgeführt
wird. Dies ermöglicht
es einem Betriebssystem, besonders schnell ein Laufzeitobjekt zu
beenden, neu zu starten oder statt des Laufzeitobjekts eine Fehlerbehandlungsroutine
zu starten.
-
Gemäß einer
bevorzugten Ausführungsform des
Verfahrens realisiert mindestens eine der Fehlerbehandlungsroutinen
in der vorgebbaren Menge von Fehlerbehandlungsroutinen eine der
folgenden Fehlerbehandlungsmöglichkeiten:
- – Durchführen keiner
Operation:
Ein aufgetretener Fehler wird ignoriert.
- – Abbruch
der Ausführung
des Laufzeitobjekts:
Die Ausführung des Laufzeitobjekts wird
abgebrochen und beispielsweise stattdessen ein anderes Laufzeitobjekt
ausgeführt.
- – Abbruch
der Ausführung
des Laufzeitobjekts und Verbot einer neuen Aktivierung des Laufzeitobjekts:
Das
Laufzeitobjekt, während
dessen Ausführung der
Fehler auftrat, wird folglich nicht wieder ausgeführt.
- – Wiederholung
der Ausführung
des Laufzeitobjekts.
- – Backward-Recovery:
Während
der Ausführung des
Laufzeitobjekts werden Checkpunkte gesetzt und bei Auftreten eines
Fehlers wird zu dem letzten Checkpunkt zurückgesprungen.
- – Forward-Recovery:
Die Ausführung
des Laufzeitobjekts wird unterbrochen und an einem anderen, nachfolgenden
Punkt wieder fortgesetzt bzw. das Laufzeitobjekt wird neu initialisiert
und mit aktuellen Eingangsdaten gestartet.
- – Reset:
Das gesamte Computersystem oder ein Teilsystem werden neu gestartet.
-
Diese
Fehlerbehandlungsroutinen ermöglichen
eine besonders flexible Behandlung auftretender Fehler.
-
Vorzugsweise
wird das erfindungsgemäße Verfahren
zur Behandlung transienter Fehler eingesetzt. Vorteilhafterweise
jedoch wird die Auswahl der Fehlerbehandlungsroutine in Abhängigkeit
davon durchgeführt,
ob der erkannte Fehler ein transienter Fehler oder ein permanenter
Fehler ist.
-
Ein
erkannter permanenter Fehler kann beispielsweise dadurch behandelt
werden, dass das Laufzeitobjekt nicht mehr ausgeführt wird
oder ein Teilsystem dauerhaft abgeschaltet wird. Ein erkannter transienter
Fehler hingegen kann einfach ignoriert werden oder mittels eines
Forward-Recovery behandelt werden.
-
Vorteilhafterweise
wird mittels einer Testroutine ein Hardware-Test durchgeführt. Das
Fehlererkennungssignal wird dann in Abhängigkeit des Ergebnisses der
Abarbeitung der Testroutine erzeugt. Damit kann beispielsweise besonders
zuverlässig ein
Hardwaredefekt erkannt werden und somit auf einen permanenten Fehler
geschlossen werden.
-
In
einer bevorzugten Ausführungsform
sind dem Laufzeitobjekt für
verschiedene Fehlerarten unterschiedliche Kennungen zugeordnet.
Wird beispielsweise ein permanenter Fehler während der Abarbeitung eines
Laufzeitobjekts erkannt, kann eine andere Fehlerbehandlungsroutine
ausgewählt
werden als wenn während
der Abarbeitung des Laufzeitobjekts ein transienter Fehler auftritt.
-
Ferner
können
dem Laufzeitobjekt unterschiedliche Kennungen für unterschiedliche Laufzeitumgebungen
zugeordnet sein. Beispielsweise kann einem Laufzeitobjekt eine Kennung
für eine
Abarbeitung in einer sicherheitsrelevanten Umgebung, eine andere
Kennung für
eine redundante Abarbeitung auf einer redundant ausgelegten Recheneinheit,
sowie noch eine andere Kennung für
eine Abarbeitung in einer zeitkritischen Umgebung zugeordnet sein. Diese
Ausführungsform
ermöglicht
eine nochmals flexiblere Behandlung eines bei der Abarbeitung eines
Laufzeitobjekts aufgetretenen Fehlers und kann die Verfügbarkeit
nochmals erhöhen.
-
Die
Aufgabe wird auch durch ein Computersystem der eingangs genannten
Art dadurch gelöst, dass
dem Laufzeitobjekt eine Kennung zugeordnet ist und in Abhängigkeit
von der Kennung eine ausführbare
Fehlerbehandlungsroutine aus einer vorgebbaren Menge von Fehlerbehandlungsroutinen auswählbar ist.
-
Von
besonderer Bedeutung ist die Realisierung des erfindungsgemäßen Verfahrens
in der Form eines Computerprogramms. Dabei ist das Computerprogramm
auf einem Computersystem, insbesondere auf einem Rechengerät, ablauffähig und
zur Ausführung
des erfindungsgemäßen Verfahrens
programmiert. In diesem Fall wird die Erfindung durch das Computerprogramm
realisiert, so dass das Computerprogramm in gleicher Weise die Erfindung
darstellt wie das Verfahren, zu dessen Ausführung das Computerprogramm
geeignet ist. Das Computerprogramm ist vorzugsweise auf einem maschinenlesbaren
Datenträger
abgespeichert. Als maschinenlesbarer Datenträger kann beispielsweise ein
Random-Access-Memory, ein Read-Only-Memory, ein Flash-Memory, eine Digital-Versatile-Disc
oder eine Compact-Disc zum Einsatz kommen.
-
Zeichnungen
-
Weitere
Anwendungsmöglichkeiten
und Vorteile der Erfindung ergeben sich aus der nachfolgenden Beschreibung
von Ausführungsbeispielen,
die in der Zeichnung dargestellt sind. Es zeigen:
-
1 eine
schematische Darstellung von Komponenten eines Computersystems zur
Durchführung
des erfindungsgemäßen Verfahrens;
-
2 ein
Ablaufdiagramm zur schematischen Darstellung des erfindungsgemäßen Verfahrens
in einer ersten Ausführungsform;
-
3 ein
Ablaufdiagramm zur schematischen Darstellung des erfindungsgemäßen Verfahrens
in einer zweiten Ausführungsform.
-
Beschreibung
der Ausführungsbeispiele
-
In 1 ist
ein Computersystem 1 schematisch dargestellt, das zur Durchführung des
erfindungsgemäßen Verfahrens
geeignet ist. Das Computersystem 1 weist zwei Recheneinheiten 2, 3 auf. Die
Recheneinheiten können
beispielsweise vollständige
Prozessoren (CPUs) sein (sogenannte Dual-Core-Architektur). Die
Dual-Core-Architektur
ermöglicht
es, die beiden Recheneinheiten 2, 3 derart redundant
zu betreiben, dass ein Prozess beziehungsweise ein Laufzeitobjekt
auf beiden Recheneinheiten 2, 3 nahezu gleichzeitig
ausgeführt
wird. Die Recheneinheiten 2, 3 können auch
arithmetisch-logische Einheiten, sogenannte arithmetic locial units
(ALUs) sein (Dual-ALU-Architektur).
-
Den
beiden Recheneinheiten 2, 3 sind ein gemeinsamer
Programmspeicher 4 und eine Fehlererkennungseinheit 5 zugeordnet.
In dem Programmspeicher 4 sind mehrere ausführbare Laufzeitobjekte abgespeichert.
Die Fehlererkennungseinheit 5 ist beispielsweise als Vergleicher
ausgebildet, der es ermöglicht,
von den Prozessoren 2 und 3 berechnete Werte zu
vergleichen.
-
Zur
Durchführung
der grundlegenden Steuerung des Computersystems 1 läuft auf
dem Computersystem 1 ein Betriebssystem 6 ab.
Das Betriebssystem 6 weist einen Scheduler 7 und
ein Interface 8 auf. Der Scheduler 7 verwaltet
die von den Recheneinheiten 2, 3 zur Verfügung gestellte
Rechenzeit, indem er entscheidet, wann welcher Prozess beziehungsweise
welches Laufzeitobjekt auf den Recheneinheiten 2 und 3 ausgeführt wird.
Das Interface 8 ermöglicht
es der Fehlererkennungseinheit 5, erkannte Fehler mittels
eines Fehlererkennungssignals dem Betriebssystem 6 mitzuteilen.
-
Das
Betriebssystem 6 hat Zugriff auf einen Speicherbereich 9.
Der Speicherbereich 9 beinhaltet für jedes ausführbare Laufzeitobjekt
die diesem Laufzeitobjekt zugeordnete Kennung bzw. die diesem Laufzeitobjekt
zugeordneten Kennungen. Es ist sowohl möglich, den Speicherbereich 9 und
den Programmspeicher 4 auf ein und demselben Speicherelement
als auch auf unterschiedlichen Speicherelementen abzubilden. Das
Speicherelement beziehungsweise die Speicherelemente können beispielsweise
ein der Recheneinheit 2 beziehungsweise der Recheneinheit 3 zugeordneter
Arbeitsspeicher oder ein Cache sein.
-
Es
sind eine Vielzahl weiterer Ausgestaltungen des Computersystems 1 vorstellbar.
Beispielsweise könnte
das Computersystem 1 nur eine Recheneinheit aufweisen.
Ein Fehler bei der Abarbeitung eines Laufzeitobjekts könnte dann
beispielsweise durch die Fehlererkennungseinheit 5 mittels
einer Plausibilitätsprüfungen erfolgen.
-
Insbesondere
könnte
ein und dasselbe Laufzeitobjekt auf der Recheneinheit 2, 3 mehrmals
hintereinander ausgeführt
werden. Die Fehlererkennungseinheit 5 könnte dann die jeweils erzeugten
Ergebnisse vergleichen und bei einem Abweichen der Ergebnisse voneinander
auf das Vorhandensein eines Fehlers schließen.
-
Ferner
ist es vorstellbar, dass das Computersystem 1 mehr als
zwei Recheneinheiten 2, 3 aufweist. Ein Laufzeitobjekt
könnte
dann beispielsweise auf drei der vorhandenen Recheneinheiten 2, 3 redundant
ausgeführt
werden. Durch einen Vergleich der so erhaltenen Ergebnisse könnte die
Fehlererkennungseinheit 5 das Vorhandensein eines Fehlers erkennen.
-
In 2 ist
ein Ablaufdiagramm des erfindungsgemäßen Verfahrens schematisch
dargestellt. Das Verfahren beginnt in einem Schritt 100.
In einem Schritt 101 veranlasst der Scheduler 7 die
Recheneinheiten 2, 3, ein Laufzeitobjekt aus dem
Programmspeicher 4 auszulesen und auszuführen.
-
In
einem Schritt 102 wird überprüft, ob ein Fehler
bei der Abarbeitung des Laufzeitobjekts vorliegt. Dies geschieht
beispielsweise durch die Fehlererkennungseinheit 5, die
die von den Recheneinheiten 2, 3 redundant berechneten
Ergebnisse vergleicht. Liegt kein Fehler vor, so wird zu dem Schritt 101 zurückverzweigt
und ein weiteres Laufzeitobjekt in den Recheneinheiten 2, 3 ausgeführt.
-
Wird
in dem Schritt 102 jedoch ein Fehler erkannt, so wird in
dem Schritt 103 von der Fehlererkennungseinheit ein Fehlererkennungssignal
erzeugt und an das Betriebssystem 6 über das Interface 8 übermittelt.
-
In
einem Schritt 104 ermittelt das Betriebssystem 6 das
fehlerhafte Laufzeitobjekt. Diese Information kann beispielsweise
von dem Scheduler 7 erhalten werden.
-
In
einem Schritt 105 wird die dem in dem Schritt 104 ermittelten
Laufzeitobjekt zugeordnete Kennung ermittelt. Dazu kann beispielsweise
in dem Speicherbereich 9 eine Tabelle abgelegt sein, in
der zu jedem ausführbaren
Laufzeitobjekt die diesem zugeordnete Kennung abgespeichert ist.
-
Es
ist ferner möglich,
dass die dem Laufzeitobjekt zugeordnete Kennung zusammen mit dem Laufzeitobjekt
selbst in dem Programmspeicher 4 abgespeichert ist. Wird
ein Laufzeitobjekt zur Ausführung
in dem Recheneinheit 2, 3 geladen, kann vorgesehen
sein, dass die Kennung in einem dem jeweiligen Recheneinheit 2, 3 zugeordneten
Speicherbereich, beispielsweise einem Register, abgelegt wird. In
diesem Fall könnte
das Betriebssystem 6 von der jeweiligen Recheneinheit 2, 3 die
Kennung des Laufzeitobjekts anfordern.
-
Es
ist auch vorstellbar, dass die Fehlererkennungseinheit die dem Laufzeitobjekt
zugeordnete Kennung ermittelt und zusammen mit dem Fehlererkennungssignal,
beispielsweise als Parameter, dem Betriebssystem über die
Schnittstelle 8 zur Verfügung stellt.
-
In
einem Schritt 106 wird in Abhängigkeit von dem Fehlererkennungssignal
und der dem Laufzeitobjekt zugeordneten Kennung eine Fehlerbehandlungsroutine
ausgewählt.
Dabei kann die dem Laufzeitobjekt zugeordnete Kennung die auszuwählende Fehlerbehandlungsroutine
eindeutig bestimmten. Beispielsweise kann die Kennung bestimmen,
dass das fehlerhafte Laufzeitobjekt abgebrochen werden soll und
nicht wieder aktiviert werden soll. Die Kennung kann ebenso bestimmen,
dass zu einem vorgegebenen Check-Punkt zurückgesprungen werden soll und
von dort das Laufzeitobjekt erneut ausgeführt werden soll (Backward-Recovery).
-
Die
Kennung kann ferner bestimmen, dass ein Forward-Recovery durchgeführt wird, die Ausführung des
Laufzeitobjekts wiederholt wird oder keine weitere Fehlerbehandlung
durchgeführt
werden soll.
-
Besonders
vorteilhaft ist es, wenn dem von der Fehlererkennungseinheit 5 an
das Betriebssystem 6 übermittelten
Fehlererkennungssignal eine Information bezüglich der Art des aufgetretenen
Fehlers zu entnehmen ist. Diese Art kann beispielsweise angeben,
ob es sich um einen transienten oder um einen permanenten Fehler
handelt. Das Fehlersignal kann ferner derart ausgestaltet sein,
dass diesem eine Information darüber
zu entnehmen ist, auf welchem der Recheneinheiten 2, 3 der
Fehler aufgetreten ist. Dabei können
dem Laufzeitobjekt beispielsweise mehrere Kennungen zugeordnet sein.
Eine erste Kennung kann dabei die bei einem Auftreten des permanenten
Fehlers auszuführende
Fehlerbehandlungsroutine beschreiben. Eine zweite Kennung hingegen
die bei einem Auftreten eines transienten Fehlers auszuführende Fehlerbehandlungsroutine bezeichnen.
Dies ermöglicht
folglich eine noch flexiblere Fehlerbehandlung.
-
Insbesondere
wenn das Computersystem 1 als Mehr-Prozessor-System oder als Mehr-ALU-System
ausgestaltet ist, kann es vorteilhaft sein, die Auswahl der Fehlerbehandlungsroutine
davon abhängig zu
machen, ob das Laufzeitobjekt auf einem oder mehreren der Prozessoren
beziehungsweise der ALUs aufgetreten ist. Diese Information könnte beispielsweise
dem Fehlererkennungssignal entnommen werden. Das Laufzeitobjekt
könnte
hierbei unterschiedliche Kennungen für die Fälle aufweisen, dass das Laufzeitobjekt
auf nur eine Recheneinheit 2, 3 und dass das Laufzeitobjekt
auf mehreren Recheneinheiten 2, 3 fehlerhaft ausgeführt wird.
-
In
einem Schritt 107 wird die Fehlerbehandlung durchgeführt, in
dem die durch das Betriebssystem 6 ausgewählte Fehlerbehandlungsroutine
ausgeführt
wird. In Abhängigkeit
von der ausgewählten Fehlerbehandlungsroutine
kann das Betriebssystem beispielsweise den Scheduler 7 veranlassen,
die aktuell auf den Recheneinheiten 2, 3 ausgeführten Laufzeitobjekte
abzubrechen, alle berechneten Wert zu verwerfen und die Laufzeitobjekte
erneut zu starten. In einem Schritt 108 endet das erfindungsgemäße Verfahren
zur Fehlerbehandlung. Allerdings ist die in 2 dargestellte
Abarbeitung eines Programms mit sequentieller Ausführung von
Laufzeitobjekten und anschließender Überprüfung auf
Vorliegen eines Fehlers an dieser Stelle nicht zwangsläufig ebenfalls beendet.
Falls die Abarbeitung des Programms beim Erreichen des Schritts 108 noch
nicht beendet ist, kann zu Schritt 101 rückgesprungen
werden (gestrichelte Linie).
-
In 3 ist
eine weitere Ausführungsform des
erfindungsgemäßen Verfahrens
mittels eines Ablaufdiagramms schematisch dargestellt, bei dem weitere
Größen bei
der Auswahl der durchzuführenden Fehlerbehandlungsroutine
berücksichtigt
werden.
-
Das
Verfahren beginnt in einem Schritt 200. Die Schritt 201 bis 205 können den
in 2 dargestellten und beschriebenen Schritten 101 bis 105 entsprechen.
-
In
einem Schritt 206 wird eine das Laufzeitobjekt beziehungsweise
die Ausführung
des Laufzeitobjekts charakterisierende Größe ermittelt. Eine das Laufzeitobjekt
charakterisierende Größe kann beispielsweise
eine diesem Laufzeitobjekt zugeordnete Sicherheitsrelevanz beschreiben.
Eine das Laufzeitobjekt charakterisierende Größe kann ferner beschreiben,
ob und von welchen weiteren Laufzeitobjekten die von dem vorliegenden
Laufzeitobjekt berechneten Größen benötigt werden,
bzw. ob und von welchen weiteren Laufzeitobjekten die von dem vorliegenden
Laufzeitobjekt berechneten Größen abhängen. Damit
könnten
folglich Abhängigkeiten
der Laufzeitobjekte untereinander beschrieben werden.
-
Die
eine Ausführung
eines Laufzeitobjekts charakterisierende Größe kann beispielsweise beschreiben,
ob zur Zeit des Auftretens des Fehlers bereits ein Speicherzugriff
durch das Laufzeitobjekt erfolgt ist, ob der Fehler relativ kurz
nach Laden des Laufzeitobjekts erfolgte, ob die von dem Laufzeitobjekt
zu berechnenden Größen dringend
von anderen Laufzeitobjekten benötigt
werden und/oder wie groß die
für eine
Ausführung
des Laufzeitobjekts noch zur Verfügung stehende Zeitspanne ist.
-
Diese
Größen können dann
bei einer Auswahl der Fehlerbehandlungsroutine berücksichtigt werden.
Steht beispielsweise nicht mehr genug Zeit zur Verfügung, das
gesamte Laufzeitobjekt erneut auszuführen, kann vorgesehene sein,
ein Backward-Recovery oder ein Forward-Recovery durchzuführen.
-
In
einem Schritt 207 wird ermittelt, ob ein permanenter oder
ein transienter Fehler vorliegt. Dazu können beispielsweise Fehlerzähler mitgeführt werden,
die angeben, wie häufig
ein Fehler bei der Ausführung
eines bestimmten Laufzeitobjekts auftritt. Tritt dieser besonders
häufig
oder gar immer auf, kann von einem permanenten Fehler ausgegangen werden.
-
Die
Schritte 206 und 207 sind zunächst voneinander unabhängig und
können
jeweils einzeln ausgeführt
werden. Auch eine Ausführung
in umgekehrter Reihenfolge ist jedoch möglich. Außerdem ist es denkbar, dass
die in Schritt 206 ermittelte, das Laufzeitobjekt oder
die Ausführung
des Laufzeitobjektes charakterisierende Größe als Eingangswert zur Ermittlung
der Fehlerart in Schritt 207 verwendet wird. In diesem
Fall müssen
die beiden Schritte 206 und 207 in der angegebenen
Reihenfolge abgearbeitet werden. Schließlich müssen die Schritte 206 und 207 nicht
notwendigerweise sequenziell abgearbeitet werden; sie können auch
parallel abgearbeitet werden.
-
Es
ist des weiteren möglich,
einer einzelnen Hardwareeinheit des Computersystems 1,
also beispielsweise einer Recheneinheit 2, 3,
einen Fehlerzähler
zuzuordnen. Wird beispielsweise festgestellt, dass auf einer Recheneinheit 2, 3 des
Computersystems 1 die Ausführung besonders vieler Laufzeitobjekte
fehlerhaft ist, so kann auf das Vorhandensein eines permanenten
Fehlers (z. B. eines Hardware-Fehlers) geschlossen werden.
-
In
einem Schritt 208 wird eine Fehlerbehandlungsroutine ausgewählt. Dazu
werden die in den Schritten 205 bis 207 ermittelten
Größen, insbesondere
eine oder mehrere dem fehlerhaften Laufzeitobjekt zugeordneten Kennungen,
eine oder mehrere das Laufzeitobjekt beziehungsweise die Ausführung des
Laufzeitobjekts charakterisierende Größen sowie die Art des aufgetretenen
Fehlers berücksichtigt.
-
Die
Fehlerbehandlungsroutine wird beispielsweise durch das Betriebssystem 6 ausgewählt. Die
Auswahl kann mittels der vorgenannten Größen in einer Art Entscheidungsbaum
durchgeführt
werden.
-
In
einem Schritt 209 wird die Fehlerbehandlung durchgeführt und
in einem Schritt 210 das erfindungsgemäße Verfahren zur Fehlerbehandlung
beendet. Allerdings ist die in 3 dargestellte
Abarbeitung eines Programms mit sequentieller Ausführung von
Laufzeitobjekten und anschließender Überprüfung auf
Vorliegen eines Fehlers an dieser Stelle nicht zwangsläufig ebenfalls
beendet. Falls die Abarbeitung des Programms beim Erreichen des
Schritts 210 noch nicht beendet ist, kann zu Schritt 201 rückgesprungen
werden (gestrichelte Linie).
-
Mit
dem erfindungsgemäßen Verfahren
ist es folglich möglich,
bereits bei der Programmierung beziehungsweise der Implementierung
oder der Installation eines Laufzeitobjekts auf dem Computersystem
festzulegen, welche Fehlerbehandlungsroutine bei Auftreten eines
Fehlers ausgeführt
werden soll. Dies ermöglicht
eine besonders flexible und dem ausgeführten Laufzeitobjekt angepasste Fehlerbehandlung.
Insbesondere können
erfindungsgemäß einem
Laufzeitobjekt mehrere Kennungen zugeordnete sein. Damit kann die
Auswahl einer Fehlerbehandlungsroutine noch flexibler gestaltet
sein.
-
Vorzugsweise
können
eine die Art des Fehlers (transient/permanent), eine das Laufzeitobjekt selbst
oder eine die Ausführung
des Laufzeitobjekts charakterisierende Größen zur Auswahl der Fehlerbehandlungsroutine
herangezogen werden. Ferner ist es möglich, Informationen, die von
der Fehlererkennungseinheit 5 ermittelt werden, beispielsweise eine
Identität
der Recheneinheiten 2, 3, auf dem das Laufzeitobjekt
während
des Auftretens des Fehlers ausgeführt wurde, bei der Auswahl
der Fehlerbehandlungsroutine zu berücksichtigen. Dabei kann aus
der Information, ob das betrachtete Laufzeitobjekt auf nur einer
der Recheneinheiten 2, 3 oder auf beiden Recheneinheiten 2, 3 gleichzeitig
abgearbeitet wurde/wird, auf die Sicherheitsrelevanz des Laufzeitobjekts
zum momentanen Abarbeitungszeitpunkt geschlossen werden. Weiterhin
ist es möglich,
weitere Informationen des Computersystems und/oder der Peripherie
(z. B. aktueller Wertebereich von Sensorgrößen und/oder Wertebereich der
Ausgangsgrößen) des
Computersystems zur Einschätzung
der momentanen Sicherheitsrelevanz der Laufzeitumgebung heranzuziehen.
Damit ist eine noch flexiblere Fehlerbehandlung auf einem Computersystem
möglich.
-
Während der
Durchführung
der Fehlerbehandlung in den Schritten 107 beziehungsweise 209 kann
ferner geprüft
werden, ob beispielsweise ein durch die Fehlerbehandlungsroutine
veranlasstes erneutes Ausführen
des fehlerhaften Laufzeitobjekts wieder zu einem Fehler führt. In
diesem Fall könnte vorgesehen
sein, erneut eine Fehlerbehandlungsroutine, dieses Mal jedoch eine
andere, auszuwählen. Beispielsweise
kann in diesem Fall vorgesehen sein, das ganze System beziehungsweise
ein Teilsystem abzuschalten.