DE3688657T2 - Methode zur Lokalisierung von Prozessen in einem verteilten Datenverarbeitungssystem. - Google Patents
Methode zur Lokalisierung von Prozessen in einem verteilten Datenverarbeitungssystem.Info
- Publication number
- DE3688657T2 DE3688657T2 DE86106066T DE3688657T DE3688657T2 DE 3688657 T2 DE3688657 T2 DE 3688657T2 DE 86106066 T DE86106066 T DE 86106066T DE 3688657 T DE3688657 T DE 3688657T DE 3688657 T2 DE3688657 T2 DE 3688657T2
- Authority
- DE
- Germany
- Prior art keywords
- cell
- message
- processes
- context
- name
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 335
- 230000008569 process Effects 0.000 title claims description 315
- 238000012545 processing Methods 0.000 title claims description 25
- 210000004027 cell Anatomy 0.000 description 139
- 230000015654 memory Effects 0.000 description 16
- 238000012546 transfer Methods 0.000 description 16
- 230000005540 biological transmission Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 5
- 230000000644 propagated effect Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000003860 storage Methods 0.000 description 4
- 101100048435 Caenorhabditis elegans unc-18 gene Proteins 0.000 description 2
- 238000013523 data management Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000001824 photoionisation detection Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/418—Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM]
- G05B19/41845—Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM] characterised by system universality, reconfigurability, modularity
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/418—Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM]
- G05B19/4185—Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM] characterised by the network communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17337—Direct connection machines, e.g. completely connected computers, point to point communication networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/33—Director till display
- G05B2219/33125—System configuration, reconfiguration, customization, automatic
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/34—Director, elements to supervisory
- G05B2219/34345—Database for sequential control of several machines by messages
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Automation & Control Theory (AREA)
- Manufacturing & Machinery (AREA)
- Mathematical Physics (AREA)
- Computer And Data Communications (AREA)
- Multi Processors (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
- Diese Erfindung betrifft digitale Datenverarbeitung im allgemeinen und im besonderen einen Netzwerk-Schnittstellenmodul (NIM) in einem verteilten Datenverarbeitungssystem, bei dem der NIM Einrichtungen zur Erleichterung der Nachrichtenübertragung zwischen Prozessen, die auf verschiedenen Zellen im Netzwerk resident sind, umfaßt, und bei dem der NIM Verfahren verwendet, die eine Nachrichtenübertragung zwischen Prozessen auf verschiedenen Zellen im Netzwerk erleichtert.
- Die vorliegende Erfindung wird in einem verteilten Datenverarbeitungssystem, das sind zwei oder mehr Datenverarbeitungssysteme, die unabhängig arbeiten können, aber so verbunden sind, daß sie Nachrichten untereinander austauschen können, implementiert.
- Ein lokales Netzwerk (LAN) ist ein Beispiel eines verteilten Datenverarbeitungssystems. Ein typisches LAN umfaßt eine Anzahl autonomer Datenverarbeitungszellen, wobei jede wenigstens aus einem Prozessor und Speicher besteht. Jede Zelle ist in der Lage, Datenverarbeitungsfunktionen unabhängig durchzuführen. Außerdem ist jede Zelle (durch geeignete Einrichtungen, wie verdrillte Adernpaare, Koaxialkabel, faseroptische Kabel usw.) mit einem Netzwerk anderer Zellen, zum Beispiel einer Schleife, einem Stern, einem Baum usw., abhängig von den Konfigurationsüberlegungen, verbunden.
- Wie oben erwähnt, erfährt die vorliegende Erfindung Nutzen in einem solchen verteilten Datenverarbeitungssystem, da in einem derartigen System ein erheblicher Bedarf für einen relativ hohes Maß an Hardwareunabhängigkeit besteht. Typische verteilte Datenverarbeitungssysteme umfassen eine große Vielfalt verschiedener Prozessoren, Speicher, Operatorschnittstellen, Drucker und anderer Peripheriegeräte. Folglich besteht ein dringender Bedarf, ein Betriebssystem für solch ein verteiltes Datenverarbeitungssystem bereitzustellen, wobei dieses Betriebssystem verschiedene Arten von Hardwareeinrichtungen ohne die Notwendigkeit, jedesmal, wenn ein Gerät hinzugefügt oder von dem System entfernt wird, große Teile eines solchen Betriebssystems zu schreiben und/oder zu überarbeiten, leicht anpassen wird.
- Europäische Patentanmeldung EP-A-0074864 und Seite 193-200 der > Conference Proceedings of the 4th Annual Symposium on Computer-Architecture< , Long Beach, 23.-25. März 1977, IEEE, New York, US, legen Verfahren offen, wie sie in den Oberbegriffen der Ansprüche 1 und 2 spezifiziert sind. Bei diesem herkömmlichen Verfahren wird eine Nachricht zum Lokalisieren mit Namen angesprochener Prozesse an alle Netzwerkzellen gesendet. Wenn der angefragte Prozeß nicht gefunden wird, erfährt die initiierende Zelle niemals, ob alle anderen Zellen auf die Anwesenheit des gesuchten Prozesses überprüft wurden.
- Ein > Prozeß< , wie innerhalb der vorliegenden Erfindung verwendet, ist als ein in sich geschlossenes Paket von Daten und ausführbaren Prozeduren, die auf diesen Daten arbeiten, definiert, vergleichbar einer "Task" in anderen bekannten Systemen. Innerhalb der vorliegenden Erfindung kann man sich den Prozeß hinsichtlich Größe, Komplexität und der Art, wie er benutzt wird, als mit einer Subroutine vergleichbar vorstellen. Der Unterschied zwischen Prozessen und Subroutinen besteht darin, daß Prozesse dynamisch erzeugt und zerstört werden können und gleichzeitig mit ihrem Erzeuger oder anderen "Subroutinen" ablaufen können.
- Innerhalb eines Prozesses, wie in der vorliegenden Erfindung verwendet, sind die Daten vollig abgeschlossen und können nicht von außen, z. B. von anderen Prozessen, zugegriffen werden. Prozesse können daher benutzt werden, um "Objektmodule" oder andere Datenabstraktionen höheren Niveaus zu implementieren. Jeder Prozeß läuft sequentiell ab. Nebenläufigkeit wird durch Mehrfachprozesse, die möglicherweise auf Multiprozessoren ablaufen, erreicht.
- Jeder Prozeß in dem verteilten Datenverarbeitungssystem der vorliegenden Erfindung hat einen eindeutigen Identifikator (PID), mit dem auf ihn verwiesen wird. Der PID wird durch das System erteilt, wenn der Prozeß kreiert wird, und wird von dem System verwendet, um den Prozeß physisch zu lokalisieren.
- Jeder Prozeß hat auch einen nicht-eindeutigen symbolischen "Namen", der eine Zeichenfolge variabler Länge ist. Im allgemeinen ist der Name systemweit bekannt. Um den Umfang von Namen einzuschränken, benutzt die vorliegende Erfindung das Konzept eines "Kontexts".
- Ein "Kontext" ist einfach eine Sammlung verwandter Prozesse, deren Namen außerhalb des Kontexts nicht bekannt sind. Kontexte teilen den Namensraum in kleinere, leichter zu handhabende Subsysteme auf. Ferner "verstecken" sie Namen, um sicherzustellen, daß in diesen enthaltene Prozesse nicht unbeabsichtigt mit solchen in anderen Kontexten kollidieren.
- Ein Prozeß in einem Kontext kann nicht explizit mit Prozessen innerhalb anderer Kontexte kommunizieren und hat keine Kenntnis von diesen. Jedes Zusammenwirken über Kontextgrenzen hinweg muß durch einen "Kontextprozeß" erfolgen, um so ein Maß an Sicherheit zu bieten. Der Kontextprozeß" wirkt oft als Verteiler für eingehende Nachrichten, indem er sie an die richtigen Subprozesse in seinem Kontext umleitet.
- Ein Kontextprozeß verhält sich wie jeder andere Prozeß und hat zusätzlich die Eigenschaft, daß beliebige Prozesse, die er kreiert, nur ihm und einander bekannt sind. Das Erzeugen des Prozesses bildet die Definition eines neuen Kontexts mit dem gleichen Namen wie der Prozeß.
- Jeder Prozeß kann Kontextprozesse erzeugen. Jeder so definierte neue Kontext ist vollständig in dem Kontext enthalten, in dem er kreiert wurde, und daher von äußerer Bezugnahme abgeschirmt. Diese "Verschachtelung" erlaubt es, den Namensraum bis zu einer beliebigen Tiefe hierarchisch zu strukturieren.
- Begrifflich ist die höchste Stufe in der Hierarchie das System selbst, das alle Kontexte einschließt. Verschachtelung wird beim Top-down-Entwurf verwendet, um das System in Komponenten oder "Schichten" aufzubrechen, worin jede Schicht detaillierter ist als die Vorangehende. Dies ist analog zum Aufbrechen einer Task in Subroutinen, und in der Tat können viele Anwendungen, die auf bekannten Systemen Einzeltasks sind, sich in verschachtelten Kontexten in Mehrfachprozesse umwandeln.
- Eine "Nachricht" ist ein Puffer, der Daten enthält, die einem Prozeß sagen, was zu tun ist, oder ihn mit Information versorgen, die er braucht, um seine Funktion auszuführen. Jeder Nachrichtenpuffer kann eine unterschiedliche Länge (bis zu 64 kB) haben. Der Konvention nach definiert das erste Feld im Nachrichtenpuffer den Nachrichtentyp (z. B. "Lesen", "Drucken", "Status", "Ereignis" usw.).
- Nachrichten werden in einer Schlange von einem Prozeß zu einem anderen mit Namen oder PID übergeben. Das Bilden einer Schlange vermeidet potentielle Synchronisationsprobleme und wird anstelle von Semaphoren, Monitoren usw. verwendet. Dem Absender einer Nachricht steht es frei, fortzufahren, nachdem die Nachricht abgeschickt ist. Wenn der Empfänger versucht eine Nachricht zu erlangen, wird er suspendiert, bis eine eintrifft, wenn nicht bereits eine in seiner Schlange wartet. Der Absender kann optional bestimmen, daß er auf eine Antwort warten will und suspendiert wird, bis diese spezifische Nachricht eintrifft. Nachrichten von einer anderen Quelle werden der Schlange nicht entnommen, bis dieses eingetreten ist.
- Innerhalb des hierin beschriebenen verteilten Datenverarbeitungssystems sind Nachrichten der einzige Weg für zwei Prozesse, Daten auszutauschen. Der Begriff einer "globalen Variablen" ist nicht vorhanden. Gemeinsam benutzte Speicherbereiche sind nicht erlaubt, es sei denn durch Prozesse, die im Grunde jeden Bereich in Form von Nachrichten "verwalten". Nachrichten sind auch die einzige Form von dynamischem Speicher, den das System handhabt. Eine Anforderung, Speicher zuzuweisen, bringt daher einen Speicherblock zurück, der von dem Prozeß lokal benutzt werden kann, aber auch an andere Prozesse übertragen werden kann.
- Nachrichten stellen den Mechanismus bereit, mit dem Hardwaretransparenz erreicht wird. Ein Prozeß, der sich irgendwo im System befindet, kann eine Nachricht an einen beliebigen anderen Prozeß irgendwo anders im System (selbst auf einem anderen Prozessor und/oder Zelle) schicken, wenn er den Namen des Prozesses kennt. Das bedeutet, daß Prozesse jederzeit dynamisch über das System verteilt werden können, um optimalen Durchsatz zu gewinnen, ohne die Prozesse, die auf sie verweisen, zu ändern. Die Auflösung der Zielpunkte erfolgt durch Absuchen des Prozeßnamensraums.
- Die Kontextschachtelungsstufe bestimmt den "Referenz-Gültigkeitsbereich", wenn Nachrichten zwischen Prozessen durch Namen gesendet werden. Von einem gegebenen Prozeß kann eine Nachricht an alle Prozesse auf der gleichen Stufe (d. h. in dem gleichen Kontext) und (optional) an eine beliebige arbiträre höhere Stufe geschickt werden. Die Kontexte werden von dem laufenden Kontext an aufwärts abgesucht, bis eine Übereinstimmung gefunden wird. Alle Prozesse mit dem gegebenen Namen auf dieser Stufe erhalten dann eine Kopie der Nachricht. Ein Prozeß kann auch eine Nachricht an sich selbst oder an seinen Elternteil (den Kontextprozeß) schicken, ohne einen Namen explizit zu kennen, wobei erlaubt wird, daß mehrere Beispiele eines Prozesses in verschiedenen Kontexten mit verschiedenen Namen vorhanden sind.
- Das Senden von Nachrichten mit PID macht die Namenssuche überflüssig und ignoriert Kontextgrenzen. Dies ist das wirkungsvollste Kommunikationsverfahren.
- Es besteht ein erheblicher Bedarf, innerhalb eines verteilten Datenverarbeitungssystems die Fähigkeit bereitstellen zu können, einzelne Zellen und/oder Prozesse in dem/den Netzwerk(en) hinzuzufügen oder zu entfernen, ohne Netzwerkfunktionen zu zerreißen.
- Es besteht ferner ein erheblicher Bedarf, leicht und schnell zwischen Prozessen, die entweder in der gleichen Zelle oder in verschiedenen Zellen resident sind, in einer Weise kommunizieren zu können, die dem Benutzer transparent ist.
- Es ist folglich eine Aufgabe der vorliegenden Erfindung, ein verteiltes Datenverarbeitungssystem mit einer verbesserten Netzwerkschnittstelle bereitzustellen.
- Es ist ferner ein Aufgabe der vorliegenden Erfindung, eine verbesserte Netzwerkschnittstelle bereitzustellen, die eine Nachrichtenübermittlung zwischen auf verschiedenen Zellen residenten Prozessen erleichtert.
- Es ist eine weitere Aufgabe der vorliegenden Erfindung, eine verbesserte Netzwerkschnittstelle bereitzustellen, die das Hinzufügen einzelner Zellen zu dem Netzwerk und das Entfernen einzelner Zellen aus dem Netzwerk erleichtert, ohne Netzwerkfunktionen zu zerreißen.
- Noch eine weitere Aufgabe der vorliegenden Erfindung besteht darin, eine verbesserte Netzwerkschnittstelle bereitzustellen, die einen Nachrichtenübertragungsmodus bereitstellt, der allen Prozessen ermöglicht, mit einem gegebenen Namen angesprochen zu werden.
- Diese und andere Aufgaben werden in Übereinstimmung mit einer bevorzugten Ausführung der Erfindung durch Bereitstellen eines Verfahrens zum Lokalisieren von Prozessen in einem verteilten Datenverarbeitungssystem erfüllt, wobei das System eine Mehrzahl einzelner Zellen und mindestens zwei auf verschiedenen der Zellen residente Prozesse umfaßt. Das Verfahren umfaßt die Schritte:
- (a) Erzeugen einer Anforderung durch einen ersten Prozeß in einer ersten der Zellen, um den Ort eines zweiten Prozesses zu finden, der nicht auf der ersten Zelle resident ist, wobei das Verfahren gekennzeichnet ist durch die Schritte:
- (b) Übermitteln der Anforderung an eine verschiedene der Zellen;
- (c) Bestimmen, ob der zweite Prozeß auf der einen verschiedenen Zelle resident ist;
- (d) wenn der zweite Prozeß auf der einen verschiedenen Zelle resident ist, informieren der ersten Zelle über den Ort der einen verschiedenen Zelle; und
- (e) wenn der zweite Prozeß nicht auf der einen verschiedenen Zelle resident ist, Wiederholen der Schritte (b) und (c), bis entweder der Ort des zweiten Prozesses gefunden ist, wobei die erste Zelle über den Ort der einen verschiedenen Zelle informiert wird, oder bis alle anderen Zellen im System abgefragt wurden, ohne den Ort des zweiten Prozesses zu finden, wobei die erste Zelle informiert wird, daß der zweite Prozeß nicht gefunden werden kann.
- Die Erfindung wird in Besonderheit in den anliegenden Ansprüchen zum Ausdruck gebracht. Jedoch werden andere Merkmale der Erfindung deutlicher, und die Erfindung wird am besten verstanden, indem auf die folgende Detailbeschreibung in Verbindung mit den begleitenden Zeichnungen Bezug genommen wird.
- Fig. 1 zeigt eine begriffliche Darstellung eines verteilten Einzelnetzwerk-Datenverarbeitungssystems, das das verbesserte Datenverwaltungssystem der vorliegenden Erfindung einschließt.
- Fig. 2 zeigt ein Blockschaltbild, das ein verteiltes Mehrfachnetzwerk- Datenverarbeitungssystems, das das verbesserte Datenverwaltungssystem der vorliegenden Erfindung einschließt, veranschaulicht.
- Fig. 3 zeigt ein Architekturmodell eines Datenverarbeitungssystems, das die vorliegende Erfindung einschließt.
- Fig. 4 zeigt die Beziehung zwischen Software-Kontexten und Prozessen im Zusammenhang mit der vorliegenden Erfindung.
- Fig. 5 zeigt wie Nachrichten zwischen Prozessen innerhalb geschachtelter Kontexte geschickt werden.
- Fig. 6 zeigt eine begriffliche Darstellung eines lokalen Netzwerks (LAN) mit verschiedenen Zellen und eine begriffliche Darstellung eines Netzwerkschnittstellenmoduls (NIM).
- Fig. 7A zeigt eine Darstellung des nicht-residenten Prozeßnamen-Cachespeichers der NIMs, und Fig. 7B zeigt eine Darstellung des residenten Prozeßnamen-Cachespeichers der NIMs.
- Fig. 8A zeigt das Format der Entdeckungsnachricht.
- Fig. 8B zeigt das Format der Entdeckungs-Antwortnachricht.
- Fig. 8C zeigt das Format der Cachespeicher-Aktualisierungsnachricht.
- Fig. 1 zeigt eine verteilte Computerkonfiguration mit mehreren Zellen 2-7 (Knoten), die lose mit einem lokalen Netzwerk (LAN) 1 verbunden sind. Die Anzahl von Zellen, die mit dem Netzwerk verbunden werden können, ist willkürlich und hängt von der Benutzeranwendung ab. Jede Zelle umfaßt mindestens einen Prozessor und Speicher, wie unten ausführlicher mit Bezug auf Fig. 2 erörtert wird. Jede Zelle kann außerdem andere Einheiten beinhalten, wie zum Beispiel Drucker 8, Operator-Displaymodul (ODM) 9, Massenspeichermodul 13 sowie andere Ein/ Ausgabegeräte 10.
- Fig. 2 zeigt eine verteilte Mehrfachnetzwerk-Computerkonfiguration. Ein erstes lokales Netzwerk (LAN) 1 umfaßt verschiedene Zellen 2, 4 und 7. LAN 1 ist mit einem zweiten lokalen Netzwerk LAN 2 mit Hilfe eines intelligenten Kommunikationsmoduls (ICM) SO verbunden. Der Intelligente Kommunikationsmodul stellt eine Verbindung zwischen dem LAN und anderen Netzwerken und/oder entfernten Prozessoren (z. B. programmierbare Kontroller) bereit.
- LAN 2 kann verschiedene Zellen (nicht gezeigt) umfassen und kann unter dem gleichen LAN-Protokoll arbeiten wie dem der vorliegenden Erfindung, oder es kann unter einem von verschiedenen kommerziell erhältlichen Protokollen, wie zum Beispiel Ethernet; MAP, das > Manufaturing Automation Protocol< von General Motors Corp.; > Systems Network Architecture< (SNA) von IBM; SECS-II usw. arbeiten. Jeder ICM 50 ist zur Ausführung eines der oben erwähnten spezifischen Protokolle programmierbar. Außerdem kann der Basisverarbeitungsmodul der Zelle selbst als ein intelligenter Peripheriekontroller (IPC) für spezialisierte Geräte verwendet werden.
- LAN 1 ist zusätzlich mit einem dritten lokalen Netzwerk LAN 3 über ICM 52 verbunden. Prozeßkontroller 55 ist über ICM 54 ebenfalls mit LAN 1 verbunden.
- Eine repräsentative Zelle N (7, Fig. 2) umfaßt einen Prozessor 24, der in einer bevorzugten Ausführung ein Motorola 68010 Prozessor ist. Jede Zelle enthält ferner ein ROM 28 und ein RAM 26. Außerdem enthält jede Zelle einen Netzwerkschnittstellenmodul (NIM) 21, der die Zelle mit dem LAN verbindet, und eine Bus-Schnittstelle 29, die die Zelle an weitere Geräte innerhalb einer Zelle ankoppelt. Während eine Minimalzelle in der Lage ist, zwei Peripheriegeräte, z. B. einen Operator-Displaymodul (ODM) 41 und einen I/O-Modul 44 zu unterstützen, können weitere Geräte (einschließlich weiterer Prozessoren, wie z. B. Prozessor 27) innerhalb einer Zelle vorgesehen werden. Andere zusätzliche Geräte können zum Beispiel ein Drucker 42 und ein Massenspeichermodul 43 sein, der eine Festplatte und Sicherungsgerät (Diskettenlaufwerk oder Streamer-Bandlaufwerk) unterstützt.
- Der Operator-Displaymodul 41 stellt eine Tastatur und einen Bildschirm bereit, damit ein Operator Informationen eingeben und solche visuell empfangen kann.
- Während eine einzelne Zelle alle von den obigen Einheiten umfassen kann, werden bei der typischen Benutzeranwendung einzelne Zellen spezialisierten Aufgaben zugeordnet. Zum Beispiel können eine oder mehrere Massenspeicherzellen eingerichtet werden, um als Datenbank-Server zu arbeiten. Es können auch verschiedene Operator-Konsolen und mindestens eine Zelle zum Erstellen ausgedruckter Papierkopien vorhanden sein. Entweder diese gleichen Zellen, oder getrennte dedizierte Zellen können einzelne Anwendungsprogramme ausführen.
- Das System ist insbesondere entworfen, um eine integrierte Lösung für Fabrikautomation, Datenerfassung und andere Echtzeitanwendungen bereitzustellen. Als solches enthält es eine volles Spektrum an Dienstleistungen, wie zum Beispiel eine graphische Ausgabe, Fenster, Menüs, Icons, dynamische Displays, Elektronic-Mail, Ereignisaufzeichnung und Dateiverwaltung. Die Softwareentwicklung umfaßt Compiler, einen fensterorientierten Editor, einen Debugger und Performance-Monitoring- Tools.
- Das lokale Netzwerk, wie in Fig. 1 oder Fig. 2 dargestellt, bindet das gesamte System zusammen und ermöglicht das unten beschriebene verteilte virtuelle Maschinenmodell. Das LAN bietet hohen Durchsatz, garantiertes Ansprechen, Zuverlässigkeit und niedrige Einstiegskosten. Das LAN ist ferner autonom in dem Sinn, daß jegliche System- und Anwendungssoftware von seiner Existenz nichts weiß. Zum Beispiel könnte ein beliebiger Netzwerkschnittstellenmodul (z. B. NIM 21, Fig. 2) ausgetauscht werden, ohne eine Software zu überarbeiten, außer der, die Ihn direkt treibt.
- Das Medium zum Zusammenschalten des LAN kann ein verdrilltes Adernpaar oder Koaxialkabel sein. Zwei Kanäle (logischerweise zwei getrennte Netzwerke) können für die Zuverlässigkeit und für höheren Durchsatz vorgesehen werden.
- Die LAN-Architektur ist ein logischer Ring, in dem eine elektronische Wertmünze (Token) ständig mit hoher Geschwindigkeit von Zelle zu Zelle geführt wird. Der momentane Halter der Token kann sie verwenden, um einen "Rahmen" von Daten zu senden, oder kann sie an die nächste Zelle im Ring weiterleiten. Der NIM muß nur die logische Adresse und den Status seines unmittelbar folgenden Nachbarn kennen. Die Verantwortung des NIMs ist auf das Erkennen des Ausfalls dieses Nachbarn oder Zufügen eines neuen Nachbarn begrenzt. Im allgemeinen erfolgt die Abstimmung auf ausgefallene oder neu eingefügte Zellen automatisch.
- Die Netzwerkschnittstelle ordnet direkt in den Speicher des Prozessors zu. Der Datenaustausch erfolgt über einen Zweiwegpufferpool, der eine gebundene Liste anhängender "Rahmen" enthält. Logische Nachrichten, die in der Länge variieren, werden zur Übermittlung in Rahmen fester Größe zerlegt und von dem empfangenden NIM wieder zusammengesetzt. Zu diesem Zweck erhalten die Rahmen Folgenummern. Wenn ein Rahmen nicht innerhalb einer kurzen Zeit bestätigt wird, wird er eine bestimmte Zahl von Malen neu übertragen, bevor er als Fehler behandelt wird.
- Wie oben mit Bezug auf Fig. 2 beschrieben, kann das LAN mit anderen LANs, die unter dem gleichen LAN-Protokoll arbeiten über sogenannte "Bridgeways" verbunden werden, oder es kann mit anderen LAN-Typen über "Gateways" verbunden werden.
- Das Computer-Betriebssystem der vorliegenden Erfindung arbeitet auf der Basis von Prozessen und Kontexten, wie sie hierin definiert sind. Folglich bietet dieses Betriebssystem dem Programmierer eine Hardware-Abstraktion anstelle einer Daten- oder Steuer-Abstraktion.
- Prozesse werden ohne Rücksicht auf ihren physikalischen Ort über einen kleinen Satz von nachrichtenübertragenden Elementen angesprochen. Wie zuvor erwähnt, hat jeder Prozeß einen eindeutigen, durch das System erzeugten Identifikator und einen nicht unbedingt eindeutigen Namen, den der Programmierer erteilt. Der Identifikator bietet einen schnellen direkten Zugriff, während der Name einen begrenzten Gültigkeitsbereich hat und symbolischen indirekten Zugriff bietet.
- Fig. 3 zeigt ein Architekturmodell der vorliegenden Erfindung. Die Boden- oder Hardwareschicht 63 umfaßt eine Anzahl von Prozessoren 71-76, wie oben beschrieben. Die Prozessoren können physikalisch innerhalb einer oder mehrerer Zellen vorhanden sein. Die Ober- oder Softwareschicht 60 veranschaulicht eine Anzahl von Prozessen P1-P10, die einander Nachrichten m1-m6 übermitteln. Die Mittelschicht 61, bezeichnet mit "virtuelle Maschine", trennt die Hardware von der Software und erlaubt es, Programme so zu schreiben, als ob sie auf einem Einzelprozessor ausgeführt würden. Umgekehrt können Programme über mehrere Prozessoren verteilt werden, ohne explizit für diesen Zweck entworfen zu sein.
- Ein wichtiger Zweck des hierin offengelegten virtuellen Maschinenbegriffs besteht darin, dem Anwendungsprogrammlerer ein einfaches beständiges Modell zur Verfügung zu stellen, in dem er sein System entwirft. Wie oben erwähnt, ist dieses Modell auf einige elementare Begriffe reduziert: Prozesse, Nachrichten und Kontexte. Als Folge dieses elementaren Modells werden dem Anwender Hardwarebesonderheiten transparent gemacht, und Änderungen in Hardware-Konfigurationen haben keine direkt Auswirkung auf die Software.
- Ein "Prozeß" ist ein eigenständiges Paket von Daten und ausführbaren Prozeduren, die auf diesen Daten arbeiten. Die Daten sind völlig abgeschlossen und können nicht von anderen Prozessen zugegriffen werden. Der Begriff eines gemeinsam benutzten Speichers existiert innerhalb der vorliegenden Erfindung nicht. Der Ablauf eines Prozesses ist streng sequentiell. Mehrfache Prozesse laufen nebenläufig ab und müssen durch das Betriebssystem geplant werden. Die Prozesse sind reentrant, wobei nur eine Kopie des Codes geladen wird, selbst wenn mehrere Exemplare aktiv sind.
- Jeder Prozeß hat eine eindeutige "Prozeß-Identifikationsnummer" (PID), mit der auf ihn verwiesen werden kann. Die PID wird erteilt, wenn der Prozeß kreiert wird und bleibt gültig, bis der Prozeß endet. Die PID-Zuweisung enthält einen Zufallsfaktor, der gewährleistet, daß die PID in der nahen Zukunft nicht erneut benutzt wird. Der Inhalt der PID ist für den Programmierer unbedeutend, kann aber von der virtuellen Maschine benutzt werden, um den Prozeß physikalisch zu lokalisieren. Eine PID kann man sich als "Zeiger" auf einen Prozeß vorstellen.
- Jeder Prozeß hat auch einen "Namen", der eine Zeichenfolge variabler Länge ist und vom Programmierer erteilt wird. Ein Name muß nicht eindeutig sein und die Mehrdeutigkeit kann verwendet werden, neue Dienste transparent hinzuzufügen und kann der Fehlertoleranz dienen.
- Fig. 4 zeigt, daß der systemweite Namensraum durch "Kontexte", die mit den Nummern 90-92 gekennzeichnet sind, in bestimmte Subsets aufgeteilt ist. Ein Kontext ist einfach eine Sammlung verwandter Prozesse, deren Namen außerhalb des Kontexts nicht bekannt sind. Kontext 90, zum Beispiel, enthält Prozesse A, a, a, b, c, d und e. Kontext 91 enthält Prozesse B, a, b, c und f. Und Kontext 92 enthält Prozesse C, a, c, d und x.
- Ein besonderer Prozeß in jedem Kontext, "Kontextprozeß" genannt, ist innerhalb des Kontexts und innerhalb des unmittelbar einschließenden (als "Elternkontext" bezeichnet) bekannt. In dem in Fig. 4 gezeigten Beispiel sind die Prozesse A-C Kontextprozesse für Kontexte 90-92. Der Elternkontext von Kontext 91 ist Kontext 90, und der Elternkontext von Kontext 92 ist Kontext 91. Begrifflich befindet sich der Kontextprozeß an der Grenze des Kontexts und wirkt als ein Tor zu ihm hinein.
- Prozesse im Innern von Kontext 92 können beliebige Prozesse im Innern der Kontexte 90 und 91 mit Namen heranziehen. Prozesse in Kontext 91 können jedoch auf Prozesse in Kontext 92 nur zugreifen, indem sie durch den Kontextprozeß C gehen. Prozesse in Kontext 90 können auf Prozesse in Kontext 92 nur zugreifen, indem sie durch die Kontextprozesse B und C gehen.
- Die Funktion des Kontextprozesses ist es, eingehende Nachrichten zu filtern und sie entweder zurückzuweisen oder sie an andere Prozesse in seinem Kontext umzuleiten. Kontexte können geschachtelt werden, was den Aufbau einer Hierarchie von Abstraktionen erlaubt. Ein Kontext muß vollständig auf einer Zelle resident sein. Das Gesamtsystem wird als ein allumfassender Kontext behandelt, der immer vorhanden ist, und der die höchste Stufe in der Hierarchie ist. Im Wesen definieren Kontexte lokalisierte Schutzbereiche und verringern im hohem Maß die Möglichkeiten von Namenskonflikten.
- Wenn angebracht, kann ein Prozeß im Innern eines Kontexts mit einem im Innern eines anderen Kontexts "verbunden" werden, indem PIDs ausgetauscht werden, nachdem einmal Verbindung durch einen oder den anderen der Kontextprozesse hergestellt wurde. Die meisten Prozeß-Server innerhalb der vorliegenden Erfindung arbeiten auf diese Weise. Der erstmalige Zugriff erfolgt durch Namen. Wenn einmal die gewünschte Funktion (z. B. ein Fenster oder eine Datei) "geöffnet" ist, kommunizieren der Anwenderprozeß und der Service direkt über PIDs.
- Eine "Nachricht" ist ein Puffer variabler Länge (nur begrenzt durch die physikalische Speichergröße des Prozessors), der Informationen zwischen Prozessen transportiert. Ein Vorlauf (Header), dem Programmierer nicht zugänglich, enthält den Zielnamen und die PID des Absenders. Nach Konvention ist das erste Feld einer Nachricht eine leer-abgeschlossene Zeichenfolge, die den Typ der Nachricht (z. B. "Lesen", "Status" usw.) definiert. Nachrichten werden in einer Warteschlange an den empfangenden Prozeß gesendet. Warteschlangenbildung gewährleistet seriellen Zugriff und wird mit Vorrang für Semaphoren, Monitore usw. verwendet.
- Nachrichten stellen den Mechanismus bereit, mit dem Hardwaretransparenz erreicht wird. Ein Prozeß, der sich irgendwo in der virtuellen Maschine befindet, kann eine Nachricht an einen beliebigen anderen Prozeß senden, wenn er dessen Namen kennt. Wegen der Leistungsverschlechterung gilt Transparenz mit einiger Einschränkung über Bridgeways (d. h. die Schnittstellen zwischen LANs, die unter Identischen Netzwerkprotokollen arbeiten) hinweg und grundsätzlich überhaupt nicht über Gateways (d. h. die Schnittstelle zwischen LANs, die unter verschiedenen Netzwerkprotokollen arbeiten) hinweg. Abhängig von dem erforderlichen Leistungsniveau könnten sie jedoch so arbeiten.
- Jede Inter-Prozeßkommunikation erfolgt über Nachrichten. Folglich sind die meisten Elemente der virtuellen Maschine mit der Verarbeitung von Nachrichten befaßt. Die Kernelemente der virtuellen Maschine sind die folgenden:
- ALLOC - fordert Zuordnung eines (Nachrichten) Puffers einer gegebenen Größe an.
- FREE - fordert Freigabe eines gegebenen Nachrichtenpuffers an.
- PUT - senden einer Nachricht an einen gegebenen Zielpunkt (mit Namen oder PID).
- GET - warten auf die nächste eingehende Nachricht und entnehmen aus der Schlange, optional von einem spezifischen Prozeß.
- FORWARD - weitergeben einer empfangenen Nachricht an einen anderen Prozeß.
- CALL - senden einer Nachricht, dann warten und die Antwort der Schlange entnehmen.
- REPLY - senden einer Nachricht an Urheber einer gegebenen Nachricht.
- ANY_MSG - gibt "wahr" zurück, wenn die Empfangsschlange nicht leer ist, andernfalls "unwahr"; prüft optional, ob sich irgendwelche Nachrichten von einer spezifischen PID in der Schlange befinden.
- Um die Funktion der Kernelemente weiter zu beschreiben, handhabt ALLOC alle Speicherzuweisungen. Er gibt einen Zeiger auf einen Puffer zurück, der zur lokalen Speicherung innerhalb des Prozesses verwendet werden kann, oder der zu einem anderen Prozeß (via PUT, usw.) geschickt werden kann. ALLOC geht nie "fehl", sondern wartet lieber, bis genügend Speicher freigesetzt ist, um die Anforderung zu erfüllen.
- Das PUT-Element schickt eine Nachricht aus der Warteschlange an einen anderen Prozeß. Der sendende Prozeß nimmt die Ausführung wieder auf, sobald die Nachricht abgeschickt ist.
- FORWARD wird verwendet, um eine Nachricht schnell umzuleiten, behält aber Information über den ursprünglichen Absender (wogegen PUT immer den sendenden Prozeß zum Urheber der Nachricht macht).
- REPLY schickt eine Nachricht an den Urheber einer zuvor empfangenen Nachricht, anstelle mit Namen oder PID.
- CALL implementiert im Grunde entfernte Subroutinen-Aufrufe, die den Rufer veranlassen, zu warten, bis der Empfänger ein REPLY ausführt. Danach wird unmittelbar bei Ankunft die erwiderte Nachricht außerhalb der Reihenfolge aus der Schlange genommen, und der Rufer nimmt die Ausführung wieder auf.
- Die Betonung liegt auf Nebenläufigkeit, so daß so viele Prozesse wie möglich parallel ausgeführt werden. Folglich wartet weder PUT noch FORWARD auf die zu liefernde Nachricht. Umgekehrt suspendiert GET einen Prozeß, bis eine Nachricht eintrifft, und entnimmt sie der Schlange in einem Vorgang. Das Element ANY_MSG ist bereitgestellt, so daß ein Prozeß bestimmen kann, ob irgend etwas von Interesse in der Warteschlange ist, bevor er sich zu einem GET verpflichtet.
- Wenn eine Nachricht mit Namen geschickt wird, muß der Zielprozeß im Namensraum gefunden werden. Der Suchweg wird bestimmt durch das Schachteln der Kontexte, in denen sich der sendende Prozeß befindet. Von einem gegebenen Prozeß kann eine Nachricht an alle Prozesse in seinem eigenen Kontext oder (optional) an diese in jedem höheren Kontext gesendet werden. Zu Fig. 5. Die Kontexte werden vom laufenden Kontext an aufwärts abgesucht, bis eine Übereinstimmung gefunden ist, oder der Systemkontext erreicht ist. Alle Prozesse mit dem gleichen Namen in diesem Kontext erhalten dann eine Kopie der Nachricht.
- Zum Beispiel mit Bezug auf Fig. 5 angenommen, daß in Kontext 141 Prozeß y eine Nachricht an ALLE Prozesse mit dem Namen x schickt. Prozeß y sucht zunächst in seinem eigenen Kontext 141, findet aber keinen Prozeß x. Der Prozeß y sucht dann innerhalb des nächsthöheren Kontexts 131 (seinem Elternprozeß), findet aber wieder keinen Prozeß x. Dann sucht der Prozeß y innerhalb des nächsthöheren Kontexts 110 und findet einen Prozeß x, der durch Referenznummer 112 definiert ist. Da er der einzige Prozeß x in Kontext 110 ist, ist er der einzige Empfänger der Nachricht von Prozeß y.
- Wenn Prozeß a in Kontext 131 eine Nachricht an ALLE Prozesse mit dem Namen x sendet, sucht er zuerst in seinem eigenen Kontext 131 und, wenn dort keine Prozesse x zu finden sind, sucht er im Kontext 110 und findet den Prozeß x.
- Angenommen, Prozeß b in Kontext 131 sendet eine Nachricht an ALLE Prozesse mit dem Namen A. Er würde Prozeß A (111) sowohl in Kontext 110 als auch Prozeß A (122), der der Kontextprozeß für Kontext 121 ist, finden.
- Ein Prozeß kann auch eine Nachricht an sich selbst oder an seinen Kontextprozeß senden, ohne einen Namen explizit zu kennen.
- Die Vorstellung eines "logischen Rings" (analog zu einem LAN) erlaubt es, eine Nachricht an den NEXT-Prozeß in dem System mit einem gegebenen Namen zu senden. Die Nachricht geht an genau einen Prozeß in dem Kontext des Absenders, wenn ein solcher Prozeß existiert. Andernfalls wird der Elternkontext abgesucht.
- Die virtuelle Maschine gewährleistet, daß jede NEXT-Übertragung einen anderen Prozeß erreicht, und daß schließlich eine Übertragung an den logisch "ersten" Prozeß (derjenige, der die ursprüngliche Nachricht sendete) in dem Ring gesendet wird, womit die Schleife endet. Mit anderen Worten, alle Prozesse mit dem gleichen Namen auf der gleichen Stufe können miteinander kommunizieren, ohne zu wissen, wie viele vorhanden sind oder wo sie sich befinden. Der logische Ring ist wichtig für verteilende Service, wie z. B. eine Datenbank. Die Anordnung von Prozessen in dem Ring ist nicht vorhersagbar.
- Wenn zum Beispiel, Fig. 5 betreffend, Prozeß a (125) in Kontext 121 eine Nachricht an Prozeß a unter Verwendung des NEXT-Elements sendet, findet die Suche einen ersten Prozeß a (124) in dem gleichen Kontext 121. Prozeß a (124) wird markiert, die Nachricht empfangen zu haben, und dann sendet Prozeß a (124) die Nachricht weiter an den NEXT-Prozeß a (123) in Kontext 121. Prozeß a (123) wird markiert, die Nachricht empfangen zu haben, und dann sendet er die Nachricht weiter an den NEXT-Prozeß a, der der ursprüngliche Absenderprozeß a (125) ist, der sie nicht weiterzusenden weiß, da markiert wurde, die Nachricht bereits empfangen zu haben.
- Senden von Nachrichten direkt mit PID macht die Notwendigkeit für eine Namenssuche überflüssig und ignoriert Kontextgrenzen. Dieses ist als der DIRECT-Übertragungsmodus bekannt und ist das Wirkungsvollste. Zum Bespiel sendet Prozeß A (111) eine Nachricht im DIRECT-Modus an Prozeß y in Kontext 141.
- Wenn ein Prozeß eine Nachricht im LOCAL-Übertragungsmodusses sendet, sendet er sie nur an einen Prozeß mit dem gegebenen Namen in dem eigenen Kontext des Absenders.
- Insgesamt sind, einschließlich des DIRECT-Übertragungsmoduses, fünf Übertragungsmodi vorhanden, die mit den PUT-, FORWARD- und CALL-Elementen verwendet werden können:
- ALL - an alle Prozesse mit dem gegebenen Namen in dem ersten Kontext, der diesen Namen enthält, beginnend mit dem Kontext des Absenders und aufwärts suchend durch alle Elternkontexte.
- LOCAL - an alle Prozesse mit dem gegebenen Namen nur im Kontext des Absenders.
- NEXT - an den nächsten Prozeß mit dem gegebenen Namen in dem gleichen Kontext wie der Absender, wenn vorhanden; andernfalls sucht es aufwärts durch alle Elternkontexte, bis der Name gefunden ist.
- LEVEL - sendet an "selbst" (den sendenden Prozeß) oder an "Kontext" (den Kontextprozeß, der dem Kontext des Absenders entspricht); "selbst" kann nicht mit CALL verwendet werden.
- DIRECT - senden mit PID.
- Nachrichten werden üblicherweise übertragen, indem ein Zeiger auf den Puffer gesetzt wird, der die Nachricht enthält. Eine Nachricht wird nur kopiert, wenn mehrere Zielpunkte vorhanden sind, oder wenn das Ziel in einer anderen Zelle liegt.
- Eine weitere Beschreibung der ALL- und NEXT-Übertragungsmodi befindet sich im Abschnitt "Ausführliche Beschreibung der Erfindung".
- Das Betriebssystem der vorliegenden Erfindung besteht aus einem Kern, der die oben beschriebenen Grundelemente implementiert, plus einem Satz von Prozessen, die die Prozeßerzeugung und -beendigung, das Zeitmanagement (Zeit setzen, Alarm setzen usw.) bereitstellen, und die Zellenanlauf und -Konfiguration durchführen. Treiber für Geräte sind ebenfalls als Prozesse (EESPs), wie oben beschrieben, implementiert. Dies erlaubt es, Systemservice und Gerätetreiber leicht hinzuzufügen oder auszutauschen. Das Betriebssystem unterstützt auch Swapping und Paging, obwohl beide für Anwendungsprogramme unsichtbar sind.
- Anders als bekannte verteilte Computersysteme, verwendet das der vorliegenden Erfindung keinen besonderen "Name-Server" Prozeß, um Namen aufzulösen. Die Namenssuche ist auf den Kern begrenzt, der den Vorteil hat, viel schneller zu sein.
- Ein minimales Bootstrap-Programm ist permanent (In ROM) auf jeder Zelle, z. B. ROM 28 in Zelle N von Fig. 2. Das Bootstrap-Programm läuft automatisch ab, wenn eine Zelle eingeschaltet wird, und beginnt mit der Ausführung von elementaren On-board-Diagnosen. Dann versucht es, einen Startsystem-Codemodul zu finden und zu starten, das den gesamten Kern und EESPs für die Uhr, die Platte (falls erforderlich) und den NIM (falls erforderlich) umfaßt. Der Modul wird auf dem ersten Plattenlaufwerk (falls vorhanden) auf der Zelle vermutet. Wenn keine Platte vorhanden ist, oder wenn die Zelle auf dem LAN ist, wird eine Nachricht ausgesandt, die den Modul anfordert. Mißlingt dies, muß die benötigte Software im ROM vorhanden sein. System-Service für die Uhr und zur Prozeßerzeugung, ein Initialisierungs-Programm und ein minimales Dateisystem sind ebenfalls in dem Modul eingebaut. Das Initialisierungs-Programm richtet alle internen Tabellen des Kerns ein und ruft dann vordefinierte Einsprungstellen in jedem der vorgeladenen Service (Dateiverwaltung usw.) auf. Das Ergebnis ist, daß EESPs für die angeschlossenen Geräte zum Laufen eingeplant werden, und daß die Zelle verfügbar ist.
- Im allgemeinen ist eine Formdatei vorhanden, die die Ausgangssoftware und -Hardware für jede Zelle im System beschreibt. Die Formdatei definiert einen Satz von Ausgangsprozessen (gewöhnlich einen pro Service), die unmittelbar nach dem Zellenanlauf gescheduled werden. Diese Prozesse starten dann ihre jeweiligen Subsysteme. Ein Konfigurations-Service auf jeder Zelle sendet Konfigurations-Nachrichten an jedes Subsystem, wenn es initialisiert wird, und informiert es über die zu ihm gehörenden Geräte. Danach werden ähnliche Nachrichten gesendet, wann immer der Zelle ein neues Gerät hinzugefügt wird, ein Gerät ausfällt oder von der Zelle entfernt wird.
- Es gibt folglich keine gut definierte Bedeutung für "System-up oder "System-down". Solange wie eine beliebige Zelle aktiv ist, kann das System als Ganzes als "up" angesehen werden. Zellen können dynamisch abgeschaltet oder gestartet werden, ohne andere Zellen in dem Netzwerk zu beeinflussen. Das gleiche Prinzip gilt, in begrenztem Umfang, für Peripheriegeräte. Geräte, die sich selbst hinsichtlich Typ, Modellnummer usw. identifizieren können, können ohne Zutun des Operators zugefügt oder entfernt werden. Das Betriebssystem kann weder einen globalen Status des Systems aufrechterhalten, noch versucht es, die Steuerung des Gesamtsystems zu zentralisieren.
- Fig. 6 zeigt eine begriffliche Darstellung des lokalen Netzwerks (LAN), einschließlich verschiedener Zellen sowie eine begriffliche Darstellung eines Netzwerkschnittstellenmoduls (NIM). Das LAN 404 verbindet repräsentative Zellen 1, 2,...N (400-402). Zelle 2 (401) veranschaulicht weitere Aspekte der Erfindung. Ein Netzwerkschnittstellenmodul (NIM) 406 ist in Form eines Blockschaltbilds als unter anderem einen residenten Prozeßnamen-Cache-Speicher 440 und einen nicht-residenten Prozeßnamen-Cache-Speicher 441 umfassend dargestellt. Der NIM 406 umfaßt auch den Kern, allgemein als 408 dargestellt, und mindestens einen Arbeitsspeicher 410, der mindestens einen Prozeß enthält. In Fig. 6 ist der Arbeitsspeicher 410 als repräsentative Prozesse B, F und C enthaltend dargestellt. Jede andere mit LAN 404 verbundene Zelle umfaßt ebenfalls einen NIM wie NIM 406 von Zelle 2 (401).
- Fig. 7A zeigt eine Darstellung des nicht-residenten Prozeßnamen-Caches 441 des NIMs. Der Cache ist ein Hochgeschwindigkeitsspeicher mit einer Vielzahl adressierbarer Speicherplätze. Jeder Platz hat wenigstens drei Felder, wie durch ein repräsentatives Cache-Wort 414 dargestellt, einschließlich Feld 433, das den Prozeßnamen enthält, Feld 434, das die Adresse der nächsten Zelle im LAN enthält, wo dieser Prozeß sich befindet, und Feld 435, das das Flag "Entdeckung im Gange" (DIP) enthält. Die Funktion des nicht-residenten Prozeßnamen-Caches des NIMs wird weiter unten erörtert.
- Fig. 7B zeigt eine Darstellung des residenten Prozeßnamen-Caches 440 des NIMs. Jedes Cache-Wort umfaßt mindestens drei Felder: Feld 436, das den Prozeßnamen enthält, Feld 437, das den Prozeßzähler enthält, und Feld 438, das das Flag "Übertragen" (T) enthält. Die Funktion wird weiter unten beschrieben.
- Fig. 8A zeigt das Format der Entdeckungsnachricht 420. Die Entdekkungsnachricht 420 enthält wenigstens einen Teil 421, der den Prozeßnamen enthält, und einen Teil 422, der die Adresse der Zelle enthält, die die Nachricht hervorbringt.
- Fig. 8B zeigt das Format der Entdeckungs-Antwortnachricht 424. Die Entdeckungs-Antwortnachricht 424 umfaßt mindestens einen Teil 425, der den Prozeßnamen enthält und einen Teil 426, der die Adresse der antwortenden Zelle enthält.
- Fig. 8C zeigt das Format der Cache-Aktualisieren-Nachricht 428. Die Cache-Aktualisieren-Nachricht 428 umfaßt mindestens einen Teil 429, der den Prozeßnamen enthält und einen Teil 430, der die Adresse der Zelle enthält, die den Prozeß erzeugt.
- Wie oben erwähnt, können Prozesse (wo immer sie sich im System befinden) symbolisch mit Prozeßnamen angesprochen werden. Prozeßnamen müssen innerhalb des Systems nicht eindeutig sein. Zwei spezielle Nachrichtenübertragungs- oder Adressierungsmodi werden bereitgestellt, um Nachrichten zwischen beliebigen gegebenen Prozessen und einem benannten Prozeß zu übertragen: NEXT-Modus und ALL-Modus.
- Bei NEXT-Modus-Adressierung wird der Zielprozeß mit Namen spezifiziert und zuerst innerhalb der Kontextstufe des Absenders (d. h. unter allen Bruderprozessen, ungeachtet, ob der Absender ein Kontext ist oder nicht) gesucht. Wenn keiner gefunden wird, wird die Suche in dem Elternkontext, dann in dem Großelternkontext usw. fortgesetzt. Der erste Prozeß mit dem spezifizierten Namen in der ersten Kontextstufe, wo mindestens eine Übereinstimmung gefunden wird, wird die Nachricht erhalten.
- Ein besonderer Fall der NEXT-Modus-Adressierung ist der, wo der Name des Zielprozesses der gleiche wie der des Absenders ist, in welchem Fall: (1), wenn der Absender der einzige Prozeß mit dem spezifizierten Namen in seinem Kontext ist, wird er auch der Empfänger der Nachricht, und (2), wenn mehrere Prozesse mit dem spezifizierten Namen in dem gleichen Kontext vorhanden sind, wird jeder die Nachricht erhalten.
- Der Kern kann eine logische Kette gleichnamiger Prozesse innerhalb einer Zelle implementieren. Der NIM stellt die Verbindung bereit, die die Kette zu einem logischen Ring formt, wobei unterschiedliche Zellen verbunden werden. Wenn alle Prozesse in der Kette in einer Zelle die Nachricht empfangen haben, wird die Nachricht an den NIM zur Übertragung über das LAN an den nächsten Prozeß mit dem gleichen Namen geleitet, wo immer er sein mag.
- Das NEXT-Modus-Nachrichtenformat enthält ein als "Angenommen"-Flag bezeichnetes Feld. Die Übertragung einer NEXT-Modus-Nachricht wird als erfolgreich angesehen, wenn sie zu der hervorbringenden Zelle mit ihrem auf wahr gesetzten "Angenommen"-Flag zurückkehrt. Annahme bedeutet, daß mindestens ein Prozeß mit dem gegebenen Namen die Nachricht empfangen hat (zu übertragende NEXT-Modus-Nachrichten werden immer an den NIM unangenommen geleitet). In diesem Fall wird die Nachricht einfach frei gemacht. Wenn die Nachricht nicht gesendet werden konnte, oder ohne angenommen zu werden zurückkehrt, wird die Übertragung als mißlungen angesehen. Mißlingen der Nachricht, zurückzukehren, wird ihre erneute Übertragung zur Folge haben. Wenn die Nachricht in dem logischen-Ring-Modus gesendet wurde (d. h. von einem Prozeß zu einem anderen Prozeß mit dem gleichen Namen transportiert), wird die Nachricht zu diesem Prozeß zurückgebracht, um den Ring zu vollenden. Andernfalls wird sie mit angezeigtem Übertragungsfehler an den Kern geleitet.
- Bei ALL-Modus-Adressierung wird der Zielprozeß ebenfalls mit Namen spezifiziert. Er wird zuerst im Kontext des Absenders gesucht (d. h. unter den Kindern des Absenders, wenn der Absender ein Kontext ist, und andernfalls unter seinen Brüdern). Wenn keiner gefunden wird, wird die Suche im Elternkontext, dann im Großelternkontext usw. fortgesetzt. Alle Prozesse mit dem spezifizierten Namen in der ersten Kontextstufe, wo mindestens eine Übereinstimmung gefunden wird, werden die Nachricht erhalten (außer dem Absender, wenn er zufällig den gleichen Namen hat).
- Alle ALL-Modus-Nachrichten werden an den NIM zur Übertragung an alle, wenn überhaupt, Prozesse, die sich in anderen Zellen auf dem LAN befinden, geleitet.
- Das ALL-Modus-Datenformat enthält ebenfalls ein Feld, das als das "Angenommen"-Flag bezeichnet ist (eine ALL-Modus-Nachricht wird nur angenommen, wenn einer oder mehrere Prozesse mit dem adressierten Namen sich auf der hervorbringenden Zelle befinden). Die Übertragung einer ALL-Modus-Nachricht wird als erfolgreich angesehen, wenn sie zu der hervorbringenden Zelle mit ihrem auf wahr gesetzten "Angenommen"- Flag zurückkehrt. In diesem Fall wird die Nachricht freigemacht. Wenn die Nachricht nicht gesendet werden konnte, oder ohne angenommen zu werden zurückkehrt, oder überhaupt nicht zurückkehrt, wird 'die Übertragung als mißlungen angesehen und wird dem Kern mit angezeigtem Übertragungsfehler zugeleitet.
- Wenn die ALL-Modus-Nachricht mit ihrem auf wahr gesetzten "Angenommen" Flag zu ihrer hervorbringenden Zelle zurückkehrt, ist der hervorbringenden Zelle versichert, daß alle Prozesse mit dem adressierten Namen tatsächlich die Nachricht empfangen haben.
- Wenn der NIM von dem Kern eine Nachricht empfängt, die an einen benannten Prozeß zu übertragen ist, der sich in einer anderen Zelle befindet, muß er bestimmen, an welche Zelle sie zu senden ist. Jeder NIM erhält folglich einen Cache mit nicht-residenten Prozeßnamen aufrecht (Cache 441, Fig. 7A). Dieser Cache ist eine dynamische Tabelle bestehend aus einer Anzahl von Sätzen, von denen jeder drei Felder umfaßt: der Prozeßname 433, die Adresse 434 der nächsten Zelle, in der sich der Prozeß befindet, und ein "Entdeckung im Gange" (DIP)- Flag 435.
- Es ist wichtig, anzumerken, daß jeder NIM nur die Adresse der "nächsten" Zelle, die den benannten Prozeß enthält, kennt (die "nächste" Zelle braucht nicht die dem NIM physikalisch nächste zu sein). Dies erfordert, daß die das System umfassenden Zellen als einen logischen Ring bildend angesehen werden. Alle Nachrichten, die von Zelle zu Zelle verbreitet werden, z. B. "Entdeckungs"-Nachrichten (nachfolgend erörtert), werden in einer Richtung um diesen logischen Ring geführt.
- Ein anderer wichtiger Punkt ist, daß der nicht-residente Prozeßnamen- Cache 441 einer beliebigen gegebenen Zelle nur die Namen der Prozesse enthält, an die diese Zelle Nachrichten übertragen will. Die Inhalte des Caches sind dynamisch dadurch, daß Prozeßnamen hinzugefügt oder gelöscht werden können.
- Wenn der NIM eine an einen benannten Prozeß zu übertragende Nachricht empfängt, sucht er seinen nicht-residenten Prozeßnamen-Cache 441 nach dem Prozeßnamen ab. Wenn er nicht gefunden wird, wie es beim erstmaligen Einschalten der Fall sein wird (da der Cache leer ist), ist es erforderlich, die Residenz des Prozesses zu lokalisieren oder zu "entdecken".
- Der Prozeßname wird in einer Schlange in dem LAN eingetragen und das DIP-Flag 435 wahr gesetzt. Die Nachricht wird in eine Warteschlange gesetzt, die das Beenden der Entdeckung abwartet. Während die Entdekkung des Prozesses im Gange ist, werden alle anderen an den gleichen Prozeß gerichteten Nachrichten ebenfalls in die Warteschlange eingeordnet.
- Das LAN bildet dann eine Entdeckungsnachricht (420, Fig. 8A). Die wichtigen Elemente der Entdeckungsnachricht sind der Name des Prozesses, der entdeckt wird, und die Adresse des Nachrichten-Urhebers. Die Entdeckungsnachricht wird an die erste Zelle in dem logischen Ring gesendet.
- (Wenn jedoch noch kein logischer Ring eingerichtet wurde, wird die Nachrichtenübertragung beendet, da nicht bekannt ist, wann, wenn überhaupt, ein Ring gebildet wird. Unangenommene Nachrichten werden mit einem übertragungsfehler-Status an den Kern zurückgegeben. Angenommene Nachrichten werden frei gemacht. Da der Aufenthaltsort des Prozesses noch nicht bestimmt wurde, wird die in der nicht-residenten Prozeßnamen-Cache-Tabelle 441 eingetragene Adresse auf die eigene Adresse der Zelle gesetzt.)
- Nachdem die Entdeckungsnachricht erfolgreich an die nächste Zelle gesendet worden ist, wird die Nachricht in eine Time-out-Schlange eingeordnet, die entweder die Rückkehr der Entdeckungsnachricht oder den Empfang einer Entdeckungs-Antwortnachricht abwartet (424, Fig. 8B). Wenn ein Time-out eintritt, zeigt dies an, daß eine Zelle vor Verbreitung der Entdeckungsnachricht ausgefallen ist, und die Entdeckungsnachricht muß erneut übertragen werden. Wenn die Entdeckungsnachricht zu der hervorbringenden Zelle zurückkehrt, dann ist der Prozeß momentan in keiner anderen Zelle auf dem LAN vorhanden. Die Entdeckungsnachricht wird entweder bei Empfang der zurückkehrenden Entdeckungsnachricht oder der entsprechenden Entdeckungs-Antwortnachricht aus der Time-out-Schlange entfernt.
- Wenn ein NIM eine Entdeckkungsnachricht von dem LAN her empfängt, sucht er sein residentes Prozeßnamen-Cache nach dem Namen der Nachricht ab. Wenn er sie findet, wird die Entdeckungsnachricht dann in eine Entdeckungs-Antwortnachricht umgewandelt, die die antwortende Zelle identifiziert und zu dem Nachrichten-Urheber gesendet wird. Wenn jedoch der Prozeß in dieser Zelle nicht existiert, wird die Entdeckungsnachricht an die nächste Zelle in dem logischen Ring gesendet. Die Nachricht wird in dieser Weise verbreitet, bis sie entweder von einer Zelle mit dem benannten Prozeß empfangen wird oder zu der hervorbringenden Zelle zurückkert.
- Wenn die Entdeckungsnachricht zu der hervorbringenden Zelle zurückkehrt, was anzeigt, daß der benannte Prozeß extern nicht nicht vorhanden ist, wird eine ungültige Zellenadresse, die anzeigt, daß der Prozeß extern nicht existiert, in den Satz des Prozesses in der nichtresidenten Prozeßnamen-Cache-Tabelle eingetragen. Da die Entdeckung beendet wurde, wird das DIP-Flag unwahr gesetzt. Alle an den benannten Prozeß gerichteten Nachrichten werden aus der Warteschlange entnommen. Nachrichten, die von einer anderen Zelle stammten, werden an diese Zelle zurückgegeben. Nachrichten, die von dieser Zelle hervorgebracht wurden, werden entweder dem Kern mit einem angezeigten Übertragungsfehler zurückgegeben oder einfach frei gemacht.
- Wenn eine Entdeckungs-Antwortnachricht durch einen NIM empfangen wird, wird die Adresse der antwortenden Zelle in die nicht-residente Prozeßnamen-Cache-Tabelle eingetragen, und das DIP-Flag wird auf unwahr gesetzt, da die Entdeckung beendet wurde. Alle an den entdeckten Prozeß gerichteten Nachrichten werden aus der Warteschlange entnommen und zu der Zelle gesendet, die geantwortet hat. Diese Nachrichten werden nach erfolgreicher Übertragung an die Zelle in eine Time-out- Schlange eingeordnet, um ihre Rückkehr abzuwarten.
- Wenn ein NIM eine von dem LAN her an ihn gerichtete ALL-Modus- oder NEXT-Modus-Nachricht empfängt, sucht er in seinem residenten Prozeßnamen-Cache (440, Fig. 7B) den Namen des adressierten Prozesses. Wenn er nicht gefunden wird, wird die Nachricht an den Absender zurückgegeben. Dies kommt beispielsweise vor, wenn der Prozeß gelöscht wurde. Bei Empfang einer zurückgewiesenen Nachricht muß der sendende NIM die Adresse der nächsten Zelle, die den Prozeß enthält, entdecken und seinen nicht-residenten Prozeßnamen-Cache aktualisieren.
- Wenn der Name in dem residenten Prozeßnamen-Cache gefunden wird, wird die Nachricht durch den Kern an den adressierten Prozeß geleitet. Wenn die Nachricht nicht bereits angenommen wurde, muß der NIM auf den Kern warten, um anzuzeigen, ob die Nachricht empfangen wurde. Dies ist erforderlich, da ein Zeitfenster zwischen dem Prüfen des residenten Prozeßnamen-Caches und dem Moment der Übergabe der Nachricht an den Kern besteht, während dem der Prozeß gelöscht werden kann.
- NEXT-Modus-Nachrichten werden immer mit dem unwahr gesetzten "Angenommen"-Flag an den NIM geleitet. Somit muß der NIM an dem empfangenden Ende immer auf den Kern warten, um seine Annahme anzuzeigen. Bei Empfang dieser Antwort von dem Kern, wird die Nachricht an den Urheber zurückgegeben. Wenn die Nachricht angenommen wurde, wird der Urheber sie aus der Time-out-Schlange entnehmen und die Übertragung als erfolgreich betrachten. Wenn jedoch die Nachricht nicht angenommen wurde, weil der Prozeß gelöscht wurde, wird der hervorbringende NIM versuchen, den Ort des Prozesses neu zu entdecken.
- Eine ALL-Modus-Nachricht kann nur sofort an die den benannten Prozeß enthaltende nächste Zelle verbreitet werden, wenn die Nachricht bereits angenommen wurde. Wenn die Nachricht nicht angenommen wurde, muß ihre Verbreitung aufgeschoben werden, bis der Kern angezeigt hat, ob sie angenommen wurde.
- NEXT-Modus- und ALL-Modus-Nachrichten kehren letztendlich zu der hervorbringenden Zelle zurück. Wenn eine Zelle vor Verbreitung der Nachricht ausfällt, wird die hervorbringende Zelle ein Time-out haben. NEXT-Modus-Nachrichten werden erneut übertragen. Eine ALL-Modus-Nachricht kann aber nicht erneut übertragen werden, da nicht bekannt ist, welche Zellen die Nachricht empfingen und welche nicht. Abhängig davon, ob die Nachricht angenommen wurde, wird sie entweder freigemacht oder mit einem Übertragungsfehlerstatus an den Kern zurückgegeben.
- Wann immer ein Prozeß erzeugt oder gelöscht wird, informiert der Kern den NIM. Der NIM unterhält seinen eigenen residenten Prozeßnamen- Cache, der eine dynamische Tabelle bestehend aus einem Satz pro residenten Prozeßnamen ist. Jeder Satz hat drei Felder: der Name des Prozesses, einen Prozeßzähler und ein "Übertragen"-Flag (s. Fig. 7B).
- Wann immer ein Prozeß erzeugt wird, wird der Cache nach dem Namen abgesucht. Wenn er nicht gefunden wird, wird ein Satz mit dem auf eins gesetzten Zähler und auf unwahr gesetzten "Übertragen"-Flag für den Prozeß eingetragen. Wenn der Name bereits in dem residenten Prozeßnamen-Cache vorhanden ist, wird der Prozeßzähler einfach erhöht.
- Wenn ein Prozeß gelöscht wird, wird der dem Prozeß entsprechende Zähler in dem Satz dekrementiert. Wenn er einen Wert von null erreicht, existiert der Prozeß in der Zelle nicht mehr, und der Satz wird aus dem residenten Prozeßnamen-Cache entfernt.
- Wann immer ein Prozeß erzeugt wird, wird eine "Cache Aktualisieren"- Nachricht (s. Fig. 8C) gebildet und an die nächste Zelle in dem logischen Ring übertragen. Das "Übertragen"-Flag wird wahr gesetzt. Sobald übertragen, wird die Nachricht in eine Time-out-Schlange eingeordnet, die ihre Rückkehr erwartet.
- Die "Cache Aktualisieren"-Nachricht enthält den Namen des erzeugten Prozesses und die Adresse der Zelle, auf der er erzeugt wurde. Bei Empfang einer solchen "Cache Aktualisieren"-Nachricht sucht ein NIM in seinem nicht-residenten Prozeßnamen-Cache nach dem Prozeß. Wenn gefunden, wird der nicht-residente Prozeßnamen-Cache aktualisiert, wenn die den neuen Prozeß enthaltende Zelle näher ist als die verzeichnete laufende Zelle, die diesen Prozeß enthält.
- Die "Cache Aktualisieren"-Nachricht wird von Zelle zu Zelle in dem logischen Ring geführt, bis sie an der hervorbringenden Zelle eintrifft. Versagen einer Zelle, die Nachricht zu verbreiten, wird bei der hervorbringenden Zelle ein Time-out und ein erneutes Senden der Nachricht bewirken.
- Beim Löschen eines Prozesses wird keine besondere Maßnahme ergriffen. Ein NIM wird entdecken, daß ein Prozeß aus einer Zelle gelöscht wurde, wenn eine an diese Zelle gesendete ALL-Modus- oder NEXT-Modus- Nachricht abgewiesen und zurückgegeben wird. Die sendende Zelle wird dann versuchen, den Prozeß zu entdecken, und ihren nicht-residenten Prozeßnamen-Cache zu aktualisieren.
- Progammlisten A-E mit einer "C"-Sprachen-Implementierung der Vorstellungen betreffend Nachrichtenübermittlung zwischen Prozessen in einem Datenverarbeitungssystem, das die vorliegende Erfindung beinhaltet, sind in der veröffentlichten Anmeldung EP-A-0201063 beschrieben.
Claims (4)
1. Verfahren zur Lokalisierung von Prozessen in einem verteilten
Datenverarbeitungssystems (1), wobei das System eine Mehrzahl
einzelner Datenverarbeitungszellen (2-7) und mindestens zwei Prozesse
umfaßt, die auf verschiedenen der Zellen residieren. Das Verfahren
umfaßt die Schritte:
(a) Erzeugen einer Anfrage durch einen ersten Prozeß in einer
ersten der Zellen, um den Ort eines zweiten Prozesses zu finden, der
nicht auf der ersten Zelle residiert, wobei das Verfahren
gekennzeichnet ist durch die Schritte:
(b) Übermitteln der Anfrage an eine verschiedene der Zellen;
(c) Bestimmen, ob der zweite Prozeß auf der einen verschiedenen
Zelle resident ist;
(d) wenn der zweite Prozeß auf der einen verschiedenen Zelle
resident ist, Informieren der ersten Zelle über den Ort der einen
verschiedenen Zelle; und
(e) wenn der zweite Prozeß nicht auf der einen verschiedenen
Zelle resident ist, Wiederholen der Schritte (b) und (c), bis entweder
der Ort des zweiten Prozesses gefunden ist, in welchem Fall die erste
Zelle über den Ort der einen verschiedenen Zelle informiert wird, oder
bis alle anderen Zellen in dem System abgefragt wurden, ohne den Ort
des zweiten Prozesses zu finden, in welchem Fall die erste Zelle
informiert wird, daß der zweite Prozeß nicht gefunden werden kann.
2. Verfahren zur Lokalisierung von Prozessen in einem verteilten
Datenverarbeitungssystems (1), wobei das System eine Mehrzahl
einzelner Datenverarbeitungszellen (2-7) und mindestens zwei Prozesse
umfaßt, die auf verschiedenen der Zellen residieren. Das Verfahren
umfaßt die Schritte:
(a) Bereitstellen in mindestens einer der Zellen eine Tabelle von
nicht-residenten Prozessen (441);
(b) Erzeugen einer Anfrage durch einen ersten Prozeß in einer
ersten der Zellen, um den Ort eines zweiten Prozesses zu finden, der
nicht auf der ersten Zelle residiert und nur mit Namen identifiziert
ist, wobei das Verfahren gekennzeichnet ist durch die Schritte:
(c) Übermitteln der Anfrage an eine verschiedene der Zellen;
(d) Bestimmen, ob der zweite Prozeß auf der einen verschiedenen
Zelle resident ist;
(e) wenn der zweite Prozeß auf der einen verschiedenen Zelle
resident ist, Speichern des Ortes der einen verschiedenen Zelle in der
Tabelle; und
(f) wenn der zweite Prozeß nicht auf der einen verschiedenen
Zelle resident ist, Wiederholen der Schritte (c) und (d), bis entweder
der Ort des zweiten Prozesses gefunden ist, in welchem Fall der
Ort der einen verschiedenen Zelle in der Tabelle gespeichert wird,
oder bis alle anderen Zellen in dem System abgefragt wurden, ohne den
Ort des zweiten Prozesses zu finden, im welchem Fall die erste Zelle
informiert wird, daß der zweite Prozeß nicht gefunden werden kann.
3. Verfahren zum Lokalisieren von Prozessen nach Anspruch 2, worin
die Tabelle nur einen Eintrag (414) für den zweiten Prozeß enthält.
4. Verfahren zum Lokalisieren von Prozessen nach Anspruch 3, worin
jeder Eintrag in der Tabelle einen ersten Teil (433) umfaßt, der den
Namen eines Prozesses anzeigt, und einen zweiten Teil (434) umfaßt,
der den Ort einer Zelle anzeigt, wo der Prozeß resident ist.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US06/730,892 US4694396A (en) | 1985-05-06 | 1985-05-06 | Method of inter-process communication in a distributed data processing system |
US06/730,621 US4754395A (en) | 1985-05-06 | 1985-05-06 | Network interface module with minimized data paths |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3688657D1 DE3688657D1 (de) | 1993-08-12 |
DE3688657T2 true DE3688657T2 (de) | 1993-10-21 |
Family
ID=27112081
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE86106066T Expired - Fee Related DE3688657T2 (de) | 1985-05-06 | 1986-05-02 | Methode zur Lokalisierung von Prozessen in einem verteilten Datenverarbeitungssystem. |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP0201063B1 (de) |
DE (1) | DE3688657T2 (de) |
HK (1) | HK1000740A1 (de) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4831582A (en) * | 1986-11-07 | 1989-05-16 | Allen-Bradley Company, Inc. | Database access machine for factory automation network |
US5133053A (en) * | 1987-02-13 | 1992-07-21 | International Business Machines Corporation | Interprocess communication queue location transparency |
US5109483A (en) * | 1987-06-15 | 1992-04-28 | International Business Machines Corp. | Node initiating xid exchanges over an activated link including an exchange of sets of binding signals between nodes for establishing sessions |
US4914571A (en) * | 1987-06-15 | 1990-04-03 | International Business Machines Corporation | Locating resources in computer networks |
NL8801320A (nl) * | 1988-05-20 | 1989-12-18 | Ppg Hellige Bv | Systeemboodschapbehandelingseenheid in een dataverwerkend stelsel. |
JPH03504176A (ja) * | 1989-08-03 | 1991-09-12 | インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン | データ処理ネツトワーク |
US5224205A (en) * | 1990-05-21 | 1993-06-29 | International Business Machines Corp. | Method of combining architecturally dissimilar computing networks into a single logical network |
US5954794A (en) * | 1995-12-20 | 1999-09-21 | Tandem Computers Incorporated | Computer system data I/O by reference among I/O devices and multiple memory units |
US5941959A (en) * | 1995-12-20 | 1999-08-24 | Tandem Computers Incorporated | System for transferring a data stream to a requestor without copying data segments to each one of multiple data source/sinks during data stream building |
US5931903A (en) * | 1995-12-20 | 1999-08-03 | Tandem Computers Incorporated | Computer system data I/O by reference among multiple CPUS |
US5852719A (en) * | 1995-12-20 | 1998-12-22 | Tandem Computers Incorporated | System for transferring data over a network in which a data source sends only a descriptor which a data sink uses to retrieve data |
US5790807A (en) * | 1995-12-20 | 1998-08-04 | Tandem Computers Incorporated | Computer sysem data I/O by reference among CPUS and I/O devices |
DE19624929C2 (de) | 1996-06-21 | 2001-08-02 | Siemens Ag | Prozeßautomatisierungssystem |
AU5413998A (en) * | 1997-04-08 | 1998-10-30 | Woorigisool Inc. | A local-area information offering system and a local-area information receiver for the system |
SE511098C2 (sv) * | 1997-12-08 | 1999-08-02 | Ericsson Telefon Ab L M | Kommunikationssystem och förfarande för att sända meddelanden i ett kommunikationssystem |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4423414A (en) * | 1981-08-27 | 1983-12-27 | Burroughs Corporation | System and method for name-lookup in a local area network data communication system |
-
1986
- 1986-05-02 EP EP86106066A patent/EP0201063B1/de not_active Expired - Lifetime
- 1986-05-02 DE DE86106066T patent/DE3688657T2/de not_active Expired - Fee Related
-
1997
- 1997-12-01 HK HK97102302A patent/HK1000740A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
EP0201063A3 (en) | 1989-04-05 |
EP0201063A2 (de) | 1986-11-12 |
EP0201063B1 (de) | 1993-07-07 |
HK1000740A1 (en) | 1998-04-24 |
DE3688657D1 (de) | 1993-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3855166T2 (de) | Selbstkonfiguration von Knotenpunkten in einem verteilten, auf Nachrichten gegründeten Betriebssystem | |
DE3688657T2 (de) | Methode zur Lokalisierung von Prozessen in einem verteilten Datenverarbeitungssystem. | |
DE69232881T2 (de) | Verbesserter Digitalprozessor mit verteiltem Speichersystem | |
DE69228621T2 (de) | Objektorientiertes verteiltes Rechnersystem | |
DE3689990T2 (de) | Flexible Datenübertragung für nachrichtenorientierte Protokolle. | |
DE3856552T2 (de) | Multiprozessor-Digitaldatenverarbeitungssystem und Verfahren zum Betreiben dieses Systems | |
DE69122830T2 (de) | Verteiltes Konfigurationsprofil für ein Rechnersystem | |
DE3852324T2 (de) | Verfahren und System zur Netzwerkverwaltung. | |
DE69230093T2 (de) | Multiprozessorsystem | |
DE69728176T2 (de) | Verfahren und gerät das verteilte steuerung von gemeinsamen betriebsmitteln erlaubt | |
DE69032191T2 (de) | Anordnung und Verfahren zur Realisierung von Hochleistungskommunikation zwischen Softwareprozessen | |
DE69127919T4 (de) | Gerät und Verfahren zur Durchführung einer anwendungsbestimmten Operation auf Daten als Teil einer systembestimmten Operation auf die Daten | |
DE69901291T2 (de) | Verfahren und vorrichtung zur datenübertragung zwischen der caches von netzwerkknoten | |
DE69129479T2 (de) | Verteiltes Rechnersystem | |
DE69721640T2 (de) | Multiprozessor-Rechnersystem und Verfahren zur Steuerung des Verkehrsflusses | |
DE69226858T2 (de) | Kommunikationssystem | |
DE69229156T2 (de) | Digitaldatenprozessor mit verbesserter Wiederanlaufkennzeichnung und Verzweigung | |
DE69112156T2 (de) | Gerät zur Realisierung von Datenbanken zum Verschaffen von objektorientiertem Aufrufen von Anwendungsprogrammen. | |
DE69722512T2 (de) | Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll | |
DE68919631T2 (de) | Verfahren zur Verarbeitung von Programmteilen eines verteilten Anwendungsprogramms durch einen Hauptrechner und einen intelligenten Arbeitsplatz in einer SNA LU 6.2-Netzwerkumgebung. | |
DE69804099T2 (de) | Initialisierung von unterteilten datenobjekten | |
DE69916928T2 (de) | Zugriffsverfahren und Server für Netzwerkverzeichnis | |
DE69229473T2 (de) | Verfahren und vorrichtung zum puffern von daten in nachrichtennetzwerkstationen | |
DE3688893T2 (de) | Datentransfer und Puffersteuerung mit mehrfachen prozesstransparenten Speicherbetriebsarten. | |
DE69429686T2 (de) | Transaktionsverwaltung in objektorientiertem System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |