Die Erfindung betrifft eine Ausfallmeldung in einem Computernetzwerk, wobei mehrere zusammenwirkende Abschnitte bzw. Teile eines Anwenderprogrammes jeweils auf unterschiedlichen Knoten des Computernetzwerkes laufen.The invention relates to a failure message in a computer network,with several interacting sections orParts of a user program each on differentComputer network nodes are running.
Bei einer modernen Computerdatenverarbeitung wird eine verbesserte Effizienz bei der Durchführung eines Anwenderprogrammes oft durch Aufteilen des Programmes in mehrere zusammenwirkende Teile und durch Laufenlassen jedes der Teile auf einer anderen CPU innerhalb eines Computernetzwerkes erreicht. Jeder Teil des Anwenderprogrammes läuft jeweils als ein abgetrennter Prozeß bzw. Vorgang auf einer bestimmten CPU. Von den Teilen kann z. B. zu einem Zeitpunkt einer aktiv sein, wohingegen die anderen Teile bzw. Anteile inaktiv in einem "standby"-Modus sind, oder sie können alle zum gleichen Zeitpunkt als zusammenwirkende Teile des Gesamtdatenverarbeitungsbetriebes aktiv sein.In modern computer data processing, an improvedEfficiency in the execution of a user programoften by dividing the program into several interacting onesParts and by running each of the partson another CPU within a computer networkreached. Every part of the user program runsas a separate process on a particular oneCPU. From the parts z. B. one at a timebe active, whereas the other parts or parts are inactiveare in a "standby" mode, or they can all go tosame time as interacting parts of the overall data processing companybe active.
Für eine zuverlässige Ausführung des gesamten Anwenderprogrammes bzw. Applikationsprogrammes muß jede CPU, die einen Teil des Anwenderprogrammes fährt, während der gesamten Verarbeitung des Teiles richtig funktionieren. Wenn ein Teil des Anwenderprogrammes wegen eines CPU-Ausfalls ausfällt, ist es unbedingt notwendig, daß eine Meldung des Fehlers bzw. des Ausfalls bzw. der Störung gemacht wird, um einem Netzwerkmanager zu ermöglichen, geeignete Korrekturvorgänge zu implementieren. Z. B. kann der Netzwerkmanager den ausgefallenen Teil des Anwenderprogrammes einer anderen CPU des Netzwerkes zur Durchführung zuführen.For a reliable execution of the entire user programor application program each CPU, the onePart of the user program runs during the entireProcessing of the part work properly. When aPart of the user program fails due to a CPU failure,it is imperative that a report from theError or failure or malfunction is made toenable a network manager to take appropriate corrective actions to implement. For example, the network managerthe failed part of the user program of anotherFeed the CPU of the network to the implementation.
Das Überwachen eines richtigen Netzwerkbetriebes ist eine wichtige, noch zeitverbrauchende Funktion, die typischerweise von Netzwerkmanagern oder Operatoren ausgeführt wird. Bei einem CPU-Ausfall muß der Netzwerkmanager ermitteln, ob die CPU einen zusammenwirkenden Teil des Applikationsprogrammes ausgeführt hat, das Applikationsprogramm und den Teil, der auf der ausgefallenen CPU läuft, identifizieren und dann geeignete Schritte unternehmen, um das Applikationsprogramm wieder zu starten.Monitoring proper network operations is oneimportant, still time-consuming function that typicallyis performed by network managers or operators.In the event of a CPU failure, the network manager must determine whetherthe CPU is a interacting part of the application programhas executed the application program and theIdentify the part that is running on the failed CPUand then take appropriate steps to complete the application programto start again.
Dementsprechend besteht die Aufgabe der vorliegenden Erfindung darin, einen automatischen, zuverlässigen Mechanismus anzugeben, um einen Fehler unter den Netzwerkkomponenten, die zusammenwirkende Teile eines Applikationsprogrammes abarbeiten, zu detektieren und um eine wirksame, informative Meldung des Ausfalls zu liefern.The object of the present invention is accordinglyan automatic, reliable mechanismto indicate an error among the network components,work through the interacting parts of an application program,to detect and to be effective, informativeDeliver the failure report.
Diese Aufgabe wird durch das Verfahren nach Anspruch 1 gelöst.This object is achieved by the method according to claim 1.
Die vorliegende Erfindung liefert einen automatischen Ausfallmeldungsmechanismus, der sehr durchsichtig für Anwenderprogrammentwickler ist und leicht implementiert werden kann, indem ein Unterprogrammaufrufbefehl (call subroutine instruction) in jedem Teil eines Applikationsprogrammes eingefügt wird. Der Mechanismus umfaßt einen Satz von verbundenen Unterprogrammen, die von jedem Teil des Applikationsprogrammes aufgerufen werden und durch den Gebrauch eines verteilten Sperrmanagers (lock manager) arbeiten, um die verschiedenen Teile des verteilten Applikationsprogrammes zu verbinden und umgekehrt zu verbinden. Der Ausfallmeldungsmechanismus verwendet die Verbindungen und Umkehrverbindungen, um eine Ausfallkommunikation beim Zusammenbruch bzw. Ausfall bzw. Crash einer CPU auszulösen, die einen Teil des Applikationsprogrammes ausführt. Die Ausfallkommunikation bzw. Fehlerkommunikation umfaßt Informationen, die ausreichen, um eine automatische Rückkehr nach dem Ausfall ohne der Notwendigkeit eines manuellen Einschreitens durch einen Netzwerkoperator oder Manager auszulösen.The present invention provides an automatic failure reporting mechanismthe very transparent for user program developersis and can be easily implementedcan by using a subroutine call instruction (call subroutineinstruction) in every part of an application programis inserted. The mechanism includes a set of linkedSubroutines by every part of the application programbe called and by using adistributed lock managers work tothe different parts of the distributed application programto connect and vice versa. The failure reporting mechanismuses the connections and reverse connections, failure communication in the event of a breakdownor to cause failure or crash of a CPU thatexecutes part of the application program. The failure communicationor error communication includes informationwhich are sufficient to automatically return tofailure without the need for manual interventiontriggered by a network operator or manager.
Ein verteilter Sperrmanager, wie z. B. der VMS-verteilte- Sperrmanager (vertrieben von der Firma DIGITAL EQUIPMENT CORPORATION), ist ein Mechanismus zum Koordinieren eines netzwerkweiten Zugriffs auf Dateien und ihre einzelnen Datensätze und zum Synchronisieren von Zwischenverarbeitungsereignissen bzw. -vorgängen innerhalb des gesamten Netzwerkes. Im allgemeinen erlaubt der Sperrmechanismus einem Programmentwickler, jede Quelle im Netzwerk zu benennen, ganz gleich ob physikalisch oder logisch, und von einem Applikationsprogramm zu verlangen, das auf einer CPU (d. h. einem Prozeß) läuft, eine Sperre für diese Quelle vor dem Zugriff auf die benannte Quelle nachzufragen. Z. B. kann eine Datenbank oder ein Untersatz dergleichen solch eine Quelle sein und eine Sperre kann in einem von mehreren Sperrmodi vorliegen, die von dem Sperrmanager erkannt werden. Sperrmodi können verschiedene exklusive oder geteilte Schreib- und Lesezugriffsprivilegien für die Quelle enthalten, um einen Zugriff mit anderen Prozessen zu teilen oder einen Zugriff durch andere Prozesse zu verhindern.A distributed lock manager, such as B. the VMS-distributed-Lock manager (distributed by DIGITAL EQUIPMENTCORPORATION), is a mechanism for coordinating anetwork-wide access to files and their individual data recordsand to synchronize intermediate processing eventsor processes within the entire network.Generally the locking mechanism allows oneProgram developers to name each source in the network,no matter whether physical or logical, and from an application programto require that a CPU (i.e.a process) is running, a lock on this source before theRequest access to the named source. For example, cana database or a subset of the like suchSource and lock can be in one of severalLock modes exist that are recognized by the lock manager.Lock modes can be different exclusive or sharedInclude write and read access privileges for the source,to share access with other processes orprevent access by other processes.
Der Sperrmanager behält auch gewährte und wartende Schlangen bzw. Reihen für Sperrnachfragen für jede benannte Quelle bei und bedient wartende Nachfragen in der Art und Weise, daß diejenige Nachfrage, die zuerst kommt, auch zuerst bedient wird. Eine Sperrnachfrage (lock request) wird in einer gewährten Schlange bzw. Warteschlange plaziert, wenn die Nachfrage gewährt wird, und wird in einer Warteschlange plaziert, wenn die Sperrnachfrage unverträglich mit einer bereits gewährten Sperrnachfrage ist. Jeder Prozeß, der auf einem Netzwerk läuft, kann Sperrnachfragen einer Sperrnachfrageschlange in eine Warteschlange einreihen oder aus dieser entnehmen (freigeben) und desweiteren eine asynchrone Systemfalle in der Sperrnachfrage spezifizieren.The lock manager also keeps granted and waiting queuesor rows for blocking requests for each namedSource at and serving waiting inquiries in kind andWay that the demand that comes first also comes firstis operated. A lock request is madeplaced in a granted queue or queue,when the demand is granted and is queued placed when the blocking demand is incompatiblewith a blocked demand already granted. Every processwho runs on a network can ask for lock requestsPut the blocked demand queue in a queueor remove from it (release) and furthermore oneSpecify asynchronous system trap in the blocking request.
Eine asynchrone Systemfalle ist ein Programm, das einen laufenden Prozeß bei dem Auftreten eines Ereignisses unterbricht und mit der Ausführung beginnt. Beim Sperrmechanismus können die Ereignisse bzw. Vorgänge das Gewähren einer Sperrnachfrage oder das Machen einer Sperrnachfrage enthalten, die unverträglich bzw. inkompatibel mit einer bereits gewährten Sperrnachfrage ist. Wenn eine asynchrone Systemfalle durch die Gewährtung einer Sperrnachfrage aufgerufen wird, wird sie als Abschluß-AST bezeichnet. Wenn eine asynchrone Systemfalle durch das Durchführen einer Sperrnachfrage aufgerufen wird, die inkompatibel mit einer bereits gewährten Sperrnachfrage ist, wird sie als Sperr-AST bezeichnet. Ein Prozeß bzw. ein Vorgang, der eine AST (asynchronous system trap = asynchrone Systemfalle) mit seiner Sperrnachfrage spezifiziert, wird durch das Programm, das der spezifizierten AST zugeordnet ist, unterbrochen werden, wenn die Sperrnachfrage gewährt wird, und zwar in dem Fall einer Abschluß-AST, oder wenn ein anderer Prozeß eine Nachfrage für einen Sperrmodus macht, der inkompatibel mit dem Sperrmodus bzw. Verriegelungsmodus ist, der dem Prozeß gewährt worden ist, und zwar im Fall einer Sperr-AST.An asynchronous system trap is a program that oneinterrupts the current process when an event occursand starts executing. With the locking mechanismcan the events or procedures grant aBlocked demand or making a blocked demand,the incompatible or incompatible with one alreadyblocking demand granted. If an asynchronous system trapcalled by granting a blocking requestit is referred to as the final AST. If an asynchronousSystem trap by performing a blocking requestis called, which is incompatible with an alreadyblocking demand is granted, it is referred to as blocking AST.A process or an operation that an AST (asynchronoussystem trap = asynchronous system trap) with itsBlocking demand is specified by the program thatis assigned to the specified AST, be interrupted,if the blocking demand is granted, in that casea graduation AST, or if another process is a demandfor a lock mode that is incompatible with theLock mode is that the process grantsin the case of a blocking AST.
Zusätzlich kann ein Sperrmanager eine Kommunikationseigenschaft haben, die einen Sperrwertblock, der mit den Sperrschlangen für den Quellennamen verbunden ist, aufweisen kann. Ein Sperrwertblock kann z. B. 16 Bytes an Informationen enthalten, die von einem Prozeß über das Einreihen in eine Warteschlange und über das Entnehmen aus einer Warteschlange von Sperrnachfragen eingegeben und/oder gelesen werden können. Die Informationen können Zwischen-Prozeßnachrichten bzw. Nachrichten, die zwischen Prozessen ausgetauscht werden, aufweisen.In addition, a lock manager can have a communication propertythat have a lock block that matches the lock queuesconnected for the source namecan. A blocking value block can e.g. B. 16 bytes of informationincluded by a process of enqueuinga queue and about taking out of a queueentered and / or read by blocking requestscan be. The information can be inter-process messages or messages between processesbe exchanged.
Die vorliegende Erfindung liefert einen Ausfallmeldungsmechanismus durch Benennen gewisser logischer Quellen, die Prozessen zugeordnet sind, die die Teile eines verteilten Applikationsprogrammes bilden, und durch den Einsatz eines gewissen Satzes von geordneten kompatiblen und inkompatiblen Sperrnachfragen für diese Quellen, um die Prozesse über die Sperrnachfragewarteschlangen zu verbinden und umgekehrt zu verbinden bzw. in beiden Richtungen zu verbinden. Die vorliegende Erfindung spezifiziert abschließende und blockierende, asynchrone Systemfallen in den Sperrnachfragen, um die Ausgabe von umgekehrt verbindenden Sperrnachfragen zu verursachen und eine Ausfallmeldung beim Ausfall einer CPU zu erzeugen, die einen der Teile des Applikationsprogrammes abarbeitet bzw. ausführt.The present invention provides a failure reporting mechanismby naming certain logical sources thatProcesses are assigned that are the parts of a distributedForm application program, and by using acertain set of ordered compatible and incompatibleLock requests for these sources to the processesconnect via the blocking demand queues and vice versato connect or to connect in both directions.The present invention specifies final onesand blocking, asynchronous system traps in the blocking requests,the issue of reverse blocking requestscause and a failure message in the event of failureto generate a CPU that is one of the parts of the application programprocesses or executes.
Die logischen Quellen bzw. Systemelemente umfassen eine "SPECIAL" Quelle, eine "BROADCAST" Quelle, eine "PERMISSION TOTALK Quelle, und eine Quelle, die individuell für jeden der Teile des Applikationsprogrammes bezeichnet bzw. benannt ist. Die SPECIAL-Quelle ist der Prozeß, der ausgewählt ist, um eine Ausfallmeldung zu empfangen, wann immer einer der anderen Teile des Applikationsprogrammes ausfällt, und um eine Korrekturhandlung vorzunehmen. Die BRODCAST-Quelle benützt die Kommunikationseigenschaft des Sperrmanagers, um die SPEZIAL-Quelle zu unterrichten, wenn ein Teil des Applikationsprogrammes in das Netzwerk eingetreten ist oder das Netzwerk verläßt. Die PERMIS-SIONTOTALK-Quelle arbeitet in Verbindung mit der BROADCAST-Quelle, um eine Übertragung von Nachrichten zwischen den Prozessen sicherzustellen. Schließlich benennt jeder Prozeß, der einen Teil des Applikationsprogrammes ausführt, eine Quelle, die individuell den Teil identifiziert, z. B. kann der Quellenname auf dem Knotennamen basieren, wo der Prozeß innerhalb des Netzwerkes lokalisiert ist.The logical sources or system elements include one"SPECIAL" source, a "BROADCAST" source, a "PERMISSIONTOTALK source, and a source individually fordesignates each of the parts of the application program oris named. The SPECIAL source is the process that is selectedis to receive a failure message wheneverone of the other parts of the application program fails,and to take corrective action. TheBRODCAST source uses the communication feature of theBlock managers to teach the SPECIAL source ifpart of the application program entered the networkis or leaves the network. The PERMISSIONTOTALK source works in conjunction with the BROADCASTSource to transfer messages betweenthe processes. After all, everyone namesProcess that executes part of the application program,a source that individually identifies the part, e.g. B. the source name can be based on the node name where theProcess is localized within the network.
Der Ausfallmechanismus wird durch einen einzigen Unterprogrammaufrufbefehl aktiviert, der in jedem Teil eines Anwenderprogrammes von einem Programmentwickler eingefügt wird. Der Unterprogrammaufrufbefehl ruft ein SETUP-Programm auf. Das SETUP-Programm erzeugt alle Sperrnachfragen und verbundenen, asynchronen Systemfallenaufrufe, die notwendig sind, um den Ausfallmechanismus vorzubereiten bzw. zu rüsten. Der Einsatz des SETUP-Programmes, das resident im Netzwerk vorhanden ist und für alle Applikationsprogramme erhältlich ist, macht den Ausfallmechanismus für den Applikationsentwickler transparent bzw. durchschaubar. Das SETUP-Programm macht drei Sperraufrufe im Namen des Prozesses, der sie aufrief, und zwar wie folgend:The failure mechanism is triggered by a single subroutine call instructionactivated in every part of a user programinserted by a program developer.The subroutine call instruction calls a SETUP program.The SETUP program generates all blocking requests and associated,asynchronous system trap calls that are necessaryto prepare or equip the failure mechanism. TheUse of the SETUP program, which is resident in the networkis available for all application programsmakes the failure mechanism for the application developertransparent or transparent. The SETUP programmakes three lock calls on behalf of the process of themcalled, as follows:
Die Sperrnachfrage nach der SPECIAL-Quelle in EXCLUSIVE spezifiziert eine Abschluß-AST, die SPEZIALAST genannt wird. Da die Nachfrage nach einem EXCLUSIVE-Sperrmodus ist, wird nur einem der Prozesse des Applikationsprogrammes, der im allgemeinen der Erste ist, der die Nachfrage gemacht hat, die Sperrnachfrage gewährt werden. Die anderen Prozesse des Applikationsprogrammes haben ihre jeweiligen Sperrnachfragen in einer LOCK-REQUEST-FOR-SPECIAL-IN-EXCLUSIVE-MODE-WAITING-Schlange zu plazieren. Der Prozeß, dem die EXCLUSIVE-Modus-Nachfrage gewährt worden ist, wird dann von dem SPECIALAST-Abschlußprogramm unterbrochen, die diesen Prozeß dazu veranlaßt, die Verantwortung zum Empfangen und zum Handeln auf eine Ausfallmeldung hin (Prozeß, dem der EXCLUSIVE-Sperre gewährt wird, wird als Spezial-Bedieneinheit (special server) bezeichnet) anzunehmen.The blocking request for the SPECIAL source in EXCLUSIVEspecifies a final AST called SPECIALASTbecomes. Since the demand for an EXCLUSIVE lock mode isis only one of the processes of the application program, the is generally the first to make the demandthe blocking demand is granted. The other processesof the application program have their respectiveLock requests in a LOCK-REQUEST-FOR-SPECIAL-IN-EXCLUSIVE-To place MODE WAITING queue. The process thatEXCLUSIVE mode demand has then been grantedinterrupted by the SPECIALAST final program that thisProcess causes responsibility to receiveand to act on a failure report (process, theThe EXCLUSIVE lock is granted as a special control unit(special server)).
Genauer gesehen benützt das SPECIALAST den Sperrmanager, um eine Liste von allen Prozessen in der LOCK-REQUEST-FOR-SPECIAL-IN-EXCLUSIVE-WAITING-Schlange zu erhalten. Die Liste, die von der LOCK-REQUEST-FOR-SPECIAL-IN-EXCLUSIVE-WAITING-Schlange abgeleitet wird, entspricht allen anderen Prozessen des Applikationsprogrammes. Somit liefert die Liste eine Vorwärtsverbindung (forward link) zwischen Prozessen, denen eine Verantwortlichkeit für das Empfangen einer Ausfallmeldung zugeordnet worden ist, und den anderen Prozessen des Applikationsprogrammes, und zwar über die LOCK-REQUEST-FOR-SPECIAL-IN-EXCLUSIVE-WAITING-Schlange.Specifically, the SPECIALAST uses the lock manager,for a list of all processes in the LOCK-REQUEST-FOR-SPECIAL-IN-EXCLUSIVE-WAITING line. The list,by the LOCK-REQUEST-FOR-SPECIAL-IN-EXCLUSIVE-WAITING-Snake derived corresponds to everyone elseProcesses of the application program. So the list deliversa forward link between processes,which have a responsibility for receiving oneFailure notification has been assigned and the other processesof the application program, namely via the LOCK-REQUESTFOR-SPECIAL-IN-EXCLUSIVE-WAITING queue.
Das SPECIALAST wird dann eine Sperrnachfrage in EXCLUSIVE für jede der SERVERxxx-Quellen ausgeben, entsprechend den Prozessen in der Warteschlangenliste. Da die Sperrnachfrage in EXCLUSIVE inkompatibel mit den PROTECTED-WRITE-Sperren, die den aufgelisteten Prozessen entsprechend den SERVERxxx-Quellen gewährt worden sind, wird jede der Sperrnachfragen, die von dem SPECIALAST im Namen der Spezial-Bedieneinheiten erzeugt worden sind, in jeweiligen LOCK-REQUEST-FOR-SERVERxxx-IN-EXCLUSIVE-WAITING-Schlangen plaziert, und zwar jeweils in einer für jeden Prozeß in der Liste. Die Sperrnachfrage in EXCLUSIVE für jeden SERVERxxx spezifiziert auch ein Abschluß-AST, das FAILAST genannt wird.The SPECIALAST then becomes a blocking request in EXCLUSIVEoutput for each of the SERVERxxx sources, according to theProcesses in the queue list. Because the blocking demandin EXCLUSIVE incompatible with the PROTECTED-WRITE locks,the processes listed according to the SERVERxxxSources have been granted, each of the blocking requests,by the SPECIALAST on behalf of the specialControl units have been generated in the respective LOCKREQUEST-FOR-SERVERxxx-IN-EXCLUSIVE-WAITING queues placed,namely in one for each process in theList. The blocking request in EXCLUSIVE for each SERVERxxx also specifies a graduation AST called FAILASTbecomes.
Somit erzeugen die exklusiven Sperrnachfragen, die im Namen der Spezial-Bedieneinheit von dem SPECIALAST gemacht worden sind, umgekehrte Verbindungen zwischen der Spezial-Bedieneinheit und allen anderen Teilen des Applikationsprogrammes über die Warteschlangen der SERVERxxx-Quellen.Thus generate the exclusive blocking requests in the namethe special control unit made by the SPECIALASTare reverse connections between the special control unitand all other parts of the application programvia the queues of the SERVERxxx sources.
Immer wenn eine bestimmte CPU ausfällt, wird die gewährte Sperre für den SERVERxxx des Prozesses, der auf dieser CPU läuft, aus der gewährten Schlange durch den Sperrmanager entfernt, und die EXCLUSIVE-Sperrnachfrage, die von der Spezial-Bedieneinheit erzeugt worden ist, wird dann gewährt. Dementsprechend unterbricht das FAILAST-Abschlußprogramm das Laufen bzw. die Ausführung des Prozesses bezüglich der Spezial-Bedieneinheit. Das FAILAST führt ein Programm aus, um festzustellen, welcher Prozeß ausgefallen ist, und zwar über den Einsatz des individuellen Namens der SERVERxxx-Quelle, für die die Spezial-Bedieneinheit die EXCLUSIVE-Sperre gewährt bekommen hat, und kann z. B. entweder eine Nachricht an eine spezifizierte Mailbox abgeben oder ein Programm aufrufen, das von dem Entwickler des Applikationsprogrammes ausgearbeitet worden ist, um automatisch einen Fehler bzw. einen Ausfall eines Teils des Programmes abzuhandeln.Whenever a certain CPU fails, the granted oneLock for the SERVERxxx of the process running on this CPUruns, from the queue granted by the lock managerremoved, and the EXCLUSIVE lock request by theSpecial control unit has been generated is then granted.Accordingly, the FAILAST graduation program pausesrunning or executing the processregarding the special control unit. The FAILAST introducesProgram to determine which process failedis, using the individual name of theSERVERxxx source for which the special control unit uses theEXCLUSIVE lock has been granted, and can e.g. B. eithersend a message to a specified mailboxor call a program developed by the developer of the application programhas been worked out to automaticallyan error or failure of part of the programto deal with.
Der Einsatz von Vorwärtsverbindungen und umgekehrten Verbindungen über die Sperrmanager-Schlangen mit den SPECIALAST und FAILAST-Abschlußprogrammen stellt einen automatischen Ausfallmeldungsmechanismus dar, der bequemerweise durch die Einfügung eines einzigen Unterprogrammaufrufbefehls in jedem der verschiedenen Teile des Applikationsprogrammes implementiert werden kann.The use of forward links and reverse linksabout the lock manager queues with the SPECIALASTand FAILAST completion programs provide an automaticFailure reporting mechanism that is convenientby inserting a single subroutine call instructionin each of the different parts of the application programcan be implemented.
Weitere Vorteile, Anwendungsmöglichkeiten und vorteilhafte Weiterbildungen der vorliegenden Erfindung sind aus der nachfolgenden Beschreibung von Ausführungsformen der vorliegenden Erfindung in Verbindung mit den Zeichnungen und den weiteren Ansprüchen ersichtlich. Es zeigen:Further advantages, possible applications and advantageousFurther developments of the present invention are known from thefollowing description of embodiments of the presentInvention in connection with the drawings andthe other claims. Show it:
Fig. 1 ein Blockdiagramm eines Computernetzwerkes;Fig. 1 is a block diagram of a computer network;
Fig. 2 ein Blockdiagramm des Computernetzwerkes nachFig. 1, das eine Illustration eines Programmes, das auf verschiedenen Komponenten des Computernetzwerkes läuft, umfaßt,FIG. 2 is a block diagram of the computer network ofFIG. 1, which includes an illustration of a program running on various components of the computer network.
Fig. 3 ein Detail eines Auftragsdatensatzes (job record), der in der Datei (auf der Magnetplatte) (disc file) des Computernetzwerkes nachFig. 2 gespeichert ist;Fig. 3 (job record), the (disc file) is stored the computer network ofFigure 2 shows a detail of an application data record in the file (on thedisk).
Fig. 4 ein Flußdiagramm eines SETUP-Programms gemäß der vorliegenden Erfindung;Fig. 4 is a flowchart of a setup program in accordance with the present invention;
Fig. 5 ein Flußdiagramm eines SPECIALAST-Programms gemäß der vorliegenden Erfindung;Fig. 5 is a flowchart of a SPECIALAST program according to the present invention;
Fig. 6 ein logisches Blockdiagramm von mehreren Teilen bzw. Abschnitten eines Applikationsprogrammes, die miteinander über Sperrmanager-Schlangen gemäß der vorliegenden Erfindung verbunden und umgekehrt verbunden sind;Fig. 6 is a logical block diagram of a plurality of parts or portions of an application program, which are interconnected by lock manager queues according to the present invention and connected in reverse;
Fig. 7 ein Flußdiagramm eines FAILAST-Programmes gemäß der vorliegenden Erfindung;Fig. 7 is a flowchart of a FAILAST program according to the present invention;
Fig. 8 Flußdiagramme für die CLUSTERBROADCAST und MSGAST-Programme gemäß der vorliegenden Erfindung, und zwar nebeneinander angeordnet.Fig. 8 flow charts for the CLUSTER BROADCAST MSGAST and programs of the present invention, namely juxtaposed invention.
InFig. 1 ist ein Computernetzwerk dargestellt, das mehrere CPU's10, 11, 12, 13, ein Benutzerinterface bzw. eine Benutzerschnittstelle14 und eine Datenbankdatei (disc file database)15 aufweist. Die CPU's10, 11, 12 und13, das Benutzerinterface14 und die Datenbankdatei15 sind alle zusammen miteinander durch einen gemeinsamen Bus16 verbunden. Jede der CPU's10, 11, 12 und13 weist eine eingebaute Datenverarbeitungseinheit mit eigenem Hauptspeicher auf und kann mit den anderen Komponenten des Netzwerks über den gemeinsamen Bus16 kommunizieren. Die Datenbankdatei15 ist eine geteilte Quelle, die für alle CPU's10, 11, 12, 13 und das Benutzerinterface14 zugreifbar ist.InFig. 1, a computer network is shown comprising a plurality of CPU's10, 11, 12, 13, a user interface or a user interface14 and a database file (disc file database) from15. The CPU's10, 11, 12 and13 , the user interface14 and the database file15 are all connected together by a common bus16 . Each of the CPU's10, 11, 12 and13 has a built-in data processing unit with its own main memory and can communicate with the other components of the network via the common bus16 . The database file15 is a shared source that is accessible to all CPUs10, 11, 12, 13 and the user interface14 .
Nach denFig. 2 und 3 enthält die Datenbankdatei15 einen Auftragsdatensatz16 für jedes Applikationsprogramm des Netzwerks. Wie inFig. 3 angegeben wird, ist der Auftragsdatensatz16 ein Datenfeld, das Informationen enthält, die das Programm identifizieren und die wichtige Attribute bzw. Eigenschaften des Programmes angeben, wie z. B. einen Programmlaufbefehl, eine Nachfrage für einen Programmlauf, ein CPU-Feld, um die CPU's10, 11, 12, 13 zu identifizieren, wo das Programm laufen soll, eine Verteilliste, um festzustellen bzw. zu identifizieren, welche Teile des Programmes in seperaterweise auf den verschiedenen CPU's10,11, 12 und13 laufen sollen, eine Handlung, die bei dem Ausfall irgendeiner der CPU's stattfinden soll, einen Datenausgangsdateiort, einen Mailboxort (soge. Briefkasten), um Nachrichten und irgendwelche anderen Informationen, die erforderlich sind, um das Programm auf dem Netzwerk auszuführen, zu empfangen. Um ein Programm laufen zu lassen, verwendet ein Netzwerkoperator das Benutzerinterface14, um auf den Auftragsdatensatz16 für das Programm in der Datenbankdatei15 zuzugreifen, und fügt eine Nachfrage, um das Programm auszuführen, in das Feld für die Nachfrage für den Programmlauf des Auftragsdatensatzes16 ein. Der Netzwerkoperator befiehlt dann einer Programmausführeinheit17 z. B. der CPU10, sich den Auftragsdatensatz16 des Applikationsprogrammes anzuschauen.According toFIGS. 2 and 3, the database file15 includes a job data set16 for each application program of the network. As indicated inFIG. 3, the order data record16 is a data field which contains information which identify the program and indicate the important attributes or properties of the program, such as e.g. B. a program run command, a request for a program run, a CPU field to identify the CPU's10, 11, 12, 13 where the program should run, a distribution list to determine or identify which parts of the program in to run separately on the various CPUs10 ,11, 12 and13 , an action that is to take place in the event of the failure of any of the CPUs, a data output file location, a mailbox location (so-called mailbox), messages and any other information that is required, to receive the program on the network. To run a program, a network operator uses the user interface14 to access the job record16 for the program in the database file15 and inserts a prompt to run the program into the request field for the program run of the job record16 a. The network operator then commands a programexecution unit 17 e.g. B. the CPU10 to look at the job record16 of the application program.
Die Programmausführeinheit17 liest die Daten in dem Auftragsdatensatz16, der die Nachfrage für die Ausführung des Programmes enthält, welche von dem Netzwerkoperator eingefügt worden ist, und implementiert die Ausführung des Applikationsprogrammes in Übereinstimmung mit den Informationen, die in dem Auftragsdatensatz16 enthalten sind. Z. B. kann das Programm ein Stapeldatenverarbeitungsprogramm aufweisen, das in seinem Verteilungsfeld spezifiziert, daß drei unterschiedliche Teile18, 19, 20 des Applikationsprogramms gleichzeitig laufen sollen, und zwar jeweils ein Teil auf jeweils einer der CPU's11, 12, 13.The program execution unit17 reads the data in the order data record16 , which contains the request for the execution of the program which has been inserted by the network operator, and implements the execution of the application program in accordance with the information contained in the order data record16 . For example, the program can have a batch data processing program which specifies in its distribution field that three different parts18, 19, 20 of the application program are to run simultaneously, one part each on one of the CPUs11, 12, 13 .
Gemäß einem Merkmal der vorliegenden Erfindung ist der verteilte Sperrmanager21 und eine Objektbibliothek22 auf jeder CPU10, 11, 12 und13 lokalisiert. Die Objektbibliothek22 enthält eine Serie von Unterprogrammen, die von jedem Teil18, 19 und20 des Applikationsprogrammes aufgerufen werden können. Die Unterprogramme arbeiten durch den Einsatz des Sperrmanagers21, um eine Meldungsverantwortlichkeit einem der Teile18, 19 und20 (im weiteren als Spezial-Bedieneinheit bezeichnet) zuzuordnen, und bilden Verbindungen und umgekehrte Verbindungen zwischen der Spezial-Bedieneinheit und den anderen Teilen18, 19 und20 des Applikationsprogrammes.According to a feature of the present invention, the distributed lock manager21 and an object library22 are located on each CPU10, 11, 12 and13 . The object library22 contains a series of subroutines which can be called by each part18, 19 and20 of the application program. The subroutines work by using the lock manager21 to assign a reporting responsibility to one of the parts18, 19 and20 (hereinafter referred to as a special control unit) and form connections and reverse connections between the special control unit and the other parts18, 19 and20 of the application program.
Der verteilte Sperrmanager21 kann einen VMS-verteilten Sperrmanager aufweisen, der einem Prozeß erlaubt, eine Quelle zu benennen und eine spezifizierte "Sperre" bezüglich des Quellennamens nachzufragen. Die Quelle kann irgendeine logische oder physikalische Quelle des Computernetzwerkes sein und die Sperre gibt ein Schreib- und Lesezugriffsprivileg an die Quelle. Ein spezifischer Typ der Sperre wird als Sperrmodus bezeichnet. Die verschiedenen Sperrmodi, die auf dem VMS-verteilten Sperrmanager erhältlich sind, sind die folgenden:The distributed lock manager21 may include a VMS distributed lock manager that allows a process to name a source and to request a specified "lock" on the source name. The source can be any logical or physical source of the computer network, and the lock gives write and read access privileges to the source. A specific type of lock is called a lock mode. The different lock modes available on the VMS distributed lock manager are as follows:
Die Lockmodi geben eine Möglichkeit den Zugriff auf eine Quelle unter vielen Prozessen, die innerhalb eines Computernetzwerkes laufen, zu koordinieren. Z. B. sorgt der EXCLUSIVE-Sperrmodus dafür, daß ein Prozeß der Besitzer einer benannten Quelle ist, da kein anderer Prozeß von der Quelle lassen bzw. in die Quelle schreiben kann, während der besitzende Prozeß in dem EXCLUSIVE-Sperrmodus ist. Andererseits ist ein PROTECTED-WRITE-Sperrmodus weniger einschränkend, da, während nur ein einziger Prozeß auf die benannte Quelle schreiben kann, es anderen Prozessen freigestellt ist, von der benannten Quelle zu lesen. Die anderen Sperrmodi sind weniger restriktiv bzw. einschränkend, und umfassen unterschiedliche Grade von gleichzeitigen bzw. parallelen und exclusiven Lese- und Schreibzugriffsprivilegien auf eine benannte Quelle.The lock modes give one way to access oneSource among many processes within a computer network run to coordinate. For example, theEXCLUSIVE lock mode that a process is the owner of anamed source since there is no other process from theCan leave source or write to the source during theowning process is in the EXCLUSIVE lock mode. On the other handPROTECTED-WRITE lock mode is less restrictive,there while only one process named on theSource can write it free to other processesis to read from the named source. The other lock modesare less restrictive and restrictivedifferent degrees of simultaneous or paralleland exclusive read and write privilegesto a named source.
Der Sperrmanager21 setzt das Sperrschema nicht aktiv in Kraft, sodaß es wichtig, daß jeder Prozeß eine geeignete Sperrnachfrage macht, bevor er beabsichtigt, auf eine Quelle zuzugreifen, und zwar für einen richtigen Betrieb des Sperrschemas. Das Inkraftsetzen des Sperrschemas wird durch Inkrafttreten einer Vereinbarung implementiert, wobei z. B. immer ein Prozeß eine geeignete Sperrnachfrage für eine benannte Quelle vornimmt und dem Prozeß erlaubt wird, nur fortzufahren, wenn die Sperrnachfrage gewährt wird.The lock manager21 does not actively enforce the lock scheme, so it is important that each process make an appropriate lock request before intending to access a source for proper operation of the lock scheme. The enactment of the blocking scheme is implemented by the entry into force of an agreement. For example, a process always makes an appropriate lock request for a named source and the process is allowed to proceed only if the lock request is granted.
Wenn z. B. ein Prozeß von einer Datenbank, die eine benannte Quelle ist, lesen will, fragt der Prozeß nach einer CONCURRENT-READ-Sperre für die Datenbank nach. Wenn diese Datenbank bereits durch einen gewährten EXCLUSIVE-Sperrmodus besetzt ist, ist die Gewährung der Nachfrage für den CONCURRENT-READ nicht kompatibel mit dem bereits gewährten EXCLUSIVE-Sperrmodus für die Quelle. Damit wird der Sperrmanager21 die Nachfrage nach dem CONCURRENT-READ nicht gewähren.If e.g. For example, if a process wants to read from a database that is a named source, the process asks for a CONCURRENTREAD lock on the database. If this database is already occupied by an EXCLUSIVE lock mode granted, granting the request for the CONCURRENT READ is not compatible with the EXCLUSIVE lock mode for the source that has already been granted. The lock manager21 will therefore not grant the demand for the CONCURRENT READ.
Die nachfolgende Tabelle gibt die Kompatibilität zwischen den verschiedenen Sperrmodi des Sperrmanagers21 an:The following table shows the compatibility between the different lock modes of lock manager21 :
Sperrmodus-Kompatibilität
 Lock mode compatibility
Der Sperrmanager21 arbeitet mit den Prozessen, die auf den verschiedenen CPU's des Computernetzwerkes laufen, über gewissen Systemdienste zusammen, die für die Prozesse erhältlich sind, und zwar die folgenden:The lock manager21 interacts with the processes running on the various CPUs of the computer network via certain system services that are available for the processes, namely the following:
Sperrmanager-Dienste
 Lock manager services
Der Sperrmanager21 hält eine Sperrdatenbank aufrecht, die eine Vielzahl von Schlangen aufweist, die Sperrnachfrageinformationen enthalten. Jede benannte Quelle hat eine Serie von Schlangen für jeden Sperrmodus, die für jeden Sperrmodus umfassen: eine Warteschlange, die unerledigte Nachfragen durch Prozesse auflistet, die nicht gewährt worden sind, weil der nachgefragte Sperrmodus inkompatibel mit einer anderen, bereits gewährten Sperrnachfrage ist, und eine Umwandlungsschlange, die Sperrnachfragen auflistet, die für einen Modus gewährt worden sind und auf die Umwandlung in einen anderen Sperrmodus warten.The lock manager21 maintains a lock database that has a plurality of queues that contain lock demand information. Each named source has a series of queues for each lock mode, including for each lock mode: a queue that lists pending requests by processes that have not been granted because the lock mode requested is incompatible with another lock request already granted, and one Conversion queue that lists lock requests that have been granted for one mode and are waiting to be converted to another lock mode.
Der Sperrmanager21 arbeitet jede Sperrnachfrage mit Bezug auf die Sperrdatenbank ab, um die Kompatibilität mit bereits gewährten Nachfragen zu überprüfen, und fährt dann damit fort, entweder die Sperrnachfrage zu gewähren oder die Nachfrage in einer Warteschlange zu plazieren. Wenn ein Prozeß einen gewährten Sperrmodus freigibt, durchsucht der Sperrmanager21 die Warteschlange nach diesem Sperrmodus und gewährt dann den Sperrmodus auf der Basis, daß der zuerst kommende auch zuerst bedient wird, der nächsten Sperrnachfrage in der Warteschlange.The lock manager21 processes each lock request with respect to the lock database to check compatibility with requests already granted, and then continues either to grant the lock request or to place the request in a queue. When a process releases a granted lock mode, the lock manager21 searches the queue for that lock mode and then grants the lock mode based on the first coming service being served the next lock request in the queue.
Der Sperrmanager21 behält ebenfalls einen Sperrstatusblock für jede Sperre für einen Quellennamen bei, um anzuzeigen, in welcher Schlange die Sperrnachfragen für diese Sperre plaziert worden sind. Ein Sperreventilblock (lock valve block) ist mit jedem Sperrstatusblock verbunden. Der Sperrventilblock kann z. B. 16 Byte an Informationen aufweisen, die entweder gelesen oder durch die Prozesse geschrieben werden können, denen die Sperrnachfrage für diese Sperre gewährt worden ist. Der Sperrventilblock ist für einen nächsten Prozeß erhältlich, wenn diesem Prozeß die Sperrnachfrage für den Sperrmodus der benannten Quelle gewährt worden ist. Somit kann der Sperrventilblock als Kommunikationseigenschaft bzw. Möglichkeit benützt werden, um 16 Byte-Nachrichten zwischen Prozessen zu übertragen.The lock manager21 also maintains a lock status block for each lock on a source name to indicate which queue the lock requests for that lock have been placed in. A lock valve block is associated with each lock status block. The check valve block can e.g. B. 16 bytes of information that can either be read or written by the processes that have been granted the lock request for this lock. The check valve block is available for a next process if that process has been granted the lock request for the lock mode of the named source. The check valve block can thus be used as a communication property or option to transfer 16 byte messages between processes.
Desweiteren kann jede Sperrnachfrage ein Abschluß-AST oder eine Blockier-AST spezifizieren, um einen Quellenzugriff unter den Prozessen, die auf dem Computernetzwerk laufen, zu synchronisieren. Wie oben erläutert, unterbricht ein Abschluß-AST einen Prozeß, wenn eine Sperrnachfrage, die von dem Prozeß durchgeführt wurde, gewährt wird. Eine Blockier-AST unterbricht den Prozeß, wenn ein anderer Prozeß eine Sperrnachfrage durchführt, die inkompatibel mit der Sperrnachfrage ist, die bereits einem anderen Prozeß gewährt worden ist.Furthermore, each blocking request can be a termination AST orspecify a blocking AST to access a sourceamong the processes that run on the computer network,to synchronize. As explained above, a finalAST a process when a blocking demand bythe process has been carried out. A blockingAST interrupts the process if another process doesPerforms blocking request that is incompatible with the blocking requestis already granted to another processhas been.
In Übereinstimmung mit einem Merkmal der vorliegenden Erfindung enthält die Objektbibliothek22, die in jeder der CPU's11, 12, 13 vorhanden ist, einen Satz von verbundenen Unterprogrammen, die direkt oder indirekt von den jeweiligen zusammenwirkenden Teilen18, 19, 20 des Applikationsprogrammes, die jeweils auf den CPU's11, 12, bzw.13 laufen, aufgerufen werden. Die Unterprogramme sind SETUP, CLUSTERBROADCAST, MSGAST, SPECIALAST, FAILAST, LISTSERVER, SHOWSERVER und UPDATEINFO. Die Unterprogramme benützen den Sperrmanager21, um die zusammenwirkenden Applikationsteile18,19,20 zu verbinden bzw. umgekehrt zu verbinden, indem logische Quellen, die sich auf die Applikationsteile18, 19 und20 beziehen, benannt werden und indem eine Serie von kompatiblen und inkompatiblen Sperrnachfragen bezüglich der benannten Quelle durchgeführt werden, um die Teile18, 19 und20 über die Sperrschlangen, die von dem Sperrmanager21 aufrecht erhalten werden, zu verbinden. Wie erläutert, umfassen die Quellen SPECIAL, BROADCAST, PERMISSIONTOTALK und eine SERVER xVERSION-Quelle, entsprechend jedem Teil18, 19, 20 des Applikationsprogrammes.In accordance with a feature of the present invention, the object library22 , which is present in each of the CPU's11, 12, 13 , contains a set of linked subroutines which are directly or indirectly from the respective cooperating parts18, 19, 20 of the application program each run on the CPU's11, 12 and13 , respectively. The subroutines are SETUP, CLUSTERBROADCAST, MSGAST, SPECIALAST, FAILAST, LISTSERVER, SHOWSERVER and UPDATEINFO. The subroutines use the lock manager21 to connect the interacting application parts18 ,19 ,20 or vice versa by naming logical sources relating to the application parts18, 19 and20 and by a series of compatible and incompatible ones Lock requests regarding the named source are made to connect parts18, 19 and20 via the lock queues maintained by lock manager21 . As explained, the sources include SPECIAL, BROADCAST, PERMISSIONTOTALK and a SERVER xVERSION source, corresponding to each part18, 19, 20 of the application program.
Der Entwickler des Applikationsprogrammes kann den Ausfallmechanismus der vorliegenden Erfindung benützen, in-dem er einen einzigen Unterprogrammaufrufbefehl in jedem Teil18,19 und20 des Applikationsprogrammes einfügt, um das SETUP-Programm der Objektbibliothek22 in der CPU11, 12, 13 aufzurufen, wo der Teil gerade läuft. Der Unterprogrammaufrufbefehl spezifiziert das SETUP-Programm und erzeugt ein Argument, um individuell das Applikationsprogramm zu identifizieren, zu dem der Teil gehört, der das Unterprogramm gerade aufruft. Der Unterprogrammaufrufbefehl kann ebenfalls ein Argument erzeugen, das einen existierenden Mailbox-Kanal in dem Netzwerk zum Empfangen von Nachrichten des Ausfallmechanismusses identifiziert. Eine Null-Anzeige des Mailbox-Kanals veranlaßt das SETUP-Programm, den Mailbox-Kanal für das Applikationsprogramm zu öffnen. Alternativerweise kann das Argument eine asynchrone Systemfalle spezifizieren, die von dem Programmentwickler geschrieben worden ist, das Applikationsprogramm unterbrechen soll und bei einer Ausfallmeldung laufen soll. Die asynchrone Systemfalle kann Korrekturhandlungen spezifizieren.The developer of the application program can use the failure mechanism of the present invention by inserting a single subroutine call instruction into each part18 ,19 and20 of the application program to call the SETUP program of the object library22 in the CPU11, 12, 13 where the part is running. The subroutine call instruction specifies the SETUP program and generates an argument to individually identify the application program to which the part that is calling the subroutine belongs. The subroutine call instruction may also generate an argument that identifies an existing mailbox channel on the network for receiving failure mechanism messages. A zero display of the mailbox channel causes the SETUP program to open the mailbox channel for the application program. Alternatively, the argument can specify an asynchronous system trap that has been written by the program developer, is to interrupt the application program, and is to run in the event of a failure message. The asynchronous system trap can specify corrective actions.
All die Unterprogramme, die auf einer bestimmten CPU11, 12, 13 des Netzwerkes laufen bzw. installiert sind, wirken zusammen, um einen gemeinsamen Speicherraum bzw. Speicherbereich in dem Hauptspeicher der jeweiligen CPU11, 12, 13 zu bilden, um Informationen bezüglich des Ausfallmechanismuses zu speichern, der für das bestimmte Applikationsprogramm vorgesehen ist. Der gemeinsame Speicherraum wird automatisch von dem SETUP-Programm vorbereitet bzw. gerüstet und ist für alle Programme in der Objektbibliothek22 zugreifbar. Alle Namen der Quellen für ein spezifisches Applikationsprogramm enthalten ein Präfix bzw. eine Vorsilbe, die dem spezifischen Applikationsprogramm zugeordnet ist, d. h., daß das Präfix beim Aufruf als Argument zu dem SETUP-Programm befördert wird. Der gemeinsame Speicherraum speichert Informationen, die sich auf die Teile18, 19 und20 beziehen, welche auf der bestimmten CPU11, 12, 13 laufen. Die Informationen zeigen an, daß der Teil18, 19 und20 SETUP aufgerufen hat und im Ausfallmechanismus ist und desweiteren, ob der Teil eine Spezial-Bedieneinheit ist.All the subroutines that run or are installed on a specific CPU11, 12, 13 of the network work together to form a common memory space or memory area in the main memory of the respective CPU11, 12, 13 to provide information relating to the Failure mechanism to store, which is intended for the particular application program. The common memory space is automatically prepared or equipped by the SETUP program and is accessible to all programs in the object library22 . All names of the sources for a specific application program contain a prefix or prefix which is assigned to the specific application program, ie the prefix is conveyed as an argument to the SETUP program when it is called. The common memory space stores information related to the parts18, 19 and20 running on the particular CPU11, 12, 13 . The information indicates that part18, 19 and20 has called SETUP and is in the failure mechanism and furthermore whether the part is a special control unit.
InFig. 4 ist ein Flußdiagramm des SETUP-Programmes dargestellt. Der SETUP-Aufrufbefehl100 ist, wie angegeben, in jedem Teil18, 19, 20 des Applikationsprogrammes vorhanden, sodaß das Programm getrennt für jeden Teil18, 19 und20 ablaufen kann. Das SETUP-Programm fängt an, indem es eine Nachfrage für die BROADCAST-Quelle in einem CONCURRENT-READ-Sperrmodus101 im Namen des Teiles macht, der das SETUP-Programm gerufen hat, indem der $ENQW-Dienst des Sperrmanagers21 eingesetzt wird. Das SETUP-Programm wartet dann darauf, daß der Sperrmodus gewährt wird102. Der $ENQW-Dienst wartet automatisch auf die Gewährung der Sperre. Die Schleife, die in dem Flußdiagramm dargestellt ist, ist für Erläuterungszwecke vorhanden, um anzugeben, daß das Programm solange nicht fortfährt, bis die Sperre gewährt wird. Die Sperre wird gewährt werden, da alle SETUP-Programme CONCURRENT-READ nachfragen, die kompatibel miteinander sind. Die Nachfrage nach der BROADCAST-Quelle spezifiziert auch das MSGAST-Programm, das ein Blockier-AST ist, wie genauer weiter unten beschrieben wird.InFIG. 4 is a flowchart of the setup program is illustrated. As stated, the SETUP call command100 is present in each part18, 19, 20 of the application program, so that the program can run separately for each part18, 19 and20 . The SETUP program begins by making a request for the BROADCAST source in a CONCURRENT READ lock mode101 on behalf of the part that called the SETUP program using the lock manager21's $ ENQW service. The SETUP program then waits for lock mode to be granted102 . The $ ENQW service automatically waits for the lock to be granted. The loop shown in the flow chart is provided for the purposes of illustration to indicate that the program will not continue until the lock is granted. The lock will be granted because all SETUP programs CONCURRENTREAD are in demand that are compatible with each other. Demand for the BROADCAST source also specifies the MSGAST program, which is a blocking AST, as described in more detail below.
Nach dem Gewähren der Nachfrage nach der BROADCAST-Quelle, führt das SETUP-Programm dann eine Nachfrage103 nach einer Quelle durch, die es in der Nachfrage benennt, z. B. nach dem Knoten (d. h. der CPU11, 12, 13, wo jeweils die Teile18, 19, 20 laufen), z. B. SERVERCPU11 in einem PROTECTED-WRITE-Sperrmodus. Das VMS-System, das in der wiedergegebenen Ausführungsform gemäß der vorliegenden Erfindung verwendet wird, stellt einen Dienst zur Verfügung, der $GETSYI heißt, der von irgendeinem Prozeß aufgerufen werden kann, um den Knoten in dem Netzwerk zu identifizieren, wo der Prozeß gerade läuft. Alternativerweise kann die SERVERxxx-Quelle direkt nach dem Teil18, 19, 20 benannt werden, der das SE-TUP-Programm aufgerufen hat. All dies ist erforderlich, da der Quellenname individuell bzw. einzigartig für den spezifischen Teil18, 19, 20 des Applikationsprogrammes sein soll. Das SETUP-Programm benützt den $ENQW-Dienst des Sperrmanagers21 wiederum. Das SETUP-Programm wartet dann104 darauf, daß die Nachfrage nach dem SERVERxxx gewährt wird. Diese Nachfrage wird ebenfalls gewährt, da jeder SE-TUP-Programm einen PROTECTED-WRITE-Sperrmodus bezüglich einer spezifischen Quelle nachfragt, die nach seinem entsprechenden Knoten benannt worden ist, welcher unterschiedlich zu den Quellennamen ist, für die eine Sperre durch die anderen SETUP-Programme nachgefragt worden ist.After granting the demand for the BROADCAST source, the SETUP program then makes a request103 for a source that it names in demand, e.g. B. after the node (ie the CPU11, 12, 13 , where each of the parts18, 19, 20 run), z. B. SERVERCPU11 in a PROTECTED WRITE lock mode. The VMS system used in the reproduced embodiment according to the present invention provides a service called $ GETSYI that can be called by any process to identify the node on the network where the process is currently running . Alternatively, the SERVERxxx source can be named directly after the part18, 19, 20 that called the SE- TUP program. All this is necessary because the source name should be individual or unique for the specific part18, 19, 20 of the application program. The SETUP program in turn uses the $ ENQW service of the lock manager21 . The SETUP program then waits104 for the demand for the SERVERxxx to be granted. This demand is also granted because each SETUP program asks for a PROTECTED-WRITE lock mode regarding a specific source that has been named for its corresponding node, which is different from the source names for which a lock is set by the other SETUP Programs has been requested.
Das SETUP-Programm macht dann eine Nachfrage über den $ENQ-Dienst nach der SPECIAL-Quelle in einem EXCLUSIVE-Sperrmodus105. Die Nachfrage nach der SPECIAL-Quelle spezifiziert die SPECIALAST, die eine Abschluß-AST ist. Da alle SETUP-Programme eine Nachfrage in EXCLUSIVE machen, kann nur einem einzigen der SETUP-Programme, für gewöhnlich demjenigen, das zeitlich zuerst die Nachfrage gemacht hat, der EXCLUSIVE-Sperrmodus gewährt werden. Die anderen Nachfragen, die von den anderen SETUP-Programmen, welche auf dem Netzwerk laufen, gemacht worden sind, sind jeweils inkompatibel mit dem gewährten EXCLUSIVE-Sperrmodus. Diese Nachfragen werden dann in einer REQUEST-FOR-SPECIAL-IN-EXCLUSIVE-WAITING-Schlange durch den verteilten Sperrmanager21 plaziert. Wie angegeben, wird derjenige Teil18, 19, 20, dem der EXCLUSIVE-Sperrmodus gewährt worden ist, als Spezial-Bedieneinheit bezeichnet und das SETUP-Programm für diesen Teil18, 19, 20 setzt ein Bit in den jeweiligen gemeinsamen Speicherraum ab, um den Spezial-Bedieneinheit-Status anzuzeigen.The SETUP program then makes a request through the $ ENQ service for the SPECIAL source in an EXCLUSIVE lock mode105 . The demand for the SPECIAL source specifies the SPECIALAST, which is a final AST. Since all SETUP programs make a request in EXCLUSIVE, only one of the SETUP programs, usually the one who made the request first, can be granted EXCLUSIVE lock mode. The other requests made by the other SETUP programs running on the network are each incompatible with the EXCLUSIVE lock mode granted. These requests are then placed in a REQUEST-FOR-SPECIAL-IN-EXCLUSIVE-WAITING queue by the distributed lock manager21 . As indicated, the part18, 19, 20 which has been granted the EXCLUSIVE lock mode is referred to as a special operating unit and the SETUP program for this part18, 19, 20 converts a bit into the respective common memory space display the special control unit status.
Nach Durchführen der Nachfrage nach der SPECIAL-Quelle in einem EXCLUSIVE-Sperrmodus, überprüft das SETUP-Programm den gemeinsamen Speicher, um zu sehen, ob der entsprechende Teil18, 19, 20 die Spezial-Bedieneinheit106 ist. Wenn der entsprechende Teil18, 19, 20 die Spezial-Bedieneinheit ist, gibt das SETUP-Programm die Steuerung an den Teil18,19, 20 zurück107. Wenn der entsprechende Teil18, 19, 20 nicht die Spezial-Bedieneinheit ist, fährt das SETUP-Programm fort, das CLUSTERBRODCAST-Programm108 aufzurufen, das genauer weiter unten zusammen mit dem verwandten MSGAST-Blockierprogramm und der BROADCAST-Quelle erläutert wird.After performing the request for the SPECIAL source in an EXCLUSIVE lock mode, the SETUP program checks the shared memory to see if the corresponding part18, 19, 20 is the special control unit106 . If the corresponding part18, 19, 20 is the special operating unit, the SETUP program returns control to part18 ,19, 20107 . If the corresponding portion18, 19, 20 is not the special control unit, the SETUP program continues to invoke the CLUSTERBRODCAST program108 , which is discussed in more detail below, along with the related MSGAST blocking program and the BROADCAST source.
Da jedes SETUP-Programm das SPECIALAST-Abschlußprogramm in der Nachfrage nach der SPECIAL-Quelle spezifiziert, wird derjenige Teil18, 19, 20 dem die SPECIAL-Quelle in einem EXCLUSIVE-Sperrmodus über das aufgerufene SETUP-Programm gewährt worden ist, durch das SPECIALAST-Programm unterbrochen.Since each SETUP program specifies the SPECIALAST completion program in the request for the SPECIAL source, the part18, 19, 20 to which the SPECIAL source has been granted in an EXCLUSIVE lock mode via the called SETUP program is made by the SPECIALAST Program interrupted.
InFig. 5 ist ein Flußdiagramm des SPECIALAST-Abschlußprogrammes dargestellt. Das SPECIALAST-Programm verwendet anfänglich den $GETLKIW-Dienst201 des Sperrmanagers21, um eine Liste aller Prozesse zu erhalten, die gegenwärtig in der REQUEST-FOR-SPECIAL-IN-EXCLUSIVE-WAITING-Schlange sind. Das SPECIALAST macht dann eine Nachfrage202 nach einem EXCLUSIVE-Sperrmodus über den $ENQW-Dienst des Sperrmanagers21 für jede der SERVERxxx-Quellen, die den Prozessen in der Liste, die von dem $GETLKIW-Dienst erhalten worden sind, zugeordnet sind. Das SPECIALAST kann entweder auf den Auftragsdatensatz16 zugreifen oder den $GETSYI-Dienst einsetzen, um den Teil18, 19, 20 mit dem Knotennamen zu korrelieren, wo der Teil gerade läuft. Somit kann das SPECIALAST die SERVERxxx-Namen der Quellen, für die es die Nachfragen nach einer EXCLUSIVE-Sperre macht, formulieren.Figure 5 shows a flow diagram of the SPECIALAST termination program. The SPECIALAST program initially uses the $ GETLKIW service201 of lock manager21 to obtain a list of all processes currently in the REQUEST-FOR-SPECIAL-IN-EXCLUSIVE-WAITING queue. The SPECIALAST then makes a request202 for an EXCLUSIVE lock mode via the lock manager21's $ ENQW service for each of the SERVERxxx sources associated with the processes in the list obtained from the $ GETLKIW service. The SPECIALAST can either access the order record16 or use the $ GETSYI service to correlate the part18, 19, 20 with the node name where the part is currently running. The SPECIALAST can thus formulate the SERVERxxx names of the sources for which it makes the requests for an EXCLUSIVE lock.
Jede Nachfrage nach dem SERVERxxx spezifiziert das FAILAST-Blockierprogramm. Wie zu sehen ist, wird jede Nachfrage nach den SERVERxxx-Quellen, die von der SPECIALAST durchgeführt wird, inkompatibel mit dem PROTECTED-WRITE-Sperrmodus sein, der bereits jedem Prozeß auf der Liste (siehe103, 104Fig. 4) gewährt worden ist. Somit wird jede Nachfrage, die von dem SPECIALAST im Namen des SPECIAL SERVERS gemacht wird, in einer jeweiligen REQUEST-FORSERVERxxxEXCLUSIVE-WAITING-Schlange von dem Sperrmanager21 plaziert. Nachdem alle Nachfragen202 ausgeführt worden sind, gibt das SPECIALAST die Steuerung dem Teil18, 19, 20 zurück, der die Spezial-Bedieneinheit gemacht hat203.Every request for the SERVERxxx specifies the FAILAST blocking program. As can be seen, any request for the SERVERxxx sources performed by SPECIALAST will be incompatible with the PROTECTED-WRITE lock mode that has already been granted to each process on the list (see103, 104Fig. 4) . Thus, any request made by the SPECIALAST in the name of the SPECIAL SERVER is placed in a respective REQUEST-FORSERVERxxxEXCLUSIVE-WAITING queue by the lock manager21 . After all requests202 have been executed, the SPECIALAST returns control to the part18, 19, 20 that made the special control unit203 .
InFig. 6 ist ein logisches Blockdiagramm der Teile18,19, 20 des Applikationsprogrammes gezeigt, wenn es verbunden und umgekehrt verbunden durch das Laufen der SETUP- und SPECIALAST-Programme ist. Wie obenstehend hingewiesen, speichert jedes der verschiedenen SETUP-Programme, die von den Teilen18, 19, 20 aufgerufen werden, Informationen bezüglich der entsprechenden Teile18, 19, 20 in einen gemeinsamen Speicherraum in der jeweiligen CPU11, 12, 13 ab. Das SPECIALAST-Programm für den Teil18, 19, 20, dem der EXCLUSIVE-Sperrmodus für SPECIAL-Quelle gewährt worden ist, setzt ein Bit in das Feld des gemeinsamen Speicherraums, der den Informationen bezüglich der entsprechenden Teile18, 19, 20 zugeordnet ist, um den Spezial-Server-Status anzuzeigen.InFig. 6 a logical block diagram of parts18 ,19, 20 of the application program is shown when it is connected and vice versa connected by running the SETUP and SPECIALAST programs. As pointed out above, stores each of the different setup programs that are invoked by the parts18, 19, 20, information regarding the respective parts18, 19, 20 in a common memory space in the respective CPU11, 12, 13 from. The SPECIALAST program for part18, 19, 20 , which has been granted the EXCLUSIVE lock mode for SPECIAL source, places a bit in the field of the common memory space which is assigned to the information relating to the corresponding parts18, 19, 20 to display the special server status.
Angenommen, daß dem Teil18 der EXCLUSIVE-Sperrmodus für die SPECIAL-Quelle gewährt worden ist, dann ist die entsprechende Sperrnachfrage, die vom Teil18 über das SETUP-Programm in der Objektbibliothek22 ausgeführt worden ist, die resident in der CPU11 vorhanden ist, auf welcher der Teil18 gerade läuft, in der gewährten Schlange51 für den EXCLUSIVE-Sperrmodus der SPECIAL-Quelle vorhanden, welche von dem verteilten Sperrmanager21 aufrecht erhalten wird. Die Schlangenliste51 und das SPECIAL SERVER Status Bit verbinden50 den Teil18 mit dem Sperrmanager21.Assuming that part18 has been granted the EXCLUSIVE lock mode for the SPECIAL source, then the corresponding lock request that was carried out by part18 via the SETUP program in the object library22 is resident in the CPU11 , on which the part18 is currently running, is present in the granted queue51 for the EXCLUSIVE lock mode of the SPECIAL source, which is maintained by the distributed lock manager21 . The queue list51 and the SPECIAL SERVER status bit50 connect the part18 to the lock manager21 .
Eine Vorwärtsverbindung zwischen dem special server und den anderen Teilen19, 20, denen der EXCLUSIVE-Sperrmodus auf SPECIAL nicht gewährt worden ist, wird durch die REQUEST-FOR-SPECIAL-IN-EXCLUSIVE-WAITING-Schlange53 bewerkstelligt, auf die durch die Spezial-Bedieneinheit über den $GETLKI-Dienst des Sperrmanagers21 (sieheFig. 5) zugegriffen werden kann54.A forward connection between the special server and the other parts19, 20 to which the EXCLUSIVE lock mode on SPECIAL has not been granted is established by the REQUEST-FOR-SPECIAL-IN-EXCLUSIVE-WAITING queue53 , to which the special Operating unit can be accessed54 via the $ GETLKI service of the lock manager21 (seeFIG. 5).
Eine umgekehrte Verbindung55 zwischen der Spezial-Bedieneinheit und jedem anderen Teil19, 20 des Applikationsprogrammes wird von den REQUEST-SERVERxxx-EXCLUSIVE-WAITING-Schlangen56 bewerkstelligt, die von dem Sperrmanager21 auf das Ausführen der EXCLUSIVE-Nachfragen im Namen der Spezial-Bedieneinheit (Teil18) durch das SPECIALAST202 (Fig. 5) hin, gesetzt worden sind. Natürlich hat jede SERVERxxx- Quelle eine entsprechende Gewährungsschlange57 für den PROTECTED-WRITE-Modus, die die Nachfragen enthält, die von den SETUP-Programmen im Namen der entsprechenden Teile18, 19, 20 gemacht worden sind. Die Gewährungsschlangen57 vervollständigen die umgekehrte Verbindung55 über die Verbindung58 zwischen jedem Teil19, 20 und der entsprechenden Gewährungsschlange57.A reverse connection55 between the special control unit and each other part19, 20 of the application program is made by the REQUEST-SERVERxxx-EXCLUSIVE-WAITING queues56 , which the lock manager21 executes EXCLUSIVE requests on behalf of the special Control unit (part18 ) by SPECIALAST202 (Fig. 5), have been set. Of course, each SERVERxxx source has a corresponding PROTECTED-WRITE mode grant queue57 , which contains the requests made by the SETUP programs on behalf of the corresponding parts18, 19, 20 . The grant queues57 complete the reverse link55 via the link58 between each part19, 20 and the corresponding grant queue57 .
Die gestrichelte Linie für einen vierten Teil des Applikationsprogrammes gibt einen zusätzlichen Teil wieder, der in das Netzwerk nach dem Ausführen des SPECIALAST eintritt. Das Aufstellen der umgekehrten Verbindung zwischen der Spezial-Bedieneinheit und dem neuen Teil wird weiter unten in Verbindung mit der BROADCAST-Quelle erläutert.The dashed line for a fourth part of the application programreproduces an additional part, which inthe network enters after executing the SPECIALAST.Establishing the reverse connection between the specialControl unit and the new part is shown below inConnection to the BROADCAST source explained.
Die LISTSERVER, UPDATEINFO und SHOWSERVER-Programme in der Objektbibliothek22 sind alle vorgesehen als Dienste für jeden Applikationsentwickler, so daß ein Applikationsentwickler jedes der Programme aufrufen kann, um die Dienste des Sperrmanagers21 mit Bezug auf die Quellen, die von dem Ausfallmechanismus benannt worden sind, zu benützen.The LISTSERVER, UPDATEINFO, and SHOWSERVER programs in the object library22 are all provided as services for each application developer so that an application developer can call each of the programs to call the services of the lock manager21 with respect to the sources that have been named by the failure mechanism to use.
Z. B. kann jedes Teil18, 19, 20 das UPDATEINFO-Programm aufrufen, um Informationen bezüglich des Teils wie z. B. Software ID, Nummer der Version, Schritt, der gegenwärtig ausgeführt wird, usw. in den Sperrwertblock (lock value block) einzuschreiben, der mit der Sperre für die zugeordnete SERVERxxx-Quelle verbunden ist. Das UPDATEINFO-Programm erlaubt einem Applikationsentwickler, die Sperrwertblockmöglichkeit des VMS-Sperrmanagers21 zu benützen.For example, each part18, 19, 20 can call the UPDATEINFO program to obtain information related to the part such as. B. Software ID, version number, step currently being executed, etc., in the lock value block associated with the lock for the associated SERVERxxx source. The UPDATEINFO program allows an application developer to use the lock value block option of the VMS lock manager21 .
Das SHOWSERVER-Programm ermöglicht jedem Prozeß, der auf dem Netzwerk läuft, den Sperrwertblock des SERVERxxx jedes Teils18, 19, 20 zu erhalten und zu lesen, um die Informationen in dem Sperrwertblock zu erhalten. Desweiteren ermöglicht das LISTSERVER-Programm jedem Prozeß, der auf dem Netzwerk läuft, die Nachfragen in den Sperrmanagerschlangen aufzulisten, um dadurch Informationen bezüglich der Teile des spezifischen Applikationsprogrammes und bezüglich dem Ort, wo sie laufen, zu erhalten.The SHOWSERVER program enables any process running on the network to obtain and read the SERVERxxx lock value block of each part18, 19, 20 to obtain the information in the lock value block. Furthermore, the LISTSERVER program enables any process running on the network to list the requests in the lock manager queues to thereby obtain information regarding the parts of the specific application program and the location where they are running.
Eine Möglichkeit bzw. eine Eigenschaft bzw. ein Merkmal des VMS-verteilten-Sperrmanagers enthält eine Überwachungsfunktion des Betriebs der Komponenten innerhalb des Netzwerks. Wenn eine z. B. der CPU's11, 12, 13 ausfällt, macht der verteilte Sperrmanager21 die Sperrnachfragen ungültig, die von den Prozessen der ausgefallenen CPU gemacht worden sind, und bildet die Schlangen dementsprechend neu.A possibility or a property or a feature of the VMS-distributed lock manager contains a monitoring function of the operation of the components within the network. If a z. If the CPU's11, 12, 13 fails, the distributed lock manager21 invalidates the lock requests made by the processes of the failed CPU and re-forms the queues accordingly.
Somit wird die gewährte Schlange für den SERVERxxx des Teils19, 20, das auf der ausgefallenen CPU läuft, entleert und der Sperrmanager21 sucht nach und gewährt die Wartenachfrage für EXCLUSIVE bezüglich des SERVERSxxx, der von der SPECIALAST im Namen der Spezial-Bedieneinheit gemacht wurde. Das FAILAST-Abschlußprogramm, das von der EXCLUSIVE-Nachfrage (sieheFig. 5) spezifiziert worden ist, wird dann die Ausführung des Teils18 unterbrechen und ablaufen.Thus the queue granted for the SERVERxxx of part19, 20 , which runs on the failed CPU, is emptied and the lock manager21 searches for and grants the wait request for EXCLUSIVE regarding the SERVERSxxx, which was made by the SPECIALAST on behalf of the special control unit . The FAILAST completion program specified by the EXCLUSIVE request (seeFig. 5) will then interrupt execution of part18 and expire.
Fig. 7 stellt ein Flußdiagramm des FAILAST-Abschlußprogrammes dar. Das FAILAST ruft zuerst die wild card bzw. den Joker $GETLKIW300 auf, um Informationen bezüglich der spezifischen EXCLUSIVE-Nachfrage zu erhalten, die der Spezial-Bedieneinheit gewährt worden ist. Die wild card $GETLKIW gibt die Informationen bezüglich aller Sperrnachfragen eines Prozesses und gibt deshalb die Informationen bezüglich aller SERVERxxx-Quellen-Schlangen zu dem Teil zurück, der die Spezial-Bedieneinheit ist. Derjenige, bei dem die Spezial-Bedieneinheit der Halter des EXCLUSIVE-Lockmoduses ist, entspricht dem Teil19, 20, das auf der CPU12, 13 läuft, die ausgefallen ist. Der Name der Quelle ermöglicht dem FAILAST, den Teil19, 20 zu identifizieren, der wegen einer Fehlfunktion der CPU ausgefallen ist bzw. fehlerhaft ist. Z. B. kann das FAILAST in der hier beschriebenen Ausführungsform den Auftragsdatensatz16 für das Applikationsprogramm durchsuchen und den Knotennamen, der verwendet wird, um den SERVERxxx zu benennen, mit dem Teil18, 19, 20, der auf dem Knoten läuft zu korrelieren.Figure 7 is a flow diagram of the FAILAST termination program. The FAILAST first calls the wild card or joker $ GETLKIW300 to obtain information regarding the specific EXCLUSIVE demand that has been granted to the special operator. The wild card $ GETLKIW gives the information regarding all lock requests of a process and therefore returns the information regarding all SERVERxxx source queues for the part that is the special control unit. The one in which the special control unit is the holder of the EXCLUSIVE lock mode corresponds to the part19, 20 that runs on the CPU12, 13 that has failed. The name of the source enables the FAILAST to identify the part19, 20 which has failed due to a CPU malfunction. For example, in the embodiment described here, the FAILAST can search the job data record16 for the application program and correlate the node name which is used to name the SERVERxxx with the part18, 19, 20 which is running on the node.
Das Programm FAILAST meldet dann301 der Spezial-Bedieneinheit entweder durch Schreiben einer Fehlernachricht, die den ausgefallenen Teil identifiziert, in die Mailbox, die in dem Unterprogrammaufrufbefehlsargument spezifiziert worden ist, welches in dem Programmteil eingefügt worden ist, oder ruft eine asynchrone Systemfalle auf, die von dem Applikationsentwickler spezifiziert worden ist. Ganz gleich wie, die Informationen bezüglich des Ausfallens bzw. des Fehlers des Programmteils des Applikationsprogrammes werden automatisch dem Applikationsprogramm auf solche Art und Weise zugeführt, daß ein Korrekturvorgang bzw. eine Korrekturhandlung ausgeführt werden kann. Z. B. kann die asynchrone Systemfalle, die in dem Aufruf für das SETUP-Programm spezifiziert worden ist, das Auftragsdatensatzfeld16 lesen, das die bei einer Ausfallinformation vorzunehmende Handlung enthält.The program FAILAST then reports301 to the special control unit either by writing an error message, which identifies the failed part, into the mailbox that was specified in the subroutine call command argument, which was inserted in the program part, or calls an asynchronous system trap, which has been specified by the application developer. No matter how, the information regarding the failure or error of the program part of the application program is automatically fed to the application program in such a way that a correction process or a correction action can be carried out. For example, the asynchronous system trap specified in the call for the SETUP program can read the job record field16 , which contains the action to be taken in the event of failure information.
InFig. 8 sind Seite an Seite Flußdiagramme für die CLU-STERBROADCAST und MSTAST-Programme der Objektbibliothek22 dargestellt. Die CLUSTERBROADCAST und MSGAST-Programme laufen in Verbindung mit dem Sperrungsschema für die BROAD-CASTQuelle und die PERMISSIONTOTALK-Quelle ab, um eine Kommunikationsmöglichkeit zwischen den Teilen18, 19, 20 des Applikationsprogrammes zu ermöglichen. Wie inFig. 1 angegeben, ruft das SETUP-Programm das CLUSTERBROADCAST-Programm106 unmittelbar nach Ausführung einer Nachfrage nach einer EXCLUSIVE-Sperre auf SPECIAL105 auf, wenn der zugeordnete Teil bzw. Programmteil18, 19, 20 nicht die Spezial-Einheit ist.InFIG. 8 side by side flow charts for the CLU- STERBROADCAST and MSTAST programs the object library22 are shown. The CLUSTERBROADCAST and MSGAST programs run in conjunction with the blocking scheme for the BROADCAST source and the PERMISSIONTOTALK source in order to enable communication between parts18, 19, 20 of the application program. As indicated inFIG. 1, the SETUP program calls the CLUSTERBROADCAST program106 immediately after executing a request for an EXCLUSIVE lock on SPECIAL105 if the assigned part or program part18, 19, 20 is not the special unit .
In dem Fall, daß ein Teil, der nicht die Spezial-Einheit ist (siehe z. B. die gestrichelte Linie inFig. 6) zu laufen beginnt, nachdem das SPECIALAST-Programm beendet worden ist, würde die Spezial-Bedieneinheit nicht eine Nachfrage für die SERVERxxx-Quelle, zugeordnet dem neuen Teil, enthalten. Und zwar deshalb, weil das SETUP-Programm, das von dem neuen Teil aufgerufen worden ist, eine Nachfrage nach der SPECIAL-Quelle in EXCLUSIVE nicht machen würde, bis das SPECIALAST-Programm abgelaufen ist, und somit würde die Nachfrage, die von dem neuen Teil gemacht worden ist, nicht in der REQUEST-FOR-SPECIAL-IN-EXCLUSIVE-WAITING-Schlange sein.In the event that a part other than the special unit (see, for example, the dashed line inFig. 6) starts to run after the SPECIALAST program has ended, the special operating unit would not be asked for the SERVERxxx source, assigned to the new part. This is because the SETUP program called from the new part would not make a request for the SPECIAL source in EXCLUSIVE until the SPECIALAST program expired, and thus the demand from the new Part has not been made in the REQUEST-FOR-SPECIAL-IN-EXCLUSIVE-WAITING queue.
Das CLUSTERBROADCAST-Programm wird verwendet, um zwei Typen von Nachrichten zu senden. Einer der Typen ist eine vordefinierte Nachricht, welche das MSGAST-Programm erkennt und auf die das MSGAST-Programm bestimmte Aktionen bzw. Handlungen in Antwort auf die Nachricht durchführt. Beispiele für vordefinierte Nachrichten sind eine Nachricht, die von dem SETUP-Programm bei dem Eintritt eines neuen Programmteils in das Netzwerk abgegeben wird, und eine Nachricht, die von dem SPECIALAST-Programm gesendet wird, wenn ein neuer Programmteil die Spezial-Bedieneinheit wird. Der andere Typ von Nachricht kann direkt dem Applikationsprogramm zugeführt werden, z. B. zu der Mailbox, die in dem Unterprogrammaufrufargument spezifiziert ist. Das CLU-STERBROADCAST-Programm macht anfänglich eine Nachfrage für die PERMISSIONTOTALK-Quelle in dem EXCLUSIVE-Sperrmodus400. Das CLUSTERBROADCAST-Programm wartet401, bis die Nachfrage gewährt worden ist, und schaut dann, um zu sehen, ob es bereits eine Sperre bezüglich der BROADCAST-Quelle402 hat. Das kann durch Nachsuchen in dem gemeinsamen Speicher, der von dem SETUP-Programm eingerichtet worden ist, ausgeführt werden, um zu sehen, ob der Prozeß, der vorher das CLUSTER-BROADCAST-Programm aufgerufen hat, das SETUP-Programm gerufen hat.The CLUSTERBROADCAST program is used to send two types of messages. One of the types is a predefined message which the MSGAST program recognizes and on which the MSGAST program performs certain actions or actions in response to the message. Examples of predefined messages are a message which is issued by the SETUP program when a new program part enters the network and a message which is sent by the SPECIALAST program when a new program part becomes the special control unit. The other type of message can be fed directly to the application program, e.g. B. the mailbox specified in the subroutine call argument. The CLUSTERBROADCAST program initially makes a request for the PERMISSIONTOTALK source in EXCLUSIVE lock mode400 . The CLUSTERBROADCAST program waits401 for the demand to be granted and then looks to see if it already has a lock on the BROADCAST source402 . This can be done by searching the shared memory set up by the SETUP program to see if the process that previously called the CLUSTER BROADCAST program called the SETUP program.
Wenn der Teil der das CLUSTERBROADCAST-Programm aufgerufen hat, eine Sperre bezüglich der BROADCAST-Quelle hat, d. h. die CONCURRENT-READ-Sperre, die von dem SETUP-Programm erhalten wird, dann fährt das CALLBROADCAST-Programm fort eine Umwandlung des CONCURRENT-READ-Sperrmodus in den EXCLUSIVE-Sperrmodus für das BROADCAST403 nachzufragen.If the part that called the CLUSTERBROADCAST program has a lock on the BROADCAST source, ie the CONCURRENT-READ lock obtained from the SETUP program, then the CALLBROADCAST program continues to convert the CONCURRENT-READ Lock mode to request the EXCLUSIVE lock mode for the BROADCAST403 .
Wenn der Teil, der das CLUSTERBROADCAST aufgerufen hat, eine Sperre für das BROADCAST nicht hat, führt das CLU-STERBROADCAST-Programm eine neue Nachfrage nach der BROADCAST-Quelle in den EXCLUSIVE-Sperrmodus404 aus. Diese Eigenschaft des CLUSTERBROADCAST-Programmes führt dazu, daß die Kommunikationseigenschaft für jeden Prozeß, der auf dem Netzwerk läuft, erhältlich ist, ganz gleich, ob er ein Teil des Applikationsprogrammes ist oder nicht. Somit kann jeder Prozeß eine Nachricht an das Applikationsprogramm schicken, auch wenn er nicht ein Teil des Applikationsprogramms ist.If the part that called the CLUSTERBROADCAST does not have a lock on the BROADCAST, the CLUSTERBROADCAST program makes a new request for the BROADCAST source in EXCLUSIVE lock mode404 . This property of the CLUSTERBROADCAST program means that the communication property is available for every process running on the network, regardless of whether it is part of the application program or not. Each process can thus send a message to the application program, even if it is not part of the application program.
Sobald entweder eine Nachfrage nach der Umwandlung oder eine neue Nachfrage nach der BROADCAST-Quelle gemacht worden ist, unterbricht das MSGAST-Blockierprogramm, das von jedem Teil18, 19, 20 des Applikationsprogrammes (siehe101, Fig. 5) spezifiziert worden ist, den jeweiligen Teil18, 19, 20 und führt500 aus. Das Blockierprogramm läuft zu diesem Zeitpunkt, da die EXCLUSIVE-Nachfrage, die von dem neuen Teil gemacht worden ist, inkompatibel mit dem CONCURRENT-READ-Sperrmodus ist, der vorhergehend jedem Teil (siehe102,Fig. 5) gewährt worden ist. Das MSGAST-Programm macht anfänglich eine Nachfrage, um die CONCURRENT-READ-Sperre auf der BROADCAST-Quelle in den NULL-Modus umzuwandeln, der kompatibel mit dem EXCLUSIVE-Sperrmodus ist, der von dem neuen Teil nachgesucht wird.Once either a request for conversion or a new request for the BROADCAST source has been made, the MSGAST blocking program specified by each part18, 19, 20 of the application program (see101, Fig. 5) interrupts the respective part18, 19, 20 and executes500 . The blocking program is running at this time because the EXCLUSIVE request made by the new part is incompatible with the CONCURRENT READ lock mode previously granted to each part (see102 ,Fig. 5). The MSGAST program initially makes a request to convert the CONCURRENT READ lock on the BROADCAST source to NULL mode, which is compatible with the EXCLUSIVE lock mode sought by the new part.
Nachdem die Nachfrage für die Umwandlung gemacht worden ist, verwendet das MSGAST-Programm den $GETLKI-Dienst502 des Sperrmanagers21, um Informationen bezüglich der gewährten EXCLUSIVE-Sperrschlange des BROADCAST-Programms zu erhalten, um zu sehen, ob dem neuen Teil der EXCLUSIVE-Sperrmodus503 gewährt worden ist. Wenn der Lock-Sperrmodus nicht gewährt worden ist, kehrt die Routine in einer Schleife504 zurück, z. B. alle 100 ms zu502, bis der EXCLUSIVE-Sperrmodus gewährt worden ist. Sobald der EXCLUSIVE-Sperrmodus gewährt worden ist, macht das MSGAST-Programm eine Nachfrage, um den NULL-Modus für BROADCAST zurück in den CONCURRENT-READ-Modus505 zu wandlen.After the request for the conversion has been made, the MSGAST program uses the $ GETLKI service502 of the lock manager21 to get information regarding the EXCLUSIVE lock queue granted by the BROADCAST program to see if the new part of the EXCLUSIVE Lock mode503 has been granted. If the lock-lock mode has not been granted, the routine returns in a loop504 , e.g. B. every 100 ms to502 until EXCLUSIVE lock mode has been granted. Once the EXCLUSIVE lock mode has been granted, the MSGAST program makes a request to convert the BROADCAST ZERO mode back to the CONCURRENT READ mode505 .
Inzwischen wartet405 das CLUSTERBROADCAST darauf, daß der EXCLUSIVE-Sperrmodus gewährt wird. Sobald dieser gewährt wird, schreibt das CLUSTERBROADCAST-Programm eine Nachricht407 in den Sperrwertblock, der der BROADCAST-Sperre zugeordnet ist. Wenn der Prozeß, der als CLUSTERBROADCAST-Programm bezeichnet wird, ein neuer Teil ist, wird die Nachricht der Spezial-Bedieneinheit zugeführt und identifiziert den neuen Teil des Applikationsprogrammes.The CLUSTERBROADCAST is now waiting405 for EXCLUSIVE lock mode to be granted. Once granted, the CLUSTERBROADCAST program writes a message407 to the lock value block associated with the BROADCAST lock. If the process, which is referred to as the CLUSTERBROADCAST program, is a new part, the message is fed to the special operating unit and identifies the new part of the application program.
Nach dem Abschließen bzw. Beendigen des Nachrichtenschreibens schaut das CLUSTERBROADCAST-Programm nach, um zu sehen, ob der aufrufende Prozeß eine Sperre BROADCAST vor dem Aufrufen des CLUSTERBROADCAST-Programmes408 hat, d. h., ob der Prozeß ein Teil des Applikationsprogrammes ist und eine Nachfrage bezüglich einer BROADCAST-CONCURRENT-READ-Sperre über das SETUP-Programm gemacht hat oder ob er ein nicht zugeordneter Prozeß ist, der eine Nachricht an das Applikationsprogramm sendet. Wenn der Prozeß anfänglich keine Sperre auf das BROADCAST gehabt hat, entnimmt das CLUSTERBROADCAST-Programm die EXCLUSIVE-Nachfrage409. Wenn der Prozeß eine CONCURRENT-READ-Sperre gehabt hat, macht das CLUSTERBROADCAST-Programm eine Anfrage, um den Sperrmodus von EXCLUSIVE to CONCURRENT READ410 zurückzuverwandeln.After completing the message writing, the CLUSTERBROADCAST program looks to see if the calling process has a BROADCAST lock prior to calling the CLUSTERBROADCAST program408 , that is, whether the process is part of the application program and a query related to it has made a BROADCAST-CONCURRENT-READ lock via the SETUP program or whether it is an unassigned process that sends a message to the application program. If the process did not initially have a lock on the BROADCAST, the CLUSTERBROADCAST program takes EXCLUSIVE request409 . If the process had a CONCURRENT READ lock, the CLUSTERBROADCAST program makes a request to convert the lock mode back from EXCLUSIVE to CONCURRENT READ410 .
Das MSGAST-Programm, das eine Nachfrage gemacht hat, um den Sperrmodus von NULL in CONCURRENT READ505 umzuwandeln, wartet dann auf die Umwandlung506, die nach der CLUSTERBROADCAST-Nachfrage gewährt wird, um EXCLUSIVE409,410 zu entnehmen oder umzuwandeln, bis diese gewährt wird bei507. Das MSGAST-Programm erhält dann und liest dann in508 den Sperrwertblock.The MSGAST program that made a request to convert the lock mode from NULL to CONCURRENT READ505 then waits for the conversion506 granted after the CLUSTERBROADCAST request to extract or convert EXCLUSIVE409 ,410 until it is granted at507 . The MSGAST program then receives and then reads508 the lock value block.
Eine Vereinbarung kann in dem Sperrwertblock eingesetzt werden, um eine Nachricht zu addressieren. Z. B. kann ein Adressenfeld, das in dem Sperrwertblock vorhanden ist, einen Knotennamen angeben, um eine Nachricht für einen bestimmten Teil des Applikationsprogrammes zu spezifizieren. Dann kann ein Sternchen (asterisk) in dem Adressenfeld angeben, daß die Nachricht all den Teilen18, 19, 20 zugeführt wird, und ein Leerzeichen (blank) in dem Adressenfeld kann anzeigen, daß die Nachricht für die Spezial-Bedieneinheit ist. Wenn die Nachricht509 nicht für den Teil18, 19, 20 ist, der durch das MSTAST-Programm unterbrochen worden ist, gibt das MSGAST-Programm die Steuerung an den entsprechenden Teil18, 19, 20 zurück.An agreement can be used in the lock value block to address a message. For example, an address field that is present in the lock value block can specify a node name in order to specify a message for a specific part of the application program. Then an asterisk in the address field can indicate that the message will be delivered to all parts18, 19, 20 , and a space in the address field can indicate that the message is for the special operator. If message509 is not for part18, 19, 20 that was interrupted by the MSTAST program, the MSGAST program returns control to the corresponding part18, 19, 20 .
Wenn die Nachricht für die Spezial-Bedieneinheit ist, d. h. ein Leerzeichen im Adressenfeld des Sperrwertblocks vorhanden ist, schaut das MSGAST-Programm auf das Spezial-Bedieneinheit-Status-Bit in dem gemeinsamen Speicher, und wenn es sieht, daß es gesetzt ist, fährt es damit fort510, die Nachricht zu lesen. Die Nachricht wird die vordefinierte Nachricht sein, die von dem SETUP-Programm gesendet worden ist, was anzeigt, daß ein neuer Programmteil in das Netzwerk eingetreten ist. Das MSGAST-Programm antwortet auf die vordefinierte Nachricht, indem es eine Nachfrage nach einem EXCLUSIVE-Sperrmodus für die SERVERxxx-Quelle entsprechend dem neuen Teil511 macht. Bevor die Nachfrage gemacht wird, kann das MSGAST-Programm jedoch den $GETLKI-Dienst des Sperrmanagers21 benützen, um zu verifizieren, ob eine EXCLUSIVE-Sperrmodus-Nachfrage bezüglich des SERVERxxx bereits von der Spezial-Bedieneinheit gemacht worden ist. Das wird auftreten, wenn der neue Teil tatsächlich das Netzwerk kurz nach der Spezial-Bedieneinheit betreten hat, z. B. mit den Teilen19, 20, und die entsprechende Nachfrage nach SPECIAL-IN-EXCLUSIVE in der REQUEST-FOR-SPECIAL-IN-EXCLUSIVE-WAITING-Schlange war, während das SPECIALAST-Programm gelaufen ist. Nach dem Verifizieren und Ausführen der Nachfrage nach EXCLUSIVE bezüglich der SERVERxxx-Quelle entsprechend dem neuen Teil gibt das MSGAST-Programm die Steuerung an die Spezial-Bedieneinheit (Teil 18)512 zurück.If the message is for the special operator, that is, there is a space in the address field of the lockout block, the MSGAST program looks at the special operator status bit in the shared memory and if it sees that it is set, drives so read it continued510 the message. The message will be the predefined message sent by the SETUP program, indicating that a new part of the program has entered the network. The MSGAST program responds to the predefined message by making a request for an EXCLUSIVE lock mode for the SERVERxxx source according to the new part511 . Before the request is made, however, the MSGAST program can use the $ GETLKI service of the lock manager21 to verify whether an EXCLUSIVE lock mode request regarding the SERVERxxx has already been made by the special control unit. This will occur when the new part has actually entered the network shortly after the special control unit, e.g. B. with parts19, 20, and the corresponding demand for SPECIAL-IN-EXCLUSIVE was in the REQUEST-FOR-SPECIAL-IN-EXCLUSIVE-WAITING queue while the SPECIALAST program was running. After verifying and executing the EXCLUSIVE request for the SERVERxxx source corresponding to the new part, the MSGAST program returns control to the special control unit (part 18)512 .
Inzwischen schließt das CLUSTERBROADCAST-Programm ab, indem es $GETLKI für den BROADCAST NULL-Modus411 aufruft. Das CLUSTER-BROADCAST-Programm überprüft dann, um zu sehen, ob irgendeiner der anderen Prozesse noch in dem NULL-Modus412 ist, d. h., daß die Nachfrage zum Umwandeln noch nicht gewährt worden ist (505, 506)413. Wenn eine der Nachfragen noch nicht gewährt worden ist, kehrt das CLUSTERBROADCAST-Programm in einer Schleife414 zurück zu dem $GETLKI-Befehl411, z. B. alle 100ms, bis es keinen Teil mehr gibt, der noch auf eine Umwandlung vom NULL-Modus in den CONCURRENT-READ-Modus wartet. Zu diesem Zeitpunkt415 entnimmt das CLUSTERBROADCAST-Programm den PERMISSIONTOTALK-EXCLUSIVE-Sperrmodus416 und gibt die Steuerung an den neuen Teil417 zurück.Meanwhile, the CLUSTERBROADCAST program ends by calling $ GETLKI for BROADCAST NULL mode411 . The CLUSTER BROADCAST program then checks to see if any of the other processes are still in NULL mode412 , that is, the demand to convert has not yet been granted (505, 506 )413 . If one of the requests has not yet been granted, the CLUSTERBROADCAST program loops414 back to the $ GETLKI instruction411 , e.g. B. every 100ms until there is no longer any part waiting to be converted from NULL mode to CONCURRENT READ mode. At this time415, the CLUSTERBROADCAST program takes the PERMISSIONTOTALK-EXCLUSIVE lock mode416 and returns control to the new part417 .
Somit stellt das CLUSTERBROADCAST-Programm sicher, und zwar über die EXCLUSIVE-Sperre bezüglich der PERMISSIONTOTALK-Quelle400 und durch die Warteschleife414,504, daß die Nachricht, die in den Sperrwertblock eingeschrieben worden ist, von dem zuständigen Teil des Applikationsprogrammes empfangen wird, z. B. der Spezial-Bedieneinheit. Die PERMISSIONTOTALK-Quelle bestellt Nachrichten, da nur ein einziger Prozeß zu einem Zeitpunkt eine Nachricht wegen dem EXCLUSIVE-Sperrerfordernis für die PERMISSIONTOTALK-Quelle senden kann. Alle anderen Prozesse, die eine Nachricht zur gleichen Zeit senden wollen, werden in einer Warteschlange für die EXCLUSIVE-Sperre bezüglich der PERMISSIONTOTALK-Quelle plaziert. Die Nachfragen werden nacheinander gewährt, und zwar immer eine zu einem Zeitpunkt, und so, daß die zuerstgekommene auch zuerst bedient wird, bis jede Nachricht gesendet worden ist.Thus, the CLUSTERBROADCAST program ensures, via the EXCLUSIVE lock with respect to the PERMISSION TOTALK source400 and through the queue414 ,504 , that the message which has been written into the lock value block is received by the responsible part of the application program , e.g. B. the special control unit. The PERMISSIONTOTALK source orders messages because only one process can send a message at a time because of the EXCLUSIVE lock requirement for the PERMISSION TOTALK source. All other processes that want to send a message at the same time are placed in a queue for the EXCLUSIVE lock on the PERMISSIONTOTALK source. The requests are granted sequentially, one at a time, so that the first to come is served first until each message has been sent.
Desweiteren kann das CLUSTERBROADCAST-Programm verwendet werden, um die Spezial-Bedieneinheit zu unterrichten, wenn ein Teil das Netzwerk vor dem Rest der Teile des Applikationsprogrammes verlassen will. Um ein Verlassen des Übertragungsnetzwerkes durchzuführen, müßte der Applikationsprogrammentwickler einen CLUSTERBROADCAST-Aufrufbefehl in den Teil, der das Netzwerk verlassen will, einfügen, um eine Nachricht der Spezial-Bedieneinheit zuzusenden, um z. B. die EXCLUSIVE-Nachfrage für den SERVERxxx entsprechend dem abgehenden Teil zu entnehmen.The CLUSTERBROADCAST program can also be usedto teach the special control unit whenpart of the network before the rest of the parts of the application programwants to leave. To leave the transmission networkthe application program developer would have to carry outa CLUSTERBROADCAST call to theInsert part that wants to leave the network to aSend message to the special control unit to e.g. B. theEXCLUSIVE demand for the SERVERxxx according to the outgoingTake part.
Das CLUSTERBROADCAST-Programm kann auch von dem SPECIALAST-Programm eingesetzt werden, um eine Nachricht anderen Teilen19, 20 des Applikationsprogrammes einzuschreiben, um anzuzeigen, daß es die Spezial-Bedieneinheit ist. Das ist eine andere vordefinierte Nachricht, die ein Sternchen (asterisk) (Nachricht für alle Teile) verwendet, das jedes MSGAST-Programm veranlaßt, die Identifizierung der Spezial-Bedieneinheit in die jeweiligen gemeinsamen Speicherräume einzuschreiben.The CLUSTERBROADCAST program can also be used by the SPECIAL AST program to write a message to other parts19, 20 of the application program to indicate that it is the special control unit. This is another predefined message that uses an asterisk (message for all parts) that causes each MSGAST program to write the identification of the special control unit into the respective common memory spaces.
Im Falle, daß die CPU, auf der die Spezial-Bedieneinheit (Teil 18 in unserem Beispiel) läuft, ausfallen sollte, entfernt der Sperrmanager21 die EXCLUSIVE-Sperre bezüglich SPECIAL, die von der Spezial-Bedieneinheit gehalten wird, und gewährt die EXCLUSIVE-Sperre dem ersten Teil19, 20 in der REQUEST-FOR-SPECIAL-IN-EXCLUSIVE-WAITING-Schlange. Das SPECIAL-AST-Abschlußprogramm unterbricht dann den Teil19,20, dem die EXCLUSIVE-Sperre gewährt worden ist, und läuft ab, wie es obenstehend beschrieben worden ist, um die umgekehrten Verbindungen zwischen der neuen Spezial-Bedieneinheit und den verbleibenden Teilen des Applikationsprogrammes zu bilden. Das SPECIALAST-Programm kann auch das CLUSTERBROADCAST-Programm aufrufen, um eine Nachricht jedem der verbleibenden Teile zuzusenden, um anzuzeigen, daß es nun die Spezial-Bedieneinheit für die Aktualisierung des jeweiligen gemeinsamen Speicherraumes ist. Zusätzlich kann SPECIALAST in dem gemeinsamen Speicherraum für den zugeordneten Teil, der jetzt die Spezial-Einheit ist, nachschauen, um zu sehen, ob er Informationen bezüglich einer vorhergehenden Spezial-Bedieneinheit hat, d. h. eine Nachricht von einer vorhergehenden Spezial-Bedieneinheit, wie oben erläutert. Wenn der gemeinsame Speicherraum für die neue Spezial-Bedieneinheit hat, zeigt dies der SPECIALAST an, daß es eine vorhergehende Spezial-Bedieneinheit gegeben hat und zeigt somit auch einen Fehler an. Das SPECIALAST würde dann ein Programm aufrufen, das die Ausfallinformationen auswertet, wie es von dem FAILAST gemacht wird.In the event that the CPU on which the special control unit runs (part 18 in our example) should fail, the lock manager21 removes the EXCLUSIVE lock on SPECIAL, which is held by the special control unit, and grants the EXCLUSIVE Lock the first part19, 20 in the REQUEST-FOR-SPECIAL-IN-EXCLUSIVE-WAITING queue. The SPECIAL-AST termination program then interrupts part19 ,20 to which the EXCLUSIVE lock has been granted and runs, as described above, for the reverse connections between the new special control unit and the remaining parts of the application program to build. The SPECIALAST program can also call the CLUSTER BROADCAST program to send a message to each of the remaining parts to indicate that it is now the special control unit for updating the respective common memory space. In addition, SPECIALAST can look in the shared memory space for the assigned part, which is now the special unit, to see if it has information regarding a previous special control unit, ie a message from a previous special control unit, as explained above . If the common storage space for the new special control unit has, this indicates to the SPECIALAST that there was a previous special control unit and thus also indicates an error. The SPECIALAST would then call a program that evaluates the failure information as done by the FAILAST.
Ein Applikationsprogrammentwickler kann auch einen bestimmten Teil18, 19, 20 spezifizieren, daß er die Spezial-Bedieneinheit ist, und zwar durch den Einsatz einer anderen vordefinierten Nachricht. Der Applikationsprogrammentwickler kann die vordefinierte Nachricht jedem Teil18, 19, 20 des Applikationsprogrammes zusenden, indem er CLUSTERBROADCAST aufruft. Die vordefinierte Nachricht spezifiziert, welcher Teil die Spezial-Bedieneinheit sein soll, und die MSGASTs agieren, die spezifizierte Spezial-Bedieneinheit zu implementieren, wie folgt.An application program developer can also specify a particular part18, 19, 20 to be the special control unit by using another predefined message. The application program developer can send the predefined message to each part18, 19, 20 of the application program by calling CLUSTER BROADCAST. The predefined message specifies which part the special control unit should be and the MSGASTs act to implement the specified special control unit as follows.
Wenn der Teil18, 19, 20, der auf der CPU11, 12, 13 läuft, wo das MSGAST untergebracht ist, entweder die Spezial-Bedieneinheit oder die Spezial-Bedieneinheit nicht ist, aber die Spezial-Bedieneinheit sein sollte, geben die MSGASTs einfach die Steuerung an den Teil zurück.If the part18, 19, 20 that runs on the CPU11, 12, 13 where the MSGAST is housed is not either the special control unit or the special control unit but should be the special control unit, the MSGASTs give simply control back to the part.
Wenn der Teil die Spezial-Bedieneinheit ist und nicht die Spezial-Bedieneinheit sein soll, entnimmt die MSGAST die EXCLUSIVE-Sperre bezüglich der SPECIAL-Quelle und entnimmt alle Sperren für die SERVERxxx-Quellen. Das MSGAST wird dann noch einmal eine Sperre in EXCLUSIVE bezüglich der SPECIAL-Quelle nachfragen und dann aussteigen.If the part is the special control unit and not theThe MSGAST takes the special control unitEXCLUSIVE lock on the SPECIAL source and removesall locks for the SERVERxxx sources. The MSGAST willthen again a block in EXCLUSIVE regarding theAsk for the SPECIAL source and then get out.
Wenn der Teil nicht die Spezial-Bedieneinheit ist und auch nicht der Teil ist, der von dem Applikationsprogrammentwickler vorgesehen ist, die Spezial-Bedieneinheit zu sein, wird die MSGAST die Nachfrage für SPECIAL-IN-EXCLUSIVE entnehmen und dann erneut eine Nachfrage für SPECIAL-IN-EXCLUSIVE in die Warteschlange einreihen, bevor die Steuerung an diesen Teil zurückgegeben wird.If the part is not the special control unit and alsois not the part developed by the application program developeris intended to be the special control unit,MSGAST will meet the demand for SPECIAL-IN-EXCLUSIVEremove and then again a request for SPECIAL-IN-Queue EXCLUSIVE before the controlleris returned to this part.
Die Freigabe der Sperrnachfrage nach SPECIAL durch jeden der Teile18, 19, 20, die nicht der Spezial-Bedieneinheit entsprechen, überläßt es dem einen Teil , der von dem Applikationsentwickler bestimmt worden ist, entweder bereits die EXCLUSIVE-Sperre für die SPECIAL-Quelle zu halten oder alleine in der Warteschlange mit keiner Nachfrage in der gewährten Schlange zu sein. Im Fall des letzteren wird der Sperrmanager21 die EXCLUSIVE-Sperre für den Teil18, 19,20, der vom Applikationsentwickler bestimmt worden ist, dann gewähren. Das Ausführen einer Nachfrage bezüglich SPECIAL-IN-EXCLUSIVE bei den anderen Teilen18, 19, 20, nachdem alle Sperrnachfragen für SPECIAL freigegeben worden sind, findet statt, nachdem der Teil18, 19, 20 der vom Applikationsentwickler bestimmt worden ist, die EXCLUSIVE- Sperre für SPECIAL erhalten hat. Somit werden die anderen Teile in der REQUEST-FOR-SPECIAL-IN-EXCLUSIVE-WAITING-Schlange plaziert.The release of the lock request for SPECIAL by each of the parts18, 19, 20 that do not correspond to the special control unit either leaves the EXCLUSIVE lock for the SPECIAL source to the one part that has been determined by the application developer hold or be alone in the queue with no demand in the granted queue. In the case of the latter, the lock manager21 will then grant the EXCLUSIVE lock for the part18, 19,20 which has been determined by the application developer. A request for SPECIAL-IN-EXCLUSIVE to the other parts18, 19, 20 , after all blocking requests for SPECIAL have been released, takes place after the part18, 19, 20 which has been determined by the application developer, the EXCLUSIVE- Has received lock on SPECIAL. This places the other parts in the REQUEST-FOR-SPECIAL-IN-EXCLUSIVE-WAITING queue.
| Application Number | Priority Date | Filing Date | Title | 
|---|---|---|---|
| US07/424,903US5117352A (en) | 1989-10-20 | 1989-10-20 | Mechanism for fail-over notification | 
| Publication Number | Publication Date | 
|---|---|
| DE4033336A1true DE4033336A1 (en) | 1991-04-25 | 
| Application Number | Title | Priority Date | Filing Date | 
|---|---|---|---|
| DE4033336ACeasedDE4033336A1 (en) | 1989-10-20 | 1990-10-19 | METHOD FOR GENERATING A FAILURE MESSAGE AND MECHANISM FOR FAILURE MESSAGE | 
| Country | Link | 
|---|---|
| US (1) | US5117352A (en) | 
| JP (1) | JPH03194647A (en) | 
| DE (1) | DE4033336A1 (en) | 
| FR (1) | FR2655168A1 (en) | 
| GB (1) | GB2237130B (en) | 
| Publication number | Priority date | Publication date | Assignee | Title | 
|---|---|---|---|---|
| SE500940C2 (en)* | 1993-02-10 | 1994-10-03 | Ellemtel Utvecklings Ab | Methods and systems for dismantling a chain of linked processes in a distributed operating system | 
| JPH06274354A (en)* | 1993-03-12 | 1994-09-30 | Internatl Business Mach Corp <Ibm> | Method and system for control of operation of destructive hardware | 
| US5408649A (en)* | 1993-04-30 | 1995-04-18 | Quotron Systems, Inc. | Distributed data access system including a plurality of database access processors with one-for-N redundancy | 
| WO1995023372A1 (en)* | 1994-02-28 | 1995-08-31 | Teleflex Information Systems, Inc. | Method and apparatus for processing discrete billing events | 
| US7412707B2 (en)* | 1994-02-28 | 2008-08-12 | Peters Michael S | No-reset option in a batch billing system | 
| US6658488B2 (en) | 1994-02-28 | 2003-12-02 | Teleflex Information Systems, Inc. | No-reset option in a batch billing system | 
| US5668993A (en) | 1994-02-28 | 1997-09-16 | Teleflex Information Systems, Inc. | Multithreaded batch processing system | 
| US5999916A (en)* | 1994-02-28 | 1999-12-07 | Teleflex Information Systems, Inc. | No-reset option in a batch billing system | 
| US6708226B2 (en) | 1994-02-28 | 2004-03-16 | At&T Wireless Services, Inc. | Multithreaded batch processing system | 
| US5566297A (en)* | 1994-06-16 | 1996-10-15 | International Business Machines Corporation | Non-disruptive recovery from file server failure in a highly available file system for clustered computing environments | 
| US5740359A (en)* | 1994-12-27 | 1998-04-14 | Kabushiki Kaisha Toshiba | Program execution system having a plurality of program versions | 
| US5745747A (en)* | 1995-02-06 | 1998-04-28 | International Business Machines Corporation | Method and system of lock request management in a data processing system having multiple processes per transaction | 
| US5699500A (en)* | 1995-06-01 | 1997-12-16 | Ncr Corporation | Reliable datagram service provider for fast messaging in a clustered environment | 
| US5612865A (en)* | 1995-06-01 | 1997-03-18 | Ncr Corporation | Dynamic hashing method for optimal distribution of locks within a clustered system | 
| US5594861A (en)* | 1995-08-18 | 1997-01-14 | Telefonaktiebolaget L M Ericsson | Method and apparatus for handling processing errors in telecommunications exchanges | 
| US5682537A (en)* | 1995-08-31 | 1997-10-28 | Unisys Corporation | Object lock management system with improved local lock management and global deadlock detection in a parallel data processing system | 
| US5748884A (en)* | 1996-06-13 | 1998-05-05 | Mci Corporation | Autonotification system for notifying recipients of detected events in a network environment | 
| US6574654B1 (en)* | 1996-06-24 | 2003-06-03 | Oracle Corporation | Method and apparatus for lock caching | 
| US5968157A (en)* | 1997-01-23 | 1999-10-19 | Sun Microsystems, Inc. | Locking of computer resources | 
| US5923840A (en)* | 1997-04-08 | 1999-07-13 | International Business Machines Corporation | Method of reporting errors by a hardware element of a distributed computer system | 
| US5968189A (en)* | 1997-04-08 | 1999-10-19 | International Business Machines Corporation | System of reporting errors by a hardware element of a distributed computer system | 
| US5996086A (en)* | 1997-10-14 | 1999-11-30 | Lsi Logic Corporation | Context-based failover architecture for redundant servers | 
| US6178529B1 (en) | 1997-11-03 | 2001-01-23 | Microsoft Corporation | Method and system for resource monitoring of disparate resources in a server cluster | 
| US6449734B1 (en) | 1998-04-17 | 2002-09-10 | Microsoft Corporation | Method and system for discarding locally committed transactions to ensure consistency in a server cluster | 
| US6360331B2 (en) | 1998-04-17 | 2002-03-19 | Microsoft Corporation | Method and system for transparently failing over application configuration information in a server cluster | 
| US6243825B1 (en)* | 1998-04-17 | 2001-06-05 | Microsoft Corporation | Method and system for transparently failing over a computer name in a server cluster | 
| US6230230B1 (en)* | 1998-12-03 | 2001-05-08 | Sun Microsystems, Inc. | Elimination of traps and atomics in thread synchronization | 
| US7444374B1 (en)* | 1998-12-10 | 2008-10-28 | Michelle Baker | Electronic mail software with modular integrated authoring/reading software components including methods and apparatus for controlling the interactivity between mail authors and recipients | 
| US6442713B1 (en) | 1999-03-30 | 2002-08-27 | International Business Machines Corporation | Cluster node distress signal | 
| US6412034B1 (en)* | 1999-04-16 | 2002-06-25 | Oracle Corporation | Transaction-based locking approach | 
| US6523078B1 (en) | 1999-11-23 | 2003-02-18 | Steeleye Technology, Inc. | Distributed locking system and method for a clustered system having a distributed system for storing cluster configuration information | 
| US6745383B1 (en)* | 1999-12-29 | 2004-06-01 | Veritas Operating Corporation | Early warning mechanism for enhancing enterprise availability | 
| US7058667B2 (en) | 2000-12-27 | 2006-06-06 | Microsoft Corporation | Method and system for creating and maintaining version-specific properties in a file | 
| US6959337B2 (en)* | 2001-04-23 | 2005-10-25 | Hewlett-Packard Development Company, L.P. | Networked system for assuring synchronous access to critical facilities | 
| US20030005350A1 (en)* | 2001-06-29 | 2003-01-02 | Maarten Koning | Failover management system | 
| US7406519B2 (en)* | 2001-11-13 | 2008-07-29 | Microsoft Corporation | Method and system for locking resources in a distributed environment | 
| US7028300B2 (en)* | 2001-11-13 | 2006-04-11 | Microsoft Corporation | Method and system for managing resources in a distributed environment that has an associated object | 
| US6748470B2 (en)* | 2001-11-13 | 2004-06-08 | Microsoft Corporation | Method and system for locking multiple resources in a distributed environment | 
| US20030105871A1 (en)* | 2001-11-13 | 2003-06-05 | Microsoft Corporation, | Method and system for modifying lock properties in a distributed environment | 
| US6934880B2 (en)* | 2001-11-21 | 2005-08-23 | Exanet, Inc. | Functional fail-over apparatus and method of operation thereof | 
| KR100934138B1 (en)* | 2002-05-06 | 2009-12-29 | 퀄컴 인코포레이티드 | System and method for registering IP address of wireless communication device | 
| US7302692B2 (en)* | 2002-05-31 | 2007-11-27 | International Business Machines Corporation | Locally providing globally consistent information to communications layers | 
| JP4667739B2 (en)* | 2003-12-05 | 2011-04-13 | 株式会社バッファロー | Encryption key setting system, access point, wireless LAN terminal, and encryption key setting method | 
| US20050289143A1 (en) | 2004-06-23 | 2005-12-29 | Exanet Ltd. | Method for managing lock resources in a distributed storage system | 
| US8898246B2 (en)* | 2004-07-29 | 2014-11-25 | Hewlett-Packard Development Company, L.P. | Communication among partitioned devices | 
| US7165541B2 (en)* | 2004-11-18 | 2007-01-23 | General Motors Corporation | Protruding oil separation baffle holes | 
| US20060123003A1 (en)* | 2004-12-08 | 2006-06-08 | International Business Machines Corporation | Method, system and program for enabling non-self actuated database transactions to lock onto a database component | 
| US7735089B2 (en)* | 2005-03-08 | 2010-06-08 | Oracle International Corporation | Method and system for deadlock detection in a distributed environment | 
| US8010608B2 (en)* | 2005-06-07 | 2011-08-30 | Microsoft Corporation | Locked receive locations | 
| US7613742B2 (en)* | 2006-05-02 | 2009-11-03 | Mypoints.Com Inc. | System and method for providing three-way failover for a transactional database | 
| US8533331B1 (en)* | 2007-02-05 | 2013-09-10 | Symantec Corporation | Method and apparatus for preventing concurrency violation among resources | 
| US8068114B2 (en)* | 2007-04-30 | 2011-11-29 | Advanced Micro Devices, Inc. | Mechanism for granting controlled access to a shared resource | 
| US8229961B2 (en) | 2010-05-05 | 2012-07-24 | Red Hat, Inc. | Management of latency and throughput in a cluster file system | 
| US9389926B2 (en) | 2010-05-05 | 2016-07-12 | Red Hat, Inc. | Distributed resource contention detection | 
| US9081653B2 (en) | 2011-11-16 | 2015-07-14 | Flextronics Ap, Llc | Duplicated processing in vehicles | 
| Publication number | Priority date | Publication date | Assignee | Title | 
|---|---|---|---|---|
| US4399504A (en)* | 1980-10-06 | 1983-08-16 | International Business Machines Corporation | Method and means for the sharing of data resources in a multiprocessing, multiprogramming environment | 
| US4480304A (en)* | 1980-10-06 | 1984-10-30 | International Business Machines Corporation | Method and means for the retention of locks across system, subsystem, and communication failures in a multiprocessing, multiprogramming, shared data environment | 
| US5023779A (en)* | 1982-09-21 | 1991-06-11 | Xerox Corporation | Distributed processing environment fault isolation | 
| JPS60191536A (en)* | 1984-03-13 | 1985-09-30 | Nec Corp | Data processing unit fault informing system | 
| US4646298A (en)* | 1984-05-01 | 1987-02-24 | Texas Instruments Incorporated | Self testing data processing system with system test master arbitration | 
| US4665520A (en)* | 1985-02-01 | 1987-05-12 | International Business Machines Corporation | Optimistic recovery in a distributed processing system | 
| US4803683A (en)* | 1985-08-30 | 1989-02-07 | Hitachi, Ltd. | Method and apparatus for testing a distributed computer system | 
| JPS62197858A (en)* | 1986-02-26 | 1987-09-01 | Hitachi Ltd | Inter-system database sharing method | 
| US4768150A (en)* | 1986-09-17 | 1988-08-30 | International Business Machines Corporation | Application program interface to networking functions | 
| US4815076A (en)* | 1987-02-17 | 1989-03-21 | Schlumberger Technology Corporation | Reconfiguration advisor | 
| US4827411A (en)* | 1987-06-15 | 1989-05-02 | International Business Machines Corporation | Method of maintaining a topology database | 
| US4965719A (en)* | 1988-02-16 | 1990-10-23 | International Business Machines Corporation | Method for lock management, page coherency, and asynchronous writing of changed pages to shared external store in a distributed computing system | 
| Title | 
|---|
| CHU Wesley W. et al, Testbed-Based Validation of Design Techniques for Reliable Distributed Real- Time Systems, in: Proceedings of the IEEEE, Vol. 75, No. 5, Mai 1987, S. 649-667* | 
| Publication number | Publication date | 
|---|---|
| GB9021576D0 (en) | 1990-11-21 | 
| GB2237130A (en) | 1991-04-24 | 
| JPH03194647A (en) | 1991-08-26 | 
| FR2655168A1 (en) | 1991-05-31 | 
| GB2237130B (en) | 1994-01-26 | 
| US5117352A (en) | 1992-05-26 | 
| Publication | Publication Date | Title | 
|---|---|---|
| DE4033336A1 (en) | METHOD FOR GENERATING A FAILURE MESSAGE AND MECHANISM FOR FAILURE MESSAGE | |
| DE69806914T2 (en) | AGENT IMPLEMENTED LOCKING DEVICE | |
| EP0635792B1 (en) | Coordination method for parallel access to resource configurations by a plurality of processors | |
| DE3879947T2 (en) | DISTRIBUTED FILE SERVER ARCHITECTURE. | |
| DE69432332T2 (en) | Method and device for converting transmitted digital data | |
| DE69403192T2 (en) | DEVICE AND METHOD FOR THE DATA BACKUP OF STORAGE UNITS IN A COMPUTER NETWORK | |
| DE69131500T2 (en) | Rule-driven transaction management system and procedure | |
| DE3689664T2 (en) | Method and device for managing obsolete data objects. | |
| DE69702169T2 (en) | Authorization to separate writing in a user / provider computer arrangement | |
| DE69129678T2 (en) | Process and system for consistent time setting in distributed computer databases | |
| DE3751446T2 (en) | Multiprocessor memory operating method and device. | |
| DE60220287T2 (en) | SYSTEM AND METHOD FOR MONITORING SOFTWARE SERVICE SOFTWARE APPLICATIONS | |
| DE3854837T2 (en) | Device for a data processing system with an equal relationship between a plurality of central data processing units | |
| DE3688893T2 (en) | Data transfer and buffer control with multiple process-transparent storage modes. | |
| DE19708021C1 (en) | Method for regulating access by computers to data on a central computer | |
| DE68919975T2 (en) | Process for the simultaneous management of a distributed user program in a host computer and in a large number of intelligent user stations in an SNA network. | |
| DE69429686T2 (en) | Transaction management in an object-oriented system | |
| EP0525432B1 (en) | Method of changing system configuration data in a telecommunications exchange system | |
| DE4497149B4 (en) | Computer-based method for data replication in peer-to-peer environment | |
| DE68924061T2 (en) | Version control in a data processing system. | |
| DE69227741T2 (en) | System and method for upgrading computer hardware and software | |
| DE3611223A1 (en) | METHOD AND DEVICE FOR PREVENTING BLOCKING IN A DATABASE MANAGEMENT SYSTEM | |
| DE69225671T2 (en) | Semaphore mechanism for data processing system | |
| DE4420451C2 (en) | Lock mechanism for a CHECK-IN / CHECK-OUT model | |
| DE69937715T2 (en) | Improved two-phase binding protocol | 
| Date | Code | Title | Description | 
|---|---|---|---|
| OP8 | Request for examination as to paragraph 44 patent law | ||
| 8131 | Rejection |