DE102013106923A1 - Verfahren zum Betreiben eines hochverfügbaren Computersystems unter Verwendung einer oder mehrerer virtueller Maschinen - Google Patents

Verfahren zum Betreiben eines hochverfügbaren Computersystems unter Verwendung einer oder mehrerer virtueller Maschinen Download PDF

Info

Publication number
DE102013106923A1
DE102013106923A1 DE102013106923.1A DE102013106923A DE102013106923A1 DE 102013106923 A1 DE102013106923 A1 DE 102013106923A1 DE 102013106923 A DE102013106923 A DE 102013106923A DE 102013106923 A1 DE102013106923 A1 DE 102013106923A1
Authority
DE
Germany
Prior art keywords
application
application program
control system
virtual machine
application programs
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE102013106923.1A
Other languages
English (en)
Inventor
Hubert Schorr
Raimund Glenz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Gefaz Mbh De
Schorr Hubert De
Original Assignee
CONCURRENT SOFTWARE GmbH
GEFAZ mbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CONCURRENT SOFTWARE GmbH, GEFAZ mbH filed Critical CONCURRENT SOFTWARE GmbH
Priority to DE102013106923.1A priority Critical patent/DE102013106923A1/de
Publication of DE102013106923A1 publication Critical patent/DE102013106923A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1487Generic software techniques for error detection or fault masking using N-version programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2038Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with a single idle spare processing component

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)

Abstract

Die Erfindung betrifft ein Verfahren zum Betreiben eines hochverfügbaren Computersystems unter Verwendung einer oder mehrerer virtueller Maschinen, bei welchem zur Ausführung einer Anwendungsapplikation mehrere Anwendungsprogramme bereitgestellt werden. Die Anwendungsprogramme können nicht identisch oder identisch zueinander sein. Bei der Verwendung eines einzigen Steuerungssystems mit zwei nicht identischen Anwendungsprogrammen wird Softwarehochverfügbarkeit erreicht. Bei der Verwendung von zwei oder mehr Steuerungssystemen mit nicht identischen oder identischen Anwendungsprogrammen wird Soft- und Hardwarehochverfügbarkeit erreicht. Identische Anwendungsprogramme werden nach dem Master/Slave Verfahren betrieben. Nicht identische Anwendungsprogramme werden von den virtuellen Maschinen zeitgleich betrieben, wobei Zugriffe auf das Ein-/Ausgabesystem synchronisiert werden.

Description

  • Die Erfindung betrifft ein Verfahren zum Betreiben eines hochverfügbaren Computersystems unter Verwendung einer oder mehrerer virtueller Software Maschinen, nachfolgend virtuelle Maschine genannt.
  • Hochverfügbare Computersysteme sind bereits bekannt. Sie weisen eine Master-/Slave-Konfiguration auf, wobei jeweils der Master einen technischen Prozess bzw. eine Anwendungsapplikation durch Ausführung eines Anwendungsprogrammes aktiv steuert, während der Slave im Standbymodus betrieben wird und bei einem Ausfall des Masters die Steuerung des technischen Prozesses übernimmt. Bei diesem technischen Prozess kann es sich beispielsweise um den Arbeitsvorgang einer Produktionsmaschine handeln, welcher vom Master unter Verwendung von Zugriffen auf ein Eingabe-/Ausgabe-System gesteuert wird.
  • Aus der DE 10 2005 053 275 A1 ist ein hochverfügbares Computerverbundsystem bekannt, welches ein erstes Computersystem und ein zweites Computersystem aufweist. Das erste Computersystem weist mindestens eine virtuelle Computereinheit und eine Steuereinrichtung auf, wobei die Steuereinrichtung geeignet ist, der mindestens einen virtuellen Computereinheit Arbeitsspeicher des Computersystems von variabler Größe zuzuteilen. Die virtuelle Computereinheit ist als virtuelle Ersatzcomputereinheit innerhalb des Computerverbundsystems eingerichtet und dazu geeignet, beim Ausfall eines der weiteren Computersysteme dessen Aufgaben zu übernehmen. Das erste Computersystem weist einen Hochverfügbarkeitsagenten auf, der dazu geeignet ist, einen Ausfall eines der weiteren Computersysteme zu erkennen und nach dem Erkennen eines Ausfalls die Steuereinrichtung anzuweisen, der virtuellen Ersatzcomputereinheit Arbeitsspeicher einer bestimmten Größe zuzuteilen. Die Größe des der virtuellen Ersatzcomputereinheit zugeteilten Arbeitsspeichers hängt davon ab, ob die virtuelle Ersatzcomputereinheit Aufgaben eines der weiteren Computersysteme übernimmt oder nicht.
  • Die Lösung in DE 10 2005 053 275 A1 hat Nachteile bei der Steuerung eines technischen Prozesses. Die Zuteilung des Arbeitsspeichers nach dem Erkennen des Ausfalls eines Computersystems nimmt Zeit in Anspruch. Dies ist mit den Ansprüchen eines zu steuernden Prozesses oftmals nicht vereinbar.
  • Die Aufgabe der Erfindung besteht darin, ein Verfahren zum Betreiben eines hochverfügbaren Computersystems unter Verwendung einer oder mehrerer virtueller Maschinen bereitzustellen, bei welchem bei einem Ausfall des einen technischen Prozess steuernden Anwendungsprogrammes die Weiterführung des technischen Prozesses beschleunigt ist.
  • Diese Aufgabe wird durch ein Verfahren mit den im Anspruch 1 angegebenen Merkmalen gelöst. Vorteilhafte Ausgestaltungen und Weiterbildungen der Erfindung sind in den abhängigen Ansprüchen angegeben.
  • Die Vorteile der Erfindung ergeben sich aus deren nachfolgender beispielhafter Erläuterung anhand der Figuren. Es zeigt
  • 1 eine Blockdarstellung eines ersten Ausführungsbeispiels für ein hochverfügbares Computersystem,
  • 2 eine Blockdarstellung eines zweiten Ausführungsbeispiels für ein hochverfügbares Computersystem,
  • 3 eine Blockdarstellung eines dritten Ausführungsbeispiels für ein hochverfügbares Computersystem,
  • 4 eine Blockdarstellung eines vierten Ausführungsbeispiels für ein hochverfügbares Computersystem,
  • 5 eine Blockdarstellung des grundsätzlichen Aufbaus einer virtuellen Maschine,
  • 6 eine Darstellung zur Erläuterung der Arbeitsweise eines Interpreters,
  • 7 eine Blockdarstellung zur Erläuterung einer Master/Slave-Konfiguration,
  • 8 eine Darstellung zur Erläuterung eines Redundanzfalles bei der in der 7 gezeigten Konfiguration,
  • 9 eine Darstellung zur Erläuterung des Datentransfers vom Master zum Slave im Fehlerfall,
  • 10 eine Blockdarstellung des Aufbaus eines Computersystems, bei welchem in einem einzigen Steuerungssystem eine virtuelle Maschine zur Steuerung zweier Anwendungsprogramme vorgesehen ist,
  • 11 eine Darstellung zur Erläuterung der den beiden Anwendungsprogrammen von 10 zugeordneten Laufzeitumgebung,
  • 12 eine Blockdarstellung zur Erläuterung einer Master/Slave-Konfiguration, bei welcher im Master und im Slave jeweils zwei verschiedene Anwendungsprogramme implementiert sind,
  • 13 eine Darstellung zur Erläuterung der Laufzeitumgebung der der virtuellen Maschine des Mastersystems von 12 zugeordneten beiden verschiedenen Anwendungsprogramme im Normalbetrieb und
  • 14 eine Darstellung zur Erläuterung der der virtuellen Maschine des Mastersystems von 12 zugeordneten verschiedenen Anwendungsprogramme beim Auftreten eines Fehlers im Mastersystem.
  • Gemäß der vorliegenden Erfindung wird ein Verfahren zum Betreiben eines hochverfügbaren Computersystems unter Verwendung einer oder mehrerer virtueller Maschinen bereitgestellt. Dieses Computersystem weist ein, zwei oder mehr Steuerungssysteme auf. Sind zwei oder mehr Steuerungssysteme vorhanden, dann sind diese durch bidirektionale Kommunikationsverbindungen miteinander gekoppelt. Jedes dieser Steuerungssysteme enthält eine virtuelle Maschine, wobei die virtuellen Maschinen verschiedener Steuerungssysteme identisch sind. Jede virtuelle Maschine implementiert eine komplette Laufzeitumgebung für ein oder mehrere Anwendungsprogramme.
  • Ein Anwender des Computersystems erstellt in einem ersten Schritt ein zur Ausführung einer Anwendungsapplikation vorgesehenes Anwendungsprogramm in einer gewünschten Programmiersprache. Dadurch entsteht ein Quellencode, der von einem Compiler in die Maschinensprache der virtuellen Maschine übersetzt wird. Diese Maschinensprache wird dann von einem Interpreter der virtuellen Maschine ausgeführt.
  • Die 1 zeigt eine Blockdarstellung eines ersten Ausführungsbeispiels für ein hochverfügbares Computersystem. Bei diesem ersten Ausführungsbeispiel weist das Computersystem ein einziges Steuerungssystem auf. Zu diesem gehört eine virtuelle Maschine VM, welche zwei zur Ausführung derselben Anwendungsapplikation bereitgestellte, nicht identische Anwendungsprogramme AW1 und AW2 betreibt bzw. steuert. Diese nicht identischen Anwendungsprogramme, die zur Ausführung derselben Anwendungsapplikation vorgesehen sind, weisen unterschiedliche Implementierungen auf. Beispielsweise sind die Anwendungsprogramme in unterschiedlichen Programmiersprachen erstellt. Das erste Anwendungsprogramm AW1 wird im Normalbetrieb zur Steuerung der Anwendungsapplikation verwendet. Das zweite Anwendungsprogramm AW2 wird von der virtuellen Maschine zeitgleich ebenfalls bearbeitet.
  • Während dieses Betreibens der Anwendungsprogramme durch die virtuelle Maschine erfolgt eine Synchronisierung der beiden Anwendungsprogramme durch die virtuellen Maschine, wobei diese Synchronisierung bei jedem Zugriff eines der beiden Anwendungsprogramme auf das Eingangs-/Ausgangssystem des Steuerungssystems vorgenommen wird. Will eines der Anwendungsprogramme an einer bestimmten Programmstelle Daten schreiben, dann stoppt die virtuelle Maschine dieses Anwendungsprogramm solange, bis auch das andere Anwendungsprogramm auf das I/O System zugreift. Danach werden beide Anwendungsprogramme zeitsynchron fortgesetzt. Durch diese Synchronisation laufen beide Anwendungsprogramme im Hinblick auf die Bearbeitung der Eingangs-/Ausgangssignale synchron und sind in sich konsistent.
  • Während dieses Betreibens der Anwendungsprogramme überwacht die virtuelle Maschine die beiden Anwendungsprogramme in Bezug auf das Auftreten von Fehlern. Zu diesen Fehlern gehören beispielsweise das Auftreten einer Division durch Null, ein stetig steigender Speicherbedarf, usw.. Erkennt die virtuelle Maschine das Auftreten eines Fehlers, dann wird das betroffene Anwendungsprogramm von der virtuellen Maschine abgebrochen. Ist der Fehler bei Anwendung AW1 aufgetreten, dann führt die virtuelle Maschine eine stoßfreie Umschaltung von Anwendung AW1 nach Anwendung AW2 durch, d. h. vom ersten Anwendungsprogramm auf das zweite Anwendungsprogramm. Bei dieser stoßfreien Umschaltung tritt keinerlei Datenverlust auf, da die beiden Anwendungsprogramme stets Zugriff auf die momentan gültigen Laufzeitdaten haben und in Bezug auf ihre Zugriffe auf das Eingang-/Ausgangsystem miteinander synchronisiert sind. Nach dieser stoßfreien Umschaltung wird das zweite Anwendungsprogramm zur weiteren Steuerung der Anwendungsapplikation verwendet. Auf diese Weise wird nach alledem eine Software Hochverfügbarkeit und damit auch eine Hochverfügbarkeit der Anwendungsapplikation erreicht.
  • Durch die Verwendung zweier nicht identischer Anwendungsprogramme wird die Wahrscheinlichkeit des Auftretens von Software Gleichtaktfehlern, d. h. im Falle einer identischen Programmierung auftretender Fehler, vermindert.
  • Tritt bei diesem Ausführungsbeispiel jedoch ein kompletter Stromausfall im (einzigen) Steuerungssystem auf, dann ist eine weitere Steuerung der Anwendungsprogramme und damit eine Ausführung der Anwendungsapplikation nicht mehr möglich.
  • Die 2 zeigt eine Blockdarstellung eines zweiten Ausführungsbeispiels für ein hochverfügbares Computersystem. Bei diesem zweiten Ausführungsbeispiel weist das Computersystem zwei über eine Kommunikationsverbindung miteinander gekoppelte Steuerungssysteme auf. Jedes dieser Steuerungssysteme weist eine virtuelle Maschine VM auf. Die virtuelle Maschine des ersten Steuerungssystems steuert ein erstes Anwendungsprogramm AW1, die virtuelle Maschine des zweiten Steuerungssystems ein zweites Anwendungsprogramm AW2. Bei den beiden Anwendungsprogrammen AW1 und AW2 handelt es sich um identische Anwendungsprogramme, die zur Ausführung derselben Anwendungsapplikation vorgesehen sind. Dem ersten Anwendungsprogramm AW1 ist Masterfunktion zugeordnet, dem zweiten Anwendungsprogramm AW2 Slavefunktion. Das erste Anwendungsprogramm AW1 wird zur Steuerung der Anwendungsapplikation verwendet. Das zweite Anwendungsprogramm AW2 wird im Standbymodus betrieben. Die virtuellen Maschinen überwachen das jeweils zugehörige Anwendungsprogramm und auch den Zustand des jeweiligen Steuerungssystems. Die Zugriffe auf das Eingabe-/Ausgabesystem werden nicht synchronisiert.
  • Im Falle eines im ersten Steuerungssystem auftretenden Fehlers, der nicht vom ersten Anwendungsprogramm verursacht wurde, wird das erste Anwendungsprogramm gestoppt und es werden die Laufzeitdaten und die Peripheriedaten des ersten Anwendungsprogrammes an das zweite Steuerungssystem übertragen. Das dort vorhandene identische Anwendungsprogramm übernimmt die weitere Ausführung der Anwendungsapplikation.
  • Die Umschaltung zwischen dem im ersten Steuerungssystem implementierten ersten Anwendungsprogramm auf das im zweiten Steuerungssystem implementierte, identische zweite Anwendungsprogramm erfolgt stoßfrei, d. h. ohne Datenverlust, da die Laufzeitdaten und die Peripheriedaten des ersten Anwendungsprogrammes beim Auftreten eines Fehlers dem zweiten Anwendungsprogramm bereitgestellt werden.
  • Die 3 zeigt eine Blockdarstellung eines dritten Ausführungsbeispiels für ein hochverfügbares Computersystem. Bei diesem dritten Ausführungsbeispiel weist das Computersystem zwei über eine Kommunikationsverbindung miteinander gekoppelte Steuerungssysteme auf. Jedes dieser Steuerungssysteme weist eine virtuelle Maschine VM auf. Die virtuelle Maschine des ersten Steuerungssystem steuert ein erstes Anwendungsprogramm AW1, die virtuelle Maschine des zweiten Steuerungssystems ein zweites Anwendungsprogramm AW2. Bei den beiden Anwendungsprogrammen AW1 und AW2 handelt es sich um nicht identische Anwendungsprogramme, die jedoch zur Ausführung derselben Anwendungsapplikation vorgesehen sind. Das erste Anwendungsprogramm AW1 weist eine unterschiedliche Implementierung zum Anwendungsprogramm 2 auf. Dem ersten Anwendungsprogramm AW1 ist Masterfunktion zugeordnet, dem zweiten Anwendungsprogramm AW2 Slavefunktion. Das erste Anwendungsprogramm AW1 wird im Normalbetrieb zur Steuerung der Anwendungsapplikation verwendet. Das zweite Anwendungsprogramm AW2 läuft quasi parallel zum AW1. Die virtuellen Maschinen überwachen jeweils das zugehörige Anwendungsprogramm und auch den Zustand des jeweiligen Steuerungssystems. Die Zugriffe auf das Eingangs-/Ausgangssystem werden synchronisiert. Im Falle eines im ersten Steuerungssystem auftretenden Fehlers, bei dem es sich um einen Laufzeitfehler des ersten Anwendungsprogrammes oder um einen anderen Fehler im ersten Steuerungssystem handeln kann, wird das erste Anwendungsprogramm gestoppt und eine Umschaltung durchgeführt. Das im zweiten Steuerungssystem vorhandene Anwendungsprogramm AW2 erhält dann Masterfunktion und übernimmt die weitere Ausführung der Anwendungsapplikation.
  • Die Umschaltung zwischen dem im ersten Steuerungssystem implementierten ersten Anwendungsprogramm auf das im zweiten Steuerungssystem implementierte, nicht identische zweite Anwendungsprogramm erfolgt stoßfrei, da die Zugriffe beider Anwendungsprogramme auf das Eingabe-/Ausgabesystem synchronisiert erfolgen.
  • Die 4 zeigt eine Blockdarstellung eines vierten Ausführungsbeispiels für ein hoch verfügbares Computersystem. Bei diesem vierten Ausführungsbeispiel weist das Computersystem zwei über eine Kommunikationsverbindung miteinander gekoppelte Steuerungssysteme auf. Jedes dieser Steuerungssysteme weist eine virtuelle Maschine VM auf. Die virtuelle Maschine des ersten Steuerungssystems steuert ein erstes Anwendungsprogramm AW1 und ein zweites Anwendungsprogramm AW3, bei denen es sich um nicht identische Anwendungsprogramme handelt. Die virtuelle Maschine des zweiten Steuerungssystems steuert ein zweites Anwendungsprogramm AW2 und ein viertes Anwendungsprogramm AW4, bei denen es sich ebenfalls um nicht identische Anwendungsprogramme handelt. Das Anwendungsprogramm AW1 stimmt jedoch mit dem Anwendungsprogramm AW2 überein. Das Anwendungsprogramm AW3 stimmt mit dem Anwendungsprogramm AW4 überein. Alle Anwendungsprogramme sind zur Ausführung ein und derselben Anwendungsapplikation vorgesehen.
  • Die virtuellen Maschinen überprüfen jeweils die ihr zugeordneten, nicht identischen Anwendungsprogramme, welche zeitgleich ausgeführt werden und bezüglich ihrer Zugriffe auf das Eingabe/Ausgabesystem synchronisiert werden, und überwachen auch den Zustand des jeweiligen Steuerungssystems.
  • Im Falle eines im ersten Steuerungssystem auftretenden Fehlers, bei dem es sich um einen Laufzeitfehler eines Anwendungsprogrammes handelt, wird das fehlerhafte Anwendungsprogramm von der virtuellen Maschine gestoppt. Die virtuelle Maschine prüft nun den Typ des Fehlers. Abhängig vom erkannten Fehler werden entweder:
    • – Die Laufzeit- und Peripheriedaten des gestoppten Anwendungsprogammes an das zweite Steuerungssystem übertragen. Das identische Anwendungsprogramm des zweiten Steuerungssystems übernimmt die weitere Ausführung der Anwendungsapplikation oder:
    • – Das nicht identische Anwendungsprogramm des ersten Steuersystems übernimmt die weitere Ausführung der Anwendungsapplikation.
  • Die 5 zeigt eine Blockdarstellung des grundsätzlichen Aufbaus einer virtuellen Maschine. Eine derartige virtuelle Maschine weist eine Befehlsverarbeitungseinheit 1, einen Compiler 2, einen Interpreter 3, ein Anwendungsprogramm 4, ein Laufzeitsystem 5, eine Eingabe-/Ausgabeeinheit 6, eine Eingabe-/Ausgabe-Hardware 7, ein Netzwerksystem 8,gegebenenfalls zusätzliche Systemdienste 9, einen Agent 10 und eine Master-/Slavesynchronisation 11 auf. Die Eingabe/Ausgabeeinheit 6 und die Eingabe/Ausgabe-Hardware 7 bilden zusammen ein Ein/Ausgabesystem, nachfolgend auch als I/O-System bezeichnet.
  • Das Laufzeitsystem implementiert eine komplette Laufzeitumgebung für ein oder mehrere Anwenderprogramme. Dabei erstellt ein Anwender in einem ersten Schritt ein Anwendungsprogramm 4 in einer gewünschten Programmiersprache. Der Compiler 2 übersetzt dieses Anwendungsprogramm bzw. den Quellencode dieses Anwendungsprogrammes in die Maschinensprache der virtuellen Maschine. Diese Maschinensprache wird vom Interpreter 3 ausgeführt. Dabei können unterschiedliche Programmiersprachen verwendet bzw. unterstützt werden. Der Compiler 2 ist derart ausgebildet, dass er Anwendungsprogramme mehrerer Programmiersprachen in die vom Interpreter 3 der virtuellen Maschine benötigte Maschinensprache übersetzen kann.
  • Wird dann im Normalbetrieb des Computersystems vom Interpreter 3 ein Anwendungsprogramm ausgeführt, dann erzeugt der Interpreter 3 für dieses Anwendungsprogramm die benötigte Laufzeitinformation. Dabei verwendet der Interpreter für die Abarbeitung des Anwendungsprogrammes ein Registerabbild, das im Wesentlichen aus Arbeitsregistern und einem Befehlszeigerregister besteht. Das Anwendungsprogramm selbst weist Programmdaten PD und einen Programmcode PC auf. Sowohl das Registerabbild des Interpreters als auch die Laufzeitdaten des Anwendungsprogrammes, die die Programmdaten und den Programmcode umfassen, sind in einem über das Betriebssystem verwalteten Speicherbereich abgespeichert.
  • Mittels der Eingabe-/Ausgabeeinheit 6 und der Eingabe/Ausgabe-Hardware 7, die ein Eingabe/Ausgabesystem bilden, erfolgt ein Schreiben und Lesen von Peripheriedaten. Das Netzwerksystem 8 bietet die Möglichkeit der Interprozesskommunikation der Anwendungsapplikation mit anderen Systemkomponenten. Die Serviceeinheit 9 bietet zusätzliche Systemdienste wie beispielsweise einen Zugriff auf das Filesystem. Der Agent 10 übernimmt die Überwachung der Anwendungsapplikation(en) bezüglich des Resourcenbedarfs, usw., und implementiert das Redundanzmanagement. Die Synchronisation 11 implementiert die Datenübertragung der Laufzeit- und Peripheriedaten vom Master zum Slave.
  • Die 6 zeigt eine Darstellung zur Erläuterung der Arbeitsweise des Interpreters 3. Dabei ist auf der linken Seite der 6 das vom Interpreter für die Abarbeitung des jeweiligen Anwendungsprogrammes verwendete Registerabbild RA veranschaulicht, das im Wesentlichen aus Arbeitsregistern und einem Befehlszeigerregister besteht. Auf der rechten Seite der 6 sind die Laufzeitdaten LZD des Anwendungsprogrammes dargestellt, zu denen die Programmdaten PD und der Programmcode PC gehören. Der Programmcode umfasst eine Vielzahl von Maschinenbefehlen. Die Programmdaten bestehen aus einer Vielzahl von Variablen.
  • Die 7 zeigt eine Blockdarstellung zur Erläuterung einer Master/Slave-Konfiguration, welche ein einfaches Redundanzsystem auf Basis einer virtuellen Maschine darstellt. Dabei bildet das Mastersystem ein erstes Steuerungssystem und das Slavesystem ein zweites Steuerungssystem. Diese Systeme können aus handelsüblichen Industrie-PCs bestehen oder aus sogenannten Embedded Systemen.
  • Beide Systeme enthalten eine Befehlsverarbeitungseinheit 1, einen Compiler 2, einen Interpreter 3, ein Anwendungsprogramm 4, ein Laufzeitsystem 5, eine Eingabe-/Ausgabeeinheit 6, eine Eingabe/Ausgabe-Hardware 7, ein Netzwerksystem 8, eine Serviceeinheit 9, einen Agenten 10 und eine Sychronisation 11
  • Mittels des Agenten 10 wird eine gegenseitige Überwachung der Systeme durchgeführt. Des Weiteren ist die Synchronisation 11 im Fehlerfall dazu vorgesehen, Daten vom gestörten Mastersystem zum Slavesystem zu übertragen, wobei diese Datenübertragung über die zwischen den Systemen vorgesehene Kommunikationsverbindung erfolgt.
  • Im Betrieb mit identischen Anwenderprogrammen erfolgt die Ausführung der Anwendungsapplikation unter Steuerung der im Mastersystem vorgesehenen virtuellen Maschine, die das im Mastersystem vorgesehene Anwendungsprogramm zur Ausführung der Anwendungsapplikation verwendet. Das Mastersystem hat dabei die alleinige Kontrolle über die Anwendungsapplikation. Das Slavesystem befindet sich im Standbymodus. Die virtuelle Maschine des Slavesystems hat ein identisches Anwendungsprogramm geladen, das jedoch im Normalbetrieb vom zugehörigen Interpreter nicht ausgeführt wird. Der Interpreter selbst befindet sich ebenfalls in einem Standbymodus. Das Slavesystem überwacht das Mastersystem durch eine zyklische Kommunikation über die Kommunikationsverbindung zwischen den beiden Systemen.
  • Das Mastersystem fährt mit der Ausführung der Anwendungsapplikation fort, solange im Mastersystem kein Fehler auftritt.
  • Mögliche Fehler lassen sich in die beiden folgenden Kategorien aufteilen:
    • – von der virtuellen Maschine nicht detektierbare Fehler und
    • – von der virtuellen Maschine detektierbare Fehler.
  • Zu den Fehlern, die von der virtuellen Maschine nicht detektiert werden können, gehören beispielsweise ein plötzlicher Spannungsausfall des Mastersystems sowie ein Totalausfall der Hardwareplattform.
  • Ein plötzlicher Spannungsausfall führt zu einem sofortigen Systemstillstand, sofern keine Batteriepufferung vorgesehen ist, welche die Spannung noch für einige Zeit aufrechterhält. Ein totaler Ausfall der Hardwareplattform des Mastersystems liegt vor, wenn systemrelevante Hardwarebaugruppen des Mastersystems wie beispielsweise Speicherbaugruppen oder der Prozessor selbst nicht mehr funktionsfähig sind. In derartigen Fällen kann die virtuelle Maschine keine kontrollierte Umschaltung auf das Slavesystem initiieren.
  • Die virtuelle Maschine kann hingegen auftretende Fehler detektieren:
    • – Fehler im Eingabe/Ausgabesystem,
    • – kritische Fehler im Anwendungsprogramm,
    • – einen stetig steigenden Ressourcenverbrauch des Anwendungsprogrammes,
    • – Fehler in den Subsystemen der virtuellen Maschine selbst.
  • Fehler im Eingabe/Ausgabesystem treten auf, wenn die I/O-Hardware 7 beim Schreiben und/oder Lesen von Signalen einen Fehler meldet. Kritische Fehler im Anwendungsprogramm treten durch fehlerhafte Implementierung seitens des Anwenders auf, beispielsweise beim Auftreten einer Division durch Null. Ein stetig steigender Ressourcenverbrauch tritt auf, wenn das Anwendungsprogramm beispielsweise dynamischen Speicher allokiert und diesen nicht wieder freigibt. Über einen längeren Zeitraum wird dadurch insgesamt ein kritischer Systemzustand erreicht, da andere Subsysteme keinen dynamischen Speicher mehr allokieren können. Fehler in der virtuellen Maschine treten durch fehlerhafte Implementierung der virtuellen Maschine selbst auf, wie beispielsweise im Falle eines Zugriffes auf nicht gültige Speicherbereiche. Ein Redundanzfall tritt auf, wenn der Master aufgrund eines Fehlers ausfällt. Dann übernimmt das Slavesystem die Kontrolle über den zu steuernden Prozess.
  • Im Wesentlichen werden zwei Redundanzfälle unterschieden:
    • – Redundanzfall bei nicht detektierbaren Fehlern
    • – Redundanzfall bei detektierbaren Fehlern.
  • Tritt ein Redundanzfall durch einen nicht detektierbaren Fehler auf, dann kann das Mastersystem keine kontrollierte Umschaltung auf das Slavesystem vornehmen. Da das Slavesystem das Mastersystem über den Kommunikationskanal zyklisch überwacht und auch das aktuelle Abbild über Eingangs- und Ausgangssignale zyklisch mitgeteilt bekommt, übernimmt der Slave automatisch die Kontrolle, wenn nach Ablauf der Zykluszeit die Kommunikation mit dem Master nicht mehr stattfindet. Dabei verwendet der Slave die zuletzt vom Master erhaltenen Werte der I/O-Signale. Da sich zum Zeitpunkt der Übernahme der Kontrolle durch den Slave die I/O-Signale geändert haben können, ist der Slave nicht im Besitz der letzten Änderung der I/O-Signale. Dies bedeutet, dass sein Abbild dieser Signale eventuell inkonsistent ist.
  • Tritt hingegen ein Redundanzfall durch einen von der virtuellen Maschine detektierbaren Fehler auf, so kann das Mastersystem eine stoßfreie Umschaltung auf das Slavesystem durchführen, bei welchem kein Informationsverlust auftritt.
  • Dieser letztgenannte Fall wird nachfolgend anhand der 8 erläutert, welche eine Darstellung zur Erläuterung eines Redundanzfalles bei der in der 7 gezeigten Konfiguration zeigt.
  • Die 8 zeigt den Zustand des Mastersystems und des Slavesystems bei auftretendem detektierbaren Fehler mit anschließendem Redundanzfall. Der Interpreter des Mastersystems führt die angegebene Befehlssequenz aus. Das Slavesystem befindet sich im Standbymodus, wobei im Slavesystem das gleiche Anwendungsprogramm wie im Mastersystem geladen wurde. Der Interpreter führt dieses Anwendungsprogramm jedoch im Standbymodus nicht aus. Das Codesegment PC des Anwendungsprogrammes ist bereits im Interpreter des Slavesystems verfügbar. Das Datensegment PD wurde ebenfalls erzeugt. Da jedoch das Anwendungsprogramm noch nicht gestartet wurde, sind entsprechende Variablen der Applikation noch nicht initialisiert (NI). Die Registerinhalte des Interpreters des Slaves sind ebenfalls noch ungültig (UG).
  • Der Interpreter des Mastersystems führt den Befehl IOSYS $R1 aus und ruft die Schreibfunktion des I/O-Systems auf, um ein entsprechendes Ausgangssignal zu setzen. Bei Hardwarezugriff des I/O-Systems tritt ein Fehler F auf, so dass das Signal nicht geschrieben werden kann. Das I/O-System meldet an die Fehlerbehandlung der virtuellen Maschine einen Fehler der I/O-Hardware. Die virtuelle Maschine hält die Programmbearbeitung durch den Interpreter an, so dass der Befehlszeiger des Registers auf den Befehl IOSYS $R1 verweist und stehen bleibt.
  • Durch den Kommunikationskanal informiert der Master den Slave, dass ein Redundanzfall eingetreten ist.
  • Der Master überträgt die Werte aller I/O-Signale sowie die Laufzeitinformation des Interpreters bestehend aus den Arbeitsregistern und dem Datensegment des Anwendungsprogrammes zum Slave.
  • Dies ist in der 9 veranschaulicht, welche eine Darstellung zur Erläuterung dieses in einem Fehlerfall erfolgenden Datentransfers zeigt.
  • Der Slave übernimmt die aktuellen Werte aller I/O-Signale, die dem genauen Abbild des zu steuernden Prozesses zum Zeitpunkt des Fehlers entsprechen. Weiterhin initialisiert die virtuelle Maschine des Slavesystems den Interpreter mit der Laufzeitinformation des Mastersystems. Dabei werden alle variablen Werte der Applikation aus dem Datensegment des Masters in das Datensegment des Slaves geschrieben. Ebenso werden die Inhalte sämtlicher Register des Interpreters des Masters in die Register des Interpreters des Slaves übernommen. Das Befehlszeigerregister wird dabei so initialisiert, dass es auf denselben Maschinenbefehl verweist, der im Master einen Fehler verursacht hat. In diesem Anwendungsfall zeigt der Befehlszeiger auf den Maschinenbefehl IOSYS $R1 an derselben Stelle im Codesegment. Anschließend wird der Interpreter des Slaves gestartet, der jetzt genau diesen Maschinenbefehl ausführt, da dieser Befehl aufgrund eines Fehlers in I/O-System im Master nicht ausgeführt werden konnte. Der Interpreter des Slaves führt diesen I/O-Befehl in der bereits beschriebenen Art und Weise aus, indem er das entsprechende Signal in der eigenen, redundant vorhandenen I/O-Hardware setzt.
  • In diesem Verfahren kann die Programmausführung befehlsgenau vom Master auf den Slave umgeschaltet werden, ohne dass Laufzeitinformation der Applikation sowie aktuelle Werte von I/O-Signalen verloren gehen. Herkömmliche Systeme benötigen für eine möglichst exakte Umschaltung eine zyklische Synchronisation zwischen Master und Slave während des Normalbetriebes und müssen mitunter eine Historie von applikationsspezifischen Zustandsdaten mitführen.
  • Bei dem hier beschriebenen Verfahren ist weder eine zyklische Synchronisation im Normalbetrieb noch das Mitführen einer Historie von applikationsspezifischen Zustandsdaten notwendig. Durch das Übertragen der Laufzeitinformation des Interpreters vom Master zum Slave kann die Anwendungsapplikation im Slavesystem befehlsgenau weitergeführt werden.
  • Die 10 zeigt eine Blockdarstellung des Aufbaus eines Computersystems, bei welchem in einem einzigen Steuerungssystem eine virtuelle Maschine zur Steuerung zweier zur Ausführung derselben Anwendungsapplikation vorgesehener, verschiedener Anwendungsprogramme A und B vorgesehen ist. Die 11 zeigt eine Darstellung zur Erläuterung der den verschiedenen Anwendungsprogrammen A und B von 10 zugeordneten Laufzeitumgebung.
  • Bei diesem Ausführungsbeispiel erfolgt beim Auftreten eines Fehlers im Eingabe/Ausgabesystem 6, 7 des Masters eine stoßfreie Umschaltung von der fehlerhaften zur noch funktionsfähigen Anwendung, so dass die Anwendungsapplikation (zu steuernder Prozess) stoßfrei weitergeführt werden kann.
  • Die Verwendung verschiedener, d. h. beispielsweise eine unterschiedliche Programmierung und damit unterschiedlichen Programmcode aufweisender Anwendungsprogramme A und B, die zur Ausführung derselben Anwendungsapplikation vorgesehen sind, hat den Vorteil, dass sogenannte Gleichtaktfehler vermieden werden. Gleichtaktfehler würden auftreten, wenn im Falle eines Fehlers im Anwendungsprogramm des Masters eine Umschaltung vom Master zum Slave erfolgt und im Slave ein identisches Anwendungsprogramm, d. h. ein Anwendungsprogramm gleicher Implementierung, geladen wäre.
  • Grundsätzlich sind bei der Verwendung zweier verschiedener Anwendungsprogramme, die zur Ausführung derselben Anwendungsapplikation vorgesehen sind, folgende beiden Konfigurationen möglich:
    • – die beiden verschiedenen Anwendungsprogramme sind – wie es in der 10 dargestellt ist – in einem einzigen Steuerungssystem implementiert;
    • – die beiden verschiedenen Anwendungsprogramme sind in zwei verschiedenen Steuerungssystemen implementiert, wobei in jedem dieser Steuerungssystem eines der Anwendungsprogramme implementiert ist.
  • Das in der 10 gezeigte Steuerungssystem weist eine virtuelle Maschine auf, die eine Befehlsverarbeitungseinheit 1, einen Compiler 2, einen ersten Interpreter 3a, ein erstes Anwendungsprogramm A, einen zweiten Interpreter 3b, ein zweites Anwendungsprogramm B, ein Laufzeitsystem 5, eine Eingabe/Ausgabeeinheit 6, eine Eingabe/Ausgabe-Hardware 7, ein Netzwerksystem 8 eine Serviceeinheit 9, einen Agenten 10 und eine Sychronisation 11 enthält. Das erste Anwendungsprogramm A wird mittels des Compilers 2 in die Maschinensprache der virtuellen Maschine übersetzt und vom ersten Interpreter 3a ausgeführt. Das zweite Anwendungsprogramm B wird mittels des Compilers 2 in die Maschinensprache der virtuellen Maschine übersetzt und vom zweiten Interpreter 3b ausgeführt.
  • Im Normalbetrieb des in der 10 gezeigten Steuerungssystems führen die Interpreter 3a und 3b das ihnen jeweils zugehörige Anwendungsprogramm aus, so dass bezüglich jedes dieser Anwendungsprogramme unabhängig voneinander Laufzeitdaten ermittelt und abgespeichert werden. Dabei besteht jeweils kein Zugriff auf die Laufzeitdaten des jeweils anderen Anwendungsprogrammes.
  • Damit beim Auftreten eines Fehlers in Anwendung A eine stoßfreie Umschaltung von Anwendung A zu Anwendung B erfolgen kann, wird bei jedem Zugriff eines der beiden Anwendungsprogramme auf das Eingabe/Ausgabesystem 6, 7 eine Synchronisierung der beiden Anwendungsprogramme durchgeführt. Beispielsweise erfolgt dann, wenn nach dem gleichzeitigen Start der beiden Anwendungsprogramme ein bestimmtes Signal geschrieben werden soll und das Anwendungsprogramm A die entsprechende Stelle im Programmcode zuerst erreicht, das Signal geschrieben und der Interpreter des Anwenderprogrammes A solange blockiert, bis das Anwendungsprogramm B das gleiche Signal schreiben will. Ruft der Interpreter des Anwendungsprogrammes B das Eingabe/Ausgabe-System 6, 7 auf, um das genannte Signal zu schreiben, dann wird die Blockierung des Interpreters des Anwenderprogrammes A wieder aufgehoben, so dass beide Interpreter die Ausführungen ihres jeweiligen Anwendungsprogrammes fortsetzen können, wobei diese Fortsetzung damit zeitgleich bzw. synchronisiert erfolgt.
  • Auf diese Weise wird eine Synchronisation der beiden Anwendungsprogramme sichergestellt, aufgrund derer die beiden Anwendungsprogramme, die aufgrund ihrer unterschiedlichen Implementierung unterschiedlichen Code ausführen, stets das gleiche Abbild der I/O-Signale besitzen. Dadurch sind die internen Zustandsdaten und Variablen des jeweiligen Anwendungsprogrammes im Hinblick auf die aktuellen Werte der I/O-Signale stets konsistent, so dass im Falle des Auftretens eines Fehlers in Anwendung A eine stoßfreie, datenverlustfreie Umschaltung von Anwendung A zu Anwendung B erfolgen kann.
  • Die 12 zeigt eine Blockdarstellung zur Erläuterung einer Master-/Slave-Konfiguration, bei welcher im Master und im Slave jeweils zwei verschiedene Anwendungsprogramme A und B implementiert sind. Alle diese Anwendungsprogramme sind zur Ausführung derselben Anwendungsapplikation vorgesehen. Die 13 zeigt eine Darstellung zur Erläuterung der Laufzeitumgebung der der virtuellen Maschine des Mastersystems von 12 zugeordneten nicht identischen Anwendungsprogramme im Normalbetrieb. Die 14 zeigt eine Darstellung zur Erläuterung der Laufzeitumgebung des der virtuellen Maschine des Mastersystems von 12 zugeordneten nicht identischen Anwendungsprogramme beim Auftreten eines Fehlers im Mastersystem.
  • Bei der in der 12 gezeigten Master/Slavekonfiguration sind im Mastersystem die Anwendungsprogramme A und B und im Slavesystem ebenfalls die Anwendungsprogramme A und B geladen.
  • Das Mastersystem weist zwei Interpreter 3a und 3b auf, von denen einer das Anwendungsprogramm A und der andere das Anwendungsprogram B ausführt. Das Slavesystem weist ebenfalls zwei Interpreter 3a und 3b auf, von denen einer das Anwendungsprogramm A und der andere das Anwendungsprogramm B ausführt. Alle Anwendungsprograme sind zur Ausführung derselben Anwendungsapplikation vorgesehen.
  • Im Normalbetrieb werden im Mastersystem die beiden dort implementierten, verschiedenen Anwendungsprogramme A und B zur selben Zeit ausgeführt. Die im Slavesystem implementierten Anwendungsprogramme A und B befinden sich während des Normalbetriebes im Standby Modus.
  • Die Anwendungsprogramme A und B führen verschiedenen Code aus. Dabei führen die beiden Interpreter das ihnen jeweils zugeordnete Anwendungsprogramm aus und haben dabei keinen Zugriff auf den Laufzeitdatenbereich des jeweils anderen Anwendungsprogrammes. Damit eine befehlsgenaue Umschaltung vom Master auf den Slave im Fehlerfall durchgeführt werden kann, werden beide Anwendungsprogramme A und B (innerhalb einer virtuellen Maschine) beim Zugriff auf das I/O-System synchronisiert. Wenn beispielsweise nach dem Start der beiden Anwendungsprogramme ein bestimmtes Signal geschrieben werden soll und das Anwendungsprogramm A die entsprechende Stelle im Code zuerst erreicht, dann wird das Signal geschrieben und das I/O-System blockiert den Interpreter des Anwendungsprogrammes A solange, bis das Anwendungsprogramm B das gleiche Signal schreiben will. Sobald der Interpreter des Anwendungsprogrammes B dann ebenfalls das I/O-System aufruft, um das Signal zu schreiben, wird der wartende Interpreter des Anwendungsprogrammes A wieder fortgeführt, wobei der Interpreter des Anwendungsprogrammes B ebenfalls weiterläuft.
  • Auf diese Weise wird eine Synchronisation der beiden Anwendungsprogramme auf I/O-Signalebene durchgeführt. Dadurch ist sichergestellt, dass beide Anwendungsprogramme, welche unterschiedlichen Code ausführen, immer das gleiche Abbild der I/O-Signale besitzen. Dadurch sind die internen Zustandsdaten und Variablen des jeweiligen Anwendungsprogrammes im Hinblick auf die aktuellen Werte der I/O-Signale stets konsistent.
  • Aus der 14 ist die Laufzeitinformation beider Anwendungsprogramme zum Zeitpunkt eines Fehlers innerhalb der virtuellen Maschine des Masters dargestellt. Der Interpreter des Anwendungsprogrammes B führt zu diesem Zeitpunkt gerade den Maschinenbefehl LADDR $R1, Value aus. Da die virtuelle Maschine das Anwendungsprogramm A aufgrund des genannten Fehlers nicht weiterführen kann, beendet der zugehörige Interpreter das Anwendungsprogramm A und informiert den Interpreter des Anwendungsprogrammes B darüber, dass die Programmausführung des Anwendungsprogrammes B nach Abarbeitung des aktuellen Maschinenbefehls angehalten wird. Nachdem der Interpreter des Anwendungsprogrammes B den aktuellen Maschinenbefehl LADDR $R1, Value ausgeführt hat, erhöht der Interpreter den Befehlszeiger um 1, so dass das Befehlszeigerregister auf den Maschinenbefehl LOAD $R2, $R1 verweist und stoppt die Programmausführung. Die Laufzeitinformation des Anwendungsprogrammes B wird eingefroren.
  • Die virtuelle Maschine überträgt nun das Abbild aller I/O-Signale sowie die Laufzeitinformation des Anwendungsprogrammes B an das Slavesystem. Das Slavesystem initialisiert den Laufzeitdatenbereich seines Anwendungsprogrammes B, das sich im Standbymodus befindet, mit der vom Master erhaltenen Laufzeitinformation. Der Interpreter des Anwendungsprogrammes B im Slavesystem führt den nächsten Maschinenbefehl aus, in diesem Fall den Befehl LOAD $R2, $R1.
  • Auf diese Weise wird eine stoßfreie, befehlsgenaue Umschaltung vom Master zum Slave ohne Laufzeitdatenverlust ermöglicht. Dabei ist es nicht relevant, welches Anwendungsprogramm ausfällt, da das System immer die Laufzeitinformation des jeweils funktionsfähigen Anwendungsprogrammes an den Slave übertragen kann. Es muss in diesem Anwendungsfall weder eine zyklische Synchronisation im Normalbetrieb zwischen Master und Slave stattfinden, noch ist das Mitführen einer Historie von applikationsspezifischen Zustandsdaten notwendig. In dem hier beschriebenen Ausführungsbeispiel werden vom Anwender zwei verschiedene Anwendungsprogramme für dieselbe Anwendungsapplikation implementiert. Das hier beschriebene Verfahren ist im Hinblick auf die redundant vorhandenen Anwendungsprogramme skalierbar, so dass der Anwender theoretisch beliebig viele Anwendungsprogramme für dieselbe Anwendungsapplikation implementieren kann. Es erhöht sich in diesem Fall lediglich der Zeitbedarf für die Synchronisierung der Anwendungsprogramme bei I/O-Zugriffen.
  • Die vorstehend beschriebene Synchronisation der Anwendungsprogramme beim Zugriff auf I/O-Signale erfolgt, um zwei unabhängig voneinander laufende Anwendungsprogramme im Hinblick auf die Verarbeitung der I/O-Signale konsistent zu halten und ein redundantes Verhalten zu ermöglichen. Die beiden Anwendungsprogramme rufen Funktionen des I/O-Systems auf, um I/O-Signale zu schreiben oder zu lesen. Ruft eines der Anwendungsprogramme das I/O-System auf, um ein bestimmtes Signal mit einem bestimmten Wert zu schreiben, dann wird dieses Anwendungsprogramm solange blockiert, bis auch das andere Anwendungsprogramm das I/O-System aufruft. Das I/O-System prüft dabei, ob beide Anwendungsprogramme dasselbe Signal lesen oder mit dem gleichen Wert schreiben wollen. Dies bedeutet, dass eine konsistente Synchronisation nur dann möglich ist, wenn folgende Kriterien erfüllt sind:
    • – beide Anwendungsprogramme greifen auf das gleiche Signal zu,
    • – beide Anwendungsprogramme wollen die gleiche Operation auf dem Signal ausführen, d. h. beide Anwendungsprogramme wollen das Signal entweder lesen oder schreiben, und
    • – wenn das Signal von beiden Anwendungsprogrammen geschrieben werden soll, wird geprüft, ob der gleiche Wert geschrieben werden soll.
  • Werden nicht alle vorgenannten Kriterien erfüllt, dann laufen beide Anwendungsprogramme nicht synchron und eine Redundanz ist nicht mehr gegeben. Da das I/O-System einen derartigen Synchronisationsfehler erkennt, kann das System entsprechend reagieren. Nachdem der Zugriff auf ein bestimmtes I/O-Signal unter erfolgreicher Prüfung der obigen Kriterien erfolgt ist, lässt das I/O-System beide Anwendungsprogramme unabhängig voneinander weiterlaufen, bis der nächste Zugriff auf ein I/O-Signal erfolgt. Auf diese Weise haben beide Anwendungsprogramme immer das aktuelle Abbild der I/O-Signale. Fällt nun ein Anwendungsprogramm aufgrund eines Fehlers aus, kann das weitere, redundante Anwendungsprogramm durch das konsistente Abbild der I/O-Signale alleine weiterlaufen, was eine stoßfreie Umschaltung vom fehlerhaften zum redundanten Anwendungsprogramm ermöglicht. Werden beide Anwendungsprogramme im selben Steuerungssystem ausgeführt, dann erfolgt die Synchronisation innerhalb des I/O-Systems über Betriebssystemmechanismen. Werden beide Anwendungsprogramme in verschiedenen Steuerungssystemen ausgeführt, dann wird die Synchronisation über den Austausch von Daten über eine Kommunikationsverbindung zwischen den Steuerungssystemen des Masters und des Slaves ausgeführt.
  • Die virtuellen Maschinen werden bereits im Anlauf auf allen Computern gestartet und laufen, je nach Anwendungsfall, zeitlich parallel, nicht befehlssynchron, mit. Alle Betriebssystem technischen Anforderungen wie eine Reservierung von Speicherbedarf, etc., werden bereits beim Anlauf durchgeführt. Die virtuellen Maschinen bearbeiten jeweils ein oder mehrere Anwendungsprogramme zeitgleich.
  • Die Erfindung betrifft nach alledem ein Verfahren zum Betreiben eines hochverfügbaren Computersystems unter Verwendung einer oder mehrerer virtueller Maschinen, wobei zur Ausführung einer Anwendungsapplikation mehrerer Anwendungsprogramme bereitgestellt wurden. Diese können nicht identisch oder identisch zueinander sein. Wird ein einziges Steuerungssystem verwendet, welches mit zwei nicht identischen Anwendungsprogrammen ausgestattet ist, dann wird eine Softwarehochverfügbarkeit erreicht. Werden zwei oder mehr Steuerungssysteme, die mit identischen oder nicht identischen Anwendungsprogrammen ausgestattet sind, verwendet, dann wird eine Software- und Hardwarehochverfügbarkeit erreicht. Nicht identische Anwendungsprogramme werden von den virtuellen Maschinen zeitgleich betrieben, wobei Zugriffe aus das Ein-/Ausgabesystem synchronisiert werden.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • DE 102005053275 A1 [0003, 0004]

Claims (8)

  1. Verfahren zum Betreiben eines hochverfügbaren Computersystems unter Verwendung einer oder mehrerer virtueller Maschinen, bei welchem – ein erstes, zur Ausführung einer Anwendungsapplikation vorgesehenes Anwendungsprogramm bereitgestellt wird, – ein zweites, zur Ausführung derselben Anwendungsapplikation vorgesehenes Anwendungsprogramm bereitgestellt wird, – die Anwendungsprogramme jeweils mittels eines Compilers in die Maschinensprache der virtuellen Maschine übersetzt werden und – die Maschinensprache von einem Interpreter der virtuellen Maschine ausgeführt wird, wobei – das erste Anwendungsprogramm zur Steuerung der Anwendungsapplikation verwendet wird, – das zweite Anwendungsprogramm im Standbymodus betrieben wird oder zeitgleich parallel bearbeitet wird, – beim Auftreten eines Fehlers eine stoßfreie Umschaltung vom ersten auf das zweite Anwendungsprogramm erfolgt und – nach erfolgter Umschaltung das zweite Anwendungsprogramm zur Steuerung der Anwendungsapplikation verwendet wird.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass zur Ausführung derselben Anwendungsapplikation zwei nicht identische Anwendungsprogramme bereitgestellt werden, beide Anwendungsprogramme zeitgleich bearbeitet werden und bei jedem Zugriff eines der Anwendungsprogramme auf ein Eingabe-/Ausgabesystem eine Synchronisierung der beiden Anwendungsprogramme durchgeführt wird.
  3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass die Anwendungsprogramme einem einzigen, gemeinsamen, eine virtuelle Maschine aufweisenden Steuerungssystem bereitgestellt werden und die virtuelle Maschine im Falle eines erkannten Fehlers die Umschaltung vom ersten auf das zweite Anwendungsprogramm steuert.
  4. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass – das erste Anwendungsprogramm einem ersten Steuerungssystem bereitgestellt wird, welches eine erste virtuelle Maschine aufweist, – das zweite Anwendungsprogramm einem zweiten Steuerungssystem bereitgestellt wird, welches eine zweite virtuelle Maschine aufweist und mit dem ersten Steuerungssystem über eine Kommunikationsverbindung verbunden ist, – im Falle eines detektierbaren Fehlers im ersten Steuerungssystem das erste Anwendungsprogramm gestoppt wird und – das im zweiten Steuerungssystem vorhandene zweite Anwendungsprogramm die weitere Ausführung der Anwendungsapplikation übernimmt.
  5. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass die beiden nicht identischen Anwendungsprogramme jeweils einem ersten Steuerungssystem und einem zweiten Steuerungssystem bereitgestellt werden, wobei das erste Steuerungssystem eine erste virtuelle Maschine und das zweite Steuerungssystem eine zweite virtuelle Maschine aufweist, die beiden Anwendungsprogramme im ersten Steuerungssystem von der ersten virtuellen Maschine gesteuert werden, die beiden Anwendungsprogramme im zweiten Steuerungssystem von der zweiten virtuellen Maschine gesteuert werden und im Falle des Auftretens eines Fehlers im ersten Steuerungssystem auf das nicht identische Anwendungsprogramm des ersten Steuerungssystems oder nach einer Übertragung von Laufzeitdaten auf das identische Anwendungsprogramm des zweiten Steuerungssystems umgeschaltet wird.
  6. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass – das erste, zur Ausführung der Anwendungsapplikation vorgesehene Anwendungsprogramm einem ersten Steuerungssystem bereitgestellt wird, – ein zweites, zur Ausführung derselben Anwendungsapplikation vorgesehenes, mit dem ersten Anwendungsprogramm identisches Anwendungsprogramm einem mit dem ersten Steuerungssystem über eine Kommunikationsverbindung verbundenen zweiten Steuerungssystem bereitgestellt wird, und – zu einer stoßfreien Umschaltung Laufzeitdaten und Peripheriedaten vom ersten Steuerungssystem über die Kommunikationsverbindung zum zweiten Steuerungssystem übertragen werden.
  7. Hochverfügbares Computersystem zur Durchführung eines Verfahrens gemäß Anspruch 1, welches ein einziges, eine virtuelle Maschine aufweisendes und mit zwei nicht identischen, zur Ausführung derselben Anwendungsapplikation vorgesehenen Anwendungsprogrammen ausgestattetes Steuerungssystem aufweist.
  8. Hochverfügbares Computersystem zur Durchführung eines Verfahrens gemäß Anspruch 1, welches zwei über eine Kommunikationsverbindung miteinander verbundene Steuerungssysteme aufweist, welche jeweils eine virtuelle Maschine aufweisen und jeweils mit einem zur Ausführung derselben Anwendungsapplikation vorgesehenen Anwendungsprogramm ausgestattet sind, wobei die Anwendungsprogramme identisch oder nicht identisch sind.
DE102013106923.1A 2013-07-02 2013-07-02 Verfahren zum Betreiben eines hochverfügbaren Computersystems unter Verwendung einer oder mehrerer virtueller Maschinen Withdrawn DE102013106923A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102013106923.1A DE102013106923A1 (de) 2013-07-02 2013-07-02 Verfahren zum Betreiben eines hochverfügbaren Computersystems unter Verwendung einer oder mehrerer virtueller Maschinen

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102013106923.1A DE102013106923A1 (de) 2013-07-02 2013-07-02 Verfahren zum Betreiben eines hochverfügbaren Computersystems unter Verwendung einer oder mehrerer virtueller Maschinen

Publications (1)

Publication Number Publication Date
DE102013106923A1 true DE102013106923A1 (de) 2015-01-08

Family

ID=52106028

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013106923.1A Withdrawn DE102013106923A1 (de) 2013-07-02 2013-07-02 Verfahren zum Betreiben eines hochverfügbaren Computersystems unter Verwendung einer oder mehrerer virtueller Maschinen

Country Status (1)

Country Link
DE (1) DE102013106923A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3968152A1 (de) * 2020-09-15 2022-03-16 Siemens Aktiengesellschaft Verfahren zum übertragen einer software-applikation von einer ersten zu einer zweiten datenverarbeitungseinrichtung

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102005053275A1 (de) 2004-11-25 2006-06-08 Fujitsu Siemens Computers Gmbh Hochverfügbares Computerverbundsystem

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102005053275A1 (de) 2004-11-25 2006-06-08 Fujitsu Siemens Computers Gmbh Hochverfügbares Computerverbundsystem

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3968152A1 (de) * 2020-09-15 2022-03-16 Siemens Aktiengesellschaft Verfahren zum übertragen einer software-applikation von einer ersten zu einer zweiten datenverarbeitungseinrichtung
WO2022058153A1 (de) * 2020-09-15 2022-03-24 Siemens Aktiengesellschaft Verfahren zum übertragen einer software-applikation von einer ersten zu einer zweiten datenverarbeitungseinrichtung

Similar Documents

Publication Publication Date Title
DE602005003490T2 (de) Verteiltes System mit Quorumredundanz und Verfahren dafür
DE3781486T2 (de) Verfahren zur stossfreien umschaltung von aktiven einheiten zu ersatzeinheiten in datenverarbeitungsanlagen und datenverarbeitungsanlage zur durchfuehrung dieses verfahrens.
DE69124285T2 (de) Datenverarbeitungssystem mit einem Eingangs-/Ausgangswegetrennmechanismus und Verfahren zur Steuerung des Datenverarbeitungssystems
DE69615611T2 (de) Externes Speichersystem mit redundanten Speichersteuerungen
DE19810814B4 (de) Rechnersystem und Zustandskopierverfahren zur skalierbaren Software-Aktualisierung
DE2908316C2 (de) Modular aufgebaute Multiprozessor-Datenverarbeitungsanlage
DE69608641T2 (de) Ausfallbeseitigung für Steuergerät für eine Ein-/Ausgabevorrichtung
DE69128271T2 (de) Verfahren und System zur Erhöhung der Betriebsverfügbarkeit eines Systems von Rechnerprogrammen, wirkend in einem verteilten Rechnerssystem
DE102007025397B4 (de) System mit mehreren Prozessoren und Verfahren zu seinem Betrieb
EP2466466B1 (de) Verfahren zur Fehlererkennung bei der Ausführung eines Echtzeit-Betriebssystems
EP2817682B1 (de) Verfahren zum ausfallsicheren betreiben eines prozesssteuersystems mit redundanten steuereinrichtungen
EP2513796B1 (de) Verfahren zum betreiben einer recheneinheit
EP1952239A1 (de) Vorrichtung und verfahren zum beheben von fehlern bei einem wenigstens zwei ausführungseinheiten mit registern aufweisenden system
DE112013007469B4 (de) Kommunikationssystem, Standby-Vorrichtung, Kommunikationsverfahren, und Standby-Programm
DE602004003327T2 (de) Computersystem und Verfahren zum Wiederanlauf mittels entferntem Kopieren
DE60303468T2 (de) Fehlertolerante Vorrichtung zur Informationsverarbeitung
DE69515176T2 (de) Ersatzprozessstartverfahren für ein redundantes echtzeitsystem insbesondere in einer vermittlungsstelle
EP1358554A1 (de) Automatische inbetriebnahme eines clustersystems nach einem heilbaren fehler
DE19780639C2 (de) Arbeitsübernahmesystem
DE2350229A1 (de) Datenverarbeitungsanlage, insbesondere als steuereinrichtung fuer fernsprechvermittlungsanlagen
EP2732347A1 (de) Verfahren und system zur dynamischen verteilung von programmfunktionen in verteilten steuerungssystemen
DE3780306T2 (de) Adapterbusschalter zur verbesserung der verfuegbarkeit einer steuereinheit.
DE4010109C2 (de) Duplexrechnersystem
DE10014390C2 (de) Hochverfügbares Rechnersystem und Verfahren zur Umschaltung von Bearbeitungsprogrammen eines hochverfügbaren Rechnersystems
WO2014161986A1 (de) Steuer- und datenübertragungsanlage zur redundanten prozesssteuerung und verfahren zur firmware-aktualisierung

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: ZIMMERMANN & PARTNER, DE

Representative=s name: ZIMMERMANN & PARTNER PATENTANWAELTE MBB, DE

R081 Change of applicant/patentee

Owner name: SCHORR, HUBERT, DE

Free format text: FORMER OWNERS: CONCURRENT SOFTWARE GMBH, 97475 ZEIL, DE; GEFAZ MBH, 91301 FORCHHEIM, DE

Owner name: GEFAZ MBH, DE

Free format text: FORMER OWNERS: CONCURRENT SOFTWARE GMBH, 97475 ZEIL, DE; GEFAZ MBH, 91301 FORCHHEIM, DE

R082 Change of representative

Representative=s name: ZIMMERMANN & PARTNER PATENTANWAELTE MBB, DE

R012 Request for examination validly filed
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee