DE102013106923A1 - A method of operating a high availability computer system using one or more virtual machines - Google Patents

A method of operating a high availability computer system using one or more virtual machines 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
German (de)
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/en
Publication of DE102013106923A1 publication Critical patent/DE102013106923A1/en
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. The invention relates to a method for operating a high-availability computer system using one or more virtual machines, in which a plurality of application programs are provided for executing an application application. The application programs may not be identical or identical to each other. Using a single control system with two non-identical application programs achieves software uptime. When using two or more control systems with non-identical or identical application programs, software and hardware uptime is achieved. Identical application programs are operated according to the master / slave method. Non-identical application programs are operated by the virtual machines at the same time, whereby accesses to the input / output system are synchronized.

Figure DE102013106923A1_0001
Figure DE102013106923A1_0001

Description

Die Erfindung betrifft ein Verfahren zum Betreiben eines hochverfügbaren Computersystems unter Verwendung einer oder mehrerer virtueller Software Maschinen, nachfolgend virtuelle Maschine genannt. The invention relates to a method for operating a high-availability computer system using one or more virtual software machines, referred to below as a virtual machine.

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. Highly available computer systems are already known. They have a master / slave configuration, with the master in each case actively controlling a technical process or an application application by executing an application program, while the slave is operated in standby mode and assuming control of the technical process in the event of a failure of the master. For example, this engineering process may be the operation of a production machine controlled by the master using access to an input / output system.

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. From the DE 10 2005 053 275 A1 there is known a high availability computer interconnect system having a first computer system and a second computer system. The first computer system comprises at least one virtual computer unit and a control device, wherein the control device is adapted to allocate to the at least one virtual computer unit of the computer memory of variable size. The virtual computer unit is set up as a virtual substitute computer unit within the computer network system and is suitable for assuming its tasks in the event of the failure of one of the other computer systems. The first computer system includes a high availability agent that is capable of detecting a failure of one of the other computer systems and, upon detecting a failure, directing the controller to allocate memory of a particular size to the backup virtual computer unit. The size of the work memory allocated to the virtual spare computer unit depends on whether or not the spare virtual computer unit takes over tasks of any of the other computer systems.

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. The solution in DE 10 2005 053 275 A1 has disadvantages in controlling a technical process. The allocation of memory after detecting the failure of a computer system takes time. This is often incompatible with the claims of a process to be controlled.

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. The object of the invention is to provide a method for operating a fault-tolerant computer system using one or more virtual machines in which, in the event of a failure of the application program controlling a technical process, the continuation of the technical process is accelerated.

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. This object is achieved by a method having the features specified in claim 1. Advantageous embodiments and further developments of the invention are specified in the dependent claims.

Die Vorteile der Erfindung ergeben sich aus deren nachfolgender beispielhafter Erläuterung anhand der Figuren. Es zeigt The advantages of the invention will become apparent from the following exemplary explanation with reference to FIGS. It shows

1 eine Blockdarstellung eines ersten Ausführungsbeispiels für ein hochverfügbares Computersystem, 1 a block diagram of a first embodiment of a high-availability computer system,

2 eine Blockdarstellung eines zweiten Ausführungsbeispiels für ein hochverfügbares Computersystem, 2 a block diagram of a second embodiment of a high-availability computer system,

3 eine Blockdarstellung eines dritten Ausführungsbeispiels für ein hochverfügbares Computersystem, 3 a block diagram of a third embodiment of a high-availability computer system,

4 eine Blockdarstellung eines vierten Ausführungsbeispiels für ein hochverfügbares Computersystem, 4 4 is a block diagram of a fourth exemplary embodiment of a high-availability computer system,

5 eine Blockdarstellung des grundsätzlichen Aufbaus einer virtuellen Maschine, 5 a block diagram of the basic structure of a virtual machine,

6 eine Darstellung zur Erläuterung der Arbeitsweise eines Interpreters, 6 a representation for explaining the operation of an interpreter,

7 eine Blockdarstellung zur Erläuterung einer Master/Slave-Konfiguration, 7 a block diagram for explaining a master / slave configuration,

8 eine Darstellung zur Erläuterung eines Redundanzfalles bei der in der 7 gezeigten Konfiguration, 8th a representation for explaining a case of redundancy in the in 7 shown configuration,

9 eine Darstellung zur Erläuterung des Datentransfers vom Master zum Slave im Fehlerfall, 9 a representation explaining the data transfer from the master to the slave in the event of a fault,

10 eine Blockdarstellung des Aufbaus eines Computersystems, bei welchem in einem einzigen Steuerungssystem eine virtuelle Maschine zur Steuerung zweier Anwendungsprogramme vorgesehen ist, 10 a block diagram of the construction of a computer system in which in a single control system, a virtual machine is provided for controlling two application programs,

11 eine Darstellung zur Erläuterung der den beiden Anwendungsprogrammen von 10 zugeordneten Laufzeitumgebung, 11 a representation for explaining the two application programs of 10 associated runtime environment,

12 eine Blockdarstellung zur Erläuterung einer Master/Slave-Konfiguration, bei welcher im Master und im Slave jeweils zwei verschiedene Anwendungsprogramme implementiert sind, 12 a block diagram for explaining a master / slave configuration in which two different application programs are implemented in the master and in the slave,

13 eine Darstellung zur Erläuterung der Laufzeitumgebung der der virtuellen Maschine des Mastersystems von 12 zugeordneten beiden verschiedenen Anwendungsprogramme im Normalbetrieb und 13 a representation for explaining the runtime environment of the virtual machine of the master system of 12 associated with two different application programs in normal operation and

14 eine Darstellung zur Erläuterung der der virtuellen Maschine des Mastersystems von 12 zugeordneten verschiedenen Anwendungsprogramme beim Auftreten eines Fehlers im Mastersystem. 14 a representation for explaining the virtual machine of the master system of 12 associated with different application programs when an error occurs in the master system.

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. According to the present invention, there is provided a method of operating a high availability computer system using one or more virtual machines. This computer system has one, two or more control systems. If there are two or more control systems, these are coupled together by bidirectional communication links. Each of these control systems includes a virtual machine where the virtual machines of different control systems are identical. Each virtual machine implements a complete runtime environment for one or more application programs.

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. A user of the computer system creates in a first step an application program provided for executing an application application in a desired programming language. This creates a source code that is translated by a compiler into the machine language of the virtual machine. This machine language is then executed by an interpreter of the virtual machine.

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. The 1 shows a block diagram of a first embodiment of a high-availability computer system. In this first embodiment, the computer system has a single control system. To this belongs a virtual machine VM which operates two non-identical application programs AW1 and AW2 provided for executing the same application application. These non-identical application programs, which are intended to execute the same application application, have different implementations. For example, the application programs are created in different programming languages. The first application program AW1 is used in normal operation to control the application application. The second application program AW2 is also processed by the virtual machine at the same time.

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. During this operation of the application programs by the virtual machine, synchronization of the two application programs by the virtual machine takes place, this synchronization being performed each time one of the two application programs accesses the input / output system of the control system. If one of the application programs wants to write data at a particular program location, then the virtual machine stops this application program until the other application program also accesses the I / O system. Thereafter, both application programs are continued synchronously. Through this synchronization, both application programs are synchronized with respect to the processing of the input / output signals and are inherently consistent.

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. During this operation of the application programs, the virtual machine monitors the two application programs for the occurrence of errors. These errors include, for example, the occurrence of a division by zero, a steadily increasing memory requirement, and so on. If the virtual machine detects the occurrence of an error, then the affected application program is aborted by the virtual machine. If the error occurred in application AW1, then the virtual machine performs a bumpless switchover from application AW1 to application AW2, i. H. from the first application program to the second application program. This bumpless transfer does not lose any data because the two application programs always have access to the currently valid runtime data and are synchronized with each other in terms of their access to the input / output system. After this bumpless transfer, the second application program is used to further control the application application. In this way, software high availability and thus high availability of the application application is achieved after all.

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. Using two non-identical application programs increases the likelihood of software common mode errors, i. H. in the case of identical programming errors occurring, reduced.

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. Occurs in this embodiment, however, a complete power failure in the (single) control system, then a further control of the application programs and thus an execution of the application application is no longer possible.

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. The 2 shows a block diagram of a second embodiment of a high-availability computer system. In this second embodiment, the computer system has two control systems coupled to one another via a communication link. Each of these control systems has a virtual machine VM. The virtual machine of the first one Control system controls a first application program AW1, the virtual machine of the second control system, a second application program AW2. The two application programs AW1 and AW2 are identical application programs intended for executing the same application application. The first application program AW1 is assigned master function, the second application program AW2 slave function. The first application program AW1 is used to control the application application. The second application program AW2 is operated in standby mode. The virtual machines monitor the associated application program as well as the state of the respective control system. The accesses to the input / output system are not synchronized.

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. In the case of an error occurring in the first control system which was not caused by the first application program, the first application program is stopped and the runtime data and the peripheral data of the first application program are transmitted to the second control system. The existing identical application program takes over the further execution of the application application.

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. The switching between the first application program implemented in the first control system and the identical second application program implemented in the second control system takes place bumplessly, ie. H. without data loss, since the runtime data and the peripheral data of the first application program are provided to the second application program when an error occurs.

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. The 3 shows a block diagram of a third embodiment of a high-availability computer system. In this third embodiment, the computer system has two control systems coupled to one another via a communication link. Each of these control systems has a virtual machine VM. The virtual machine of the first control system controls a first application program AW1, the virtual machine of the second control system controls a second application program AW2. The two application programs AW1 and AW2 are not identical application programs, but they are intended for the execution of the same application application. The first application program AW1 has a different implementation to the application program 2 on. The first application program AW1 is assigned master function, the second application program AW2 slave function. The first application program AW1 is used in normal operation to control the application application. The second application program AW2 runs quasi parallel to the AW1. The virtual machines each monitor the associated application program and also the state of the respective control system. The accesses to the input / output system are synchronized. In the case of an error occurring in the first control system, which may be a runtime error of the first application program or another error in the first control system, the first application program is stopped and a switchover is performed. The application program AW2 present in the second control system then obtains a master function and assumes the further execution of the application application.

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. The switchover between the first application program implemented in the first control system and the non-identical second application program implemented in the second control system is bum-free, since the accesses of both application programs to the input / output system are synchronized.

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. The 4 shows a block diagram of a fourth embodiment of a highly available computer system. In this fourth embodiment, the computer system has two control systems coupled to one another via a communication link. Each of these control systems has a virtual machine VM. The virtual machine of the first control system controls a first application program AW1 and a second application program AW3, which are non-identical application programs. The virtual machine of the second control system controls a second application program AW2 and a fourth application program AW4, which are also non-identical application programs. The application program AW1, however, is identical to the application program AW2. The application program AW3 is identical to the application program AW4. All application programs are designed to execute one and the same application application.

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. The virtual machines check their assigned, non-identical application programs, which are executed at the same time and synchronized with respect to their accesses to the input / output system, and also monitor the state of the respective control system.

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.
In the case of an error occurring in the first control system, which is a runtime error of an application program, the failed application program is stopped by the virtual machine. The virtual Machine now checks the type of error. Depending on the detected error, either:
  • - Transfer the runtime and peripheral data of the stopped application program to the second control system. The identical application program of the second control system takes over the further execution of the application application or:
  • - The non-identical application program of the first control system takes over the further execution of the application application.

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. The 5 shows a block diagram of the basic structure of a virtual machine. Such a virtual machine has a command processing unit 1 , a compiler 2 , an interpreter 3 , an application program 4 , a runtime system 5 , an input / output unit 6 , an input / output hardware 7 , a network system 8th , possibly additional system services 9 , an agent 10 and a master / slave synchronization 11 on. The input / output unit 6 and the input / output hardware 7 together form an input / output system, also referred to below as an I / O system.

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. The runtime system implements a complete runtime environment for one or more user programs. In a first step, a user creates an application program 4 in a desired programming language. The compiler 2 translates this application program or the source code of this application program into the machine language of the virtual machine. This machine language is provided by the interpreter 3 executed. Different programming languages can be used or supported. The compiler 2 is designed to handle application programs of multiple programming languages to those of the interpreter 3 can translate the machine language required by the virtual machine.

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. Will then in normal operation of the computer system by the interpreter 3 running an application program, then the interpreter generates 3 the required runtime information for this application program. The interpreter uses a register image for processing the application program, which consists essentially of working registers and an instruction pointer register. The application program itself has program data PD and a program code PC. Both the register image of the interpreter and the runtime data of the application program, which comprise the program data and the program code, are stored in a memory area managed by the operating system.

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. By means of the input / output unit 6 and the input / output hardware 7 which constitute an input / output system, peripheral data is written and read. The network system 8th offers the possibility of inter-process communication of the application application with other system components. The service unit 9 offers additional system services such as access to the file system. The agent 10 handles the monitoring of the application application (s) in terms of resource requirements, etc., and implements redundancy management. The synchronization 11 implements the data transfer of the runtime and peripheral data from the master to the 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. The 6 shows a representation for explaining the operation of the interpreter 3 , It is on the left side of the 6 illustrates the register image RA used by the interpreter for processing the respective application program, which essentially consists of working registers and an instruction pointer register. On the right side of the 6 the runtime data LZD of the application program are shown, to which the program data PD and the program code PC belong. The program code includes a variety of machine instructions. The program data consists of a large number of variables.

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. The 7 shows a block diagram for explaining a master / slave configuration, which is a simple redundancy system based on a virtual machine. The master system forms a first control system and the slave system a second control system. These systems can consist of commercially available industrial PCs or of so-called embedded systems.

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 Both systems contain a command processing unit 1 , a compiler 2 , an interpreter 3 , an application program 4 , a runtime system 5 , an input / output unit 6 , an input / output hardware 7 , a network system 8th , a service unit 9 , an agent 10 and a synchronization 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. By means of the agent 10 a mutual monitoring of the systems is carried out. Furthermore, the synchronization 11 in the event of a fault, to transfer data from the faulty master system to the slave system, wherein this data transmission takes place via the communication connection provided between the systems.

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. In operation with identical user programs, the application application is executed under the control of the virtual machine provided in the master system, which uses the application program provided in the master system for executing the application application. The master system has the sole control over the application application. The Slave system is in standby mode. The virtual machine of the slave system has loaded an identical application program, which, however, is not executed in normal operation by the associated interpreter. The interpreter itself is also in a standby mode. The slave system monitors the master system through cyclic communication over the communication link between the two systems.

Das Mastersystem fährt mit der Ausführung der Anwendungsapplikation fort, solange im Mastersystem kein Fehler auftritt. The master system continues execution of the application application as long as no error occurs in the master system.

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.
Possible errors can be divided into the following two categories:
  • - errors undetectable by the virtual machine and
  • - Errors detectable by the virtual machine.

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. Errors that can not be detected by the virtual machine include, for example, a sudden power failure of the master system and a total failure of the hardware platform.

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. A sudden power failure will result in an immediate system shutdown unless battery backup is provided, which will maintain the voltage for some time. A total failure of the hardware platform of the master system occurs when system-relevant hardware modules of the master system such as memory modules or the processor itself are no longer functional. In such cases, the virtual machine can not initiate a controlled switch to the slave system.

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.
The virtual machine, however, can detect errors that occur:
  • - errors in the input / output system,
  • - critical errors in the application program,
  • A constantly increasing resource consumption of the application program,
  • - Errors in the subsystems of the virtual machine itself.

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. Errors in the input / output system occur when the I / O hardware 7 When writing and / or reading signals reports an error. Critical errors in the application program occur due to incorrect implementation by the user, for example when a division by zero occurs. A steadily increasing consumption of resources occurs when the application program allocates, for example, dynamic memory and does not release it again. Over a longer period of time, a critical system state is achieved as a result, because other subsystems can no longer allocate dynamic memory. Errors in the virtual machine occur due to improper implementation of the virtual machine itself, such as in the case of access to non-valid memory areas. A redundancy case occurs if the master fails due to an error. Then the slave system takes control of the process to be controlled.

Im Wesentlichen werden zwei Redundanzfälle unterschieden:

  • – Redundanzfall bei nicht detektierbaren Fehlern
  • – Redundanzfall bei detektierbaren Fehlern.
Essentially, two redundancy cases are distinguished:
  • - Redundancy case with undetectable errors
  • - Redundancy case with detectable errors.

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. If a redundancy case occurs due to an undetectable error, then the master system can not make a controlled switchover to the slave system. Since the slave system cyclically monitors the master system via the communication channel and also receives the current image cyclically via input and output signals, the slave automatically takes over control if the communication with the master no longer takes place after the cycle time has expired. The slave uses the last values of the I / O signals received from the master. Since the I / O signals may have changed at the time of taking control of the slave, the slave is not in possession of the last change in the I / O signals. This means that its image of these signals may be inconsistent.

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. If, on the other hand, a redundancy case occurs due to an error detectable by the virtual machine, the master system can carry out a bumpless switchover to the slave system in which no loss of information occurs.

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. This latter case will be described below with reference to 8th Explains which a representation to explain a case of redundancy in the in the 7 shown configuration shows.

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). The 8th shows the state of the master system and the slave system in case of detectable error with subsequent redundancy case. The interpreter of the master system executes the specified command sequence. The slave system is in standby mode, with the same application program being loaded in the slave system as in the master system. However, the interpreter does not run this application in standby mode. The code segment PC of the application program is already available in the interpreter of the slave system. The data segment PD was also generated. However, since the application program has not yet been started, corresponding application variables have not yet been initialized (NI). The register contents of the interpreter of the slave are also invalid (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. The interpreter of the master system executes the command IOSYS $ R1 and calls the write function of the I / O system to set a corresponding output signal. Hardware access of the I / O system causes an error F, so that the signal can not be written. The I / O system reports to the error handling of the virtual machine an error in the I / O hardware. The virtual machine stops program execution by the interpreter, so the register's instruction pointer points to the IOSYS $ R1 command and stops.

Durch den Kommunikationskanal informiert der Master den Slave, dass ein Redundanzfall eingetreten ist. Through the communication channel, the master informs the slave that a redundancy case has occurred.

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. The master transmits the values of all I / O signals as well as the runtime information of the interpreter consisting of the working registers and the data segment of the application program to the slave.

Dies ist in der 9 veranschaulicht, welche eine Darstellung zur Erläuterung dieses in einem Fehlerfall erfolgenden Datentransfers zeigt. This is in the 9 Fig. 11 is an illustration for explaining this data transfer in an error case.

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. The slave accepts the current values of all I / O signals that correspond to the exact image of the process to be controlled at the time of the error. Furthermore, the virtual machine of the slave system initializes the interpreter with the runtime information of the master system. All variable values of the application from the data segment of the master are written to the data segment of the slave. Also the contents of all registers of the interpreter of the master are transferred to registers of the interpreter of the slave. The instruction pointer register is initialized to refer to the same machine instruction that caused an error in the master. In this case, the instruction pointer points to the machine command IOSYS $ R1 at the same position in the code segment. Then the interpreter of the slave is started, which now executes exactly this machine command, because this command could not be executed due to an error in the I / O system in the master. The interpreter of the slave executes this I / O command in the manner already described by setting the corresponding signal in its own redundant I / O hardware.

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. In this procedure, the program execution can be switched from the master to the slave with the correct command, without loss of runtime information of the application as well as current values of I / O signals. Conventional systems require a cyclic synchronization between master and slave during normal operation for as exact a changeover as possible and must sometimes carry a history of application-specific status data.

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. In the method described here, neither a cyclic synchronization in normal operation nor the carrying of a history of application-specific status data is necessary. By transferring the runtime information of the interpreter from the master to the slave, the application application in the slave system can be continued with command accuracy.

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. The 10 shows a block diagram of the structure of a computer system in which in a single control system, a virtual machine for controlling two provided for executing the same application application, different application programs A and B is provided. The 11 shows a representation for explaining the various application programs A and B of 10 associated runtime environment.

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. In this embodiment, when an error occurs in the input / output system 6 . 7 the master a bumpless switchover from the faulty to the still functioning application, so that the application application (process to be controlled) can continue bumplessly.

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. The use of different, d. H. For example, a different programming and thus different program code having application programs A and B, which are provided for execution of the same application application, has the advantage that so-called common mode errors can be avoided. Common mode errors would occur if, in the event of a fault in the application program of the master, there is a switchover from the master to the slave and an identical application program in the slave, i. H. an application program of the same implementation would be loaded.

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.
Basically, the following two configurations are possible when using two different application programs, which are intended to execute the same application application:
  • - the two different application programs are - as it is in the 10 illustrated - implemented in a single control system;
  • The two different application programs are implemented in two different control systems, one of the application programs being implemented in each of these control systems.

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. That in the 10 The control system shown has a virtual machine that is a command processing unit 1 , a compiler 2 , a first interpreter 3a , a first Application program A, a second interpreter 3b , a second application program B, a runtime system 5 , an input / output unit 6 , an input / output hardware 7 , a network system 8th a service unit 9 , an agent 10 and a synchronization 11 contains. The first application program A is by means of the compiler 2 translated into the machine language of the virtual machine and from the first interpreter 3a executed. The second application program B is using the compiler 2 translated into the machine language of the virtual machine and the second interpreter 3b executed.

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. In normal operation of the in the 10 shown control system lead the interpreter 3a and 3b their respective associated application program, so that with respect to each of these application programs runtime data independently determined and stored. In each case there is no access to the runtime data of the other application program.

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. So that a bumpless changeover from application A to application B can take place when an error occurs in application A, one of the two application programs is transferred to the input / output system each time it is accessed 6 . 7 a synchronization of the two application programs performed. For example, if after the simultaneous start of the two application programs, a certain signal is to be written and the application program A reaches the corresponding location in the program code first, the signal is written and blocked the interpreter of the user program A until the application program B write the same signal want. The interpreter of application program B calls the input / output system 6 . 7 to write the said signal, then the blocking of the interpreter of the user program A is canceled, so that both interpreters can continue the execution of their respective application program, this continuation is done simultaneously or synchronized.

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. In this way, a synchronization of the two application programs is ensured, due to which the two application programs that perform different code due to their different implementation, always have the same image of the I / O signals. As a result, the internal state data and variables of the respective application program with respect to the current values of the I / O signals are always consistent, so that in the case of the occurrence of an error in application A bumpless, loss of data loss application A to application B can be done.

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. The 12 shows a block diagram for explaining a master / slave configuration in which two different application programs A and B are implemented in the master and in the slave. All of these application programs are intended for execution of the same application application. The 13 shows a representation to explain the runtime environment of the virtual machine of the master system of 12 associated non-identical application programs in normal operation. The 14 shows a representation for explaining the runtime environment of the virtual machine of the master system of 12 associated non-identical application programs when an error occurs in the master system.

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. When in the 12 shown master / slave configuration are the application programs A and B in the master system and the application programs A and B loaded in the slave system.

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. The master system has two interpreters 3a and 3b one of which executes the application program A and the other the application program B. The slave system also has two interpreters 3a and 3b one of which executes the application program A and the other the application program B. All application programs are designed to run the same application.

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. In normal operation, the two different application programs A and B implemented there are executed at the same time in the master system. The application programs A and B implemented in the slave system are in standby mode during normal operation.

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. The application programs A and B execute different code. The two interpreters execute the respective application program assigned to them and thereby have no access to the runtime data area of the respective other application program. In order to be able to perform a command-precise changeover from the master to the slave in the event of a fault, both application programs A and B (within a virtual machine) are synchronized when accessing the I / O system. For example, if after the start of the two application programs a particular signal is to be written and the application program A reaches the corresponding location in the code first, then the signal is written and the I / O system blocks the interpreter of the application program A until the application program B want to write the same signal. As soon as the interpreter of the application program B then also calls the I / O system to write the signal, the waiting interpreter of the application program A is continued again, wherein the Interpreter of application program B also continues to run.

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. In this way, a synchronization of the two application programs on I / O signal level is performed. This ensures that both application programs that execute different code always have the same image of the I / O signals. As a result, the internal state data and variables of the respective application program are always consistent with regard to the current values of the I / O signals.

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. From the 14 the runtime information of both application programs is shown at the time of an error within the virtual machine of the master. The interpreter of the application program B is currently executing the machine command LADDR $ R1, Value at this time. Since the virtual machine can not continue the application program A due to the mentioned error, the associated interpreter terminates the application program A and informs the interpreter of the application program B that the program execution of the application program B is stopped after execution of the current machine command. After the interpreter of the application program B has executed the current machine instruction LADDR $ R1, Value, the interpreter increases the instruction pointer 1 so that the instruction pointer register references the machine instruction LOAD $ R2, $ R1 and stops program execution. The runtime information of the application program B is frozen.

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. The virtual machine now transmits the image of all I / O signals as well as the runtime information of application program B to the slave system. The slave system initializes the runtime data area of its application program B, which is in standby mode, with the runtime information received from the master. The interpreter of application program B in the slave system executes the next machine command, in this case the command 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. In this way, a bumpless, command-accurate switching from master to slave without runtime data loss is possible. It is irrelevant which application program fails because the system can always transmit the runtime information of the respective functional application program to the slave. In this application, there must be no cyclic synchronization in normal operation between master and slave, nor is it necessary to carry a history of application-specific status data. In the embodiment described here, the user implements two different application programs for the same application application. The method described here is scalable with regard to the redundant application programs, so that the user can theoretically implement any number of application programs for the same application application. In this case, only the time required for the synchronization of the application programs for I / O access increases.

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.
The above-described synchronization of the application programs when accessing I / O signals is performed in order to keep two application programs running independently of each other consistent with respect to the processing of the I / O signals and to allow a redundant behavior. The two application programs call functions of the I / O system to write or read I / O signals. If one of the application programs calls the I / O system to write a certain signal with a certain value, this application program is blocked until the other application program also calls the I / O system. The I / O system checks whether both application programs want to read the same signal or write with the same value. This means that consistent synchronization is only possible if the following criteria are met:
  • - both application programs access the same signal,
  • - both application programs want to perform the same operation on the signal, ie both application programs want to either read or write the signal, and
  • - if the signal is to be written by both application programs, it is checked whether the same value should be written.

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. If not all of the above criteria are met, then both application programs are out of sync and redundancy is no longer given. Since the I / O system detects such a synchronization error, the system can respond accordingly. After accessing a particular I / O signal under successful verification of the above criteria, the I / O system keeps both application programs running independently until the next access to an I / O signal occurs. In this way, both application programs always have the current image of the I / O signals. If an application program now fails due to an error, the further, redundant application program can continue to run through the consistent image of the I / O signals alone, which enables bumpless switching from the faulty to the redundant application program. If both application programs are executed in the same control system, synchronization takes place within the I / O system via operating system mechanisms. Be both Application programs executed in different control systems, then the synchronization is carried out via the exchange of data via a communication link between the control systems of the master and the slave.

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. The virtual machines are already started at startup on all computers and run, depending on the application, in parallel time, not synchronous, with. All operating system technical requirements such as a reservation of storage requirements, etc., are already carried out at startup. The virtual machines each process one or more application programs at the same time.

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. The invention, after all, relates to a method of operating a high availability computer system using one or more virtual machines having been provided for executing an application application of multiple application programs. These can not be identical or identical to each other. If a single control system is used which is equipped with two non-identical application programs, then software uptime is achieved. When two or more control systems equipped with identical or non-identical application programs are used, software and hardware uptime is achieved. Non-identical application programs are operated by the virtual machines at the same time, whereby accesses from the input / output system are synchronized.

ZITATE ENTHALTEN IN DER BESCHREIBUNG QUOTES INCLUDE IN THE DESCRIPTION

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.This list of the documents listed by the applicant has been generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.

Zitierte PatentliteraturCited patent literature

  • DE 102005053275 A1 [0003, 0004] DE 102005053275 A1 [0003, 0004]

Claims (8)

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.  A method of operating a high availability computer system using one or more virtual machines, wherein A first application program provided for executing an application application is provided, A second application program provided for executing the same application application is provided, - The application programs are each translated by means of a compiler in the machine language of the virtual machine and - The machine language is executed by an interpreter of the virtual machine, where The first application program is used to control the application application, The second application program is operated in standby mode or is being processed in parallel at the same time, - When a fault occurs bumpless switching from the first to the second application program and - After switching the second application program is used to control the application application. 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. Method according to Claim 1, characterized in that two non-identical application programs are provided for executing the same application application, both application programs are processed simultaneously, and synchronization of the two application programs is performed each time one of the application programs is accessed by an input / output system. 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. A method according to claim 2, characterized in that the application programs are provided to a single common control system comprising a virtual machine, and in the event of a detected fault the virtual machine controls the switching from the first to the second application program. 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. A method according to claim 2, characterized in that - the first application program is provided to a first control system comprising a first virtual machine, - the second application program is provided to a second control system comprising a second virtual machine and to the first control system via a communication link is connected, - in the case of a detectable error in the first control system, the first application program is stopped and - the second application program in the second control system takes over the further execution of the application application. 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. Method according to Claim 2, characterized in that the two non-identical application programs are each provided to a first control system and a second control system, the first control system having a first virtual machine and the second control system having a second virtual machine, the two application programs in the first control system of the first virtual machine are controlled, the two application programs in the second control system are controlled by the second virtual machine and in the event of an error in the first control system to the non-identical application program of the first control system or after transmission of runtime data to the identical application program of the second Control system is switched. 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. Method according to Claim 1, characterized in that - the first application program provided for executing the application application is provided to a first control system, - a second application program, identical to the first application program, for executing the same application application, is connected to the first control system via a communication connection second control system is provided, and - are transferred to a bumpless transfer runtime and peripheral data from the first control system via the communication link to the second control system. 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.  A high availability computer system for performing a method according to claim 1, comprising a single control system having a virtual machine and equipped with two non-identical application programs for executing the same application application. 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.  A high availability computer system for performing a method according to claim 1, comprising two control systems interconnected via a communication link, each comprising a virtual machine and each equipped with an application program for executing the same application application, the application programs being identical or not identical.
DE102013106923.1A 2013-07-02 2013-07-02 A method of operating a high availability computer system using one or more virtual machines Withdrawn DE102013106923A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102013106923.1A DE102013106923A1 (en) 2013-07-02 2013-07-02 A method of operating a high availability computer system using one or more virtual machines

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102013106923.1A DE102013106923A1 (en) 2013-07-02 2013-07-02 A method of operating a high availability computer system using one or more virtual machines

Publications (1)

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

Family

ID=52106028

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013106923.1A Withdrawn DE102013106923A1 (en) 2013-07-02 2013-07-02 A method of operating a high availability computer system using one or more virtual machines

Country Status (1)

Country Link
DE (1) DE102013106923A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3968152A1 (en) * 2020-09-15 2022-03-16 Siemens Aktiengesellschaft Method for transmitting a software application from a first to a second data processing device

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102005053275A1 (en) 2004-11-25 2006-06-08 Fujitsu Siemens Computers Gmbh Highly available interconnected computer system for operating a virtual back-up computer unit within itself has a virtual computer unit and a control device

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102005053275A1 (en) 2004-11-25 2006-06-08 Fujitsu Siemens Computers Gmbh Highly available interconnected computer system for operating a virtual back-up computer unit within itself has a virtual computer unit and a control device

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3968152A1 (en) * 2020-09-15 2022-03-16 Siemens Aktiengesellschaft Method for transmitting a software application from a first to a second data processing device
WO2022058153A1 (en) * 2020-09-15 2022-03-24 Siemens Aktiengesellschaft Method for transferring a software application from a first to a second data processing device

Similar Documents

Publication Publication Date Title
DE602005003490T2 (en) Distributed system with quorum redundancy and method for it
DE19810814B4 (en) Computer system and status copying process for scalable software updates
DE2908316C2 (en) Modular multi-processor data processing system
DE3127349C2 (en)
DE102007025397B4 (en) Multi-processor system and method of operation
EP0057756B1 (en) Data exchange unit in multi-microcomputer systems operating in parallel
EP2466466B1 (en) Method for detecting errors when executing a real-time operating system
EP2817682B1 (en) Method for the failsafe operation of a process control system with redundant control devices
EP2513796B1 (en) Method for operating a processor
EP1952239A1 (en) Apparatus and method for eliminating errors in a system having at least two execution units with registers
DE112013007469B4 (en) Communication system, standby device, communication method, and standby program
DE602004003327T2 (en) Computer system and method of restarting by means of remote copying
DE60303468T2 (en) Fault tolerant information processing device
DE19780639C2 (en) Work-over system
EP1358554A1 (en) Automatic startup of a cluster system after occurrence of a recoverable error
EP2732347A1 (en) Method and system for the dynamic distribution of program functions in distributed control systems
DE4010109C2 (en) Duplex computer system
DE10014390C2 (en) Fault-tolerant computer system and method for switching over machining programs of a fault-tolerant computer system
WO2014161986A1 (en) Control and data transfer system for redundant process control and method for firmware updating
DE102013106923A1 (en) A method of operating a high availability computer system using one or more virtual machines
DE102015218898A1 (en) Method for the redundant processing of data
EP3654121B1 (en) Redundant automation system with a plurality of processing units for each hardware unit
DE1966991A1 (en) FAIL-SAFE DATA PROCESSING SYSTEM
DE102005053275B4 (en) Highly available computer network system
DE19983595B3 (en) CPU unit and run alternative control method of a programmable controller

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