DE3851507T2 - Flusssteuerungssystem für Bus. - Google Patents

Flusssteuerungssystem für Bus.

Info

Publication number
DE3851507T2
DE3851507T2 DE3851507T DE3851507T DE3851507T2 DE 3851507 T2 DE3851507 T2 DE 3851507T2 DE 3851507 T DE3851507 T DE 3851507T DE 3851507 T DE3851507 T DE 3851507T DE 3851507 T2 DE3851507 T2 DE 3851507T2
Authority
DE
Germany
Prior art keywords
message
bus unit
bus
queue
group
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
Application number
DE3851507T
Other languages
English (en)
Other versions
DE3851507D1 (de
Inventor
William Elder Hammer
Walter Henry Schwane
Frederick Joseph Ziecina
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of DE3851507D1 publication Critical patent/DE3851507D1/de
Publication of DE3851507T2 publication Critical patent/DE3851507T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)
  • Small-Scale Networks (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

    Technische Grundlagen der Erfindung
  • Die Erfindung betrifft die Steuerung des Flusses von Verarbeitungsvorgängen zwischen Prozessen auf einem Bus und insbesondere die Verwaltung von logischen Verbindungen zwischen Prozessen für die gemeinsame Nutzung von Prozessorressourcen.
  • Bei früheren Prozeß-zu-Prozeß-Übertragungen, wobei die Übertragungsverfahren für die kommunizierenden Prozesse transparent sind, fordert eine Einheit, die Prozesse enthält, Verarbeitungsvorgänge an, die von einer anderen Einheit auf dem Bus ausgeführt werden müssen. Die Daten, mit denen gearbeitet werden muß, befinden sich im Speicher des Anforderers, und die Servereinheit, das heißt die die Anforderung aus führende Einheit, kann auf die Daten zugreifen. Früheren Systemen fehlte ein Mittel zur gerechten Verwaltung der logischen Verbindung zwischen Prozessen, so daß ein Mindestdienstgrad verfügbar wäre. Der Dienstgrad hängt von den dem System zugeordneten Ressourcen ab.
  • Was Programmierprozesse betrifft, so ist die Ressource, die gemeinsam genutzt wird, der vom Serverprozeß bereitgestellte Verarbeitungsvorgang. Allen Benutzern eines Servers muß ein Mindestzugriff auf diese Ressource garantiert sein, das heißt es muß ihnen gestattet sein, eine Anzahl von ausstehenden Verarbeitungsanforderungen zu haben, und es muß feststehen, daß diese Anforderungen schließlich dem Server zur Bearbeitung präsentiert werden.
  • Die meisten Busimplementierungen verwenden einzelne Signalleitungen, um die Annahme oder Zurückweisung von Nachrichten, die Verarbeitungsanforderungen anzeigen, zu bestätigen. Für Anwendungen der Datenfernübertragung wurde für die Flußsteuerung ein Verfahren der Nachrichtendosierung implementiert. SNA (Systems Network Architecture, Systemnetzwerkarchitektur) verwendet ein Zählverfahren. Der Verursacher von Nachrichten kann eine maximale Anzahl von Nachrichten anstehen lassen, bis eine Bestätigung empfangen wird. Die Anzahl der Nachrichten, die anstehen könnten, muß vom Empfänger der Nachrichten ermittelt werden, und für die Steuerung der Nachrichtendosierung von anstehenden Nachrichten wäre der Sender von Nachrichten zuständig. Folglich ist jeder einzelne Sender und Empfänger unmittelbar an der Flußsteuerung beteiligt.
  • In der US-Patentschrift Nr. 4 449 182 sind ein Befehlsring und ein Antwortring im Host-Hauptspeicher gespeichert. Sie enthalten Speicherplatz für Befehle an einen Ein-/Ausgabesteuereinheiten- Prozessor und Speicherplatz für Antworten auf die Befehle von der Steuereinheit. Für jede Ein-/Ausgabesteuereinheit gibt es einen Antwortring und einen Befehlsring. Es wird ein Eignerstatusbit verwendet, um zu verhindern, daß einer der Prozessoren einen Befehl, der noch nicht von der Ein-/Ausgabesteuereinheit bearbeitet wurde, oder eine Antwort, die vom Host noch nicht gelesen wurde, überschreibt. Falls der Befehlsring voll oder der Antwortring leer ist, wird der Host angewiesen, mit der Überprüfung der Ringe nicht fortzufahren, bis er eine Unterbrechung empfängt, die anzeigt, daß der Befehlsring nicht voll geworden ist oder daß der Antwortring nicht leer geworden ist. Beide Prozessoren enthalten Zeiger, welche die nächste Position in den Ringen, die gelesen oder geschrieben werden muß, anzeigen. Folglich wurde auf eine sehr primitive Art und Weise ein einfacher Typ von Flußsteuerung zwischen Einheiten eingerichtet.
  • Die obige Patentschrift spricht nicht das Problem der Ressourcenzuordnung für mehrere, miteinander kommunizierende Prozesse an. Es ist kein Mindestdienstgrad durch mehrere, in einem Prozessor aktive Prozesse garantiert. Übertragungen in einer Umgebung mit mehreren Prozessen sind aufgrund der verschiedenen Warteschlangenverzögerungen und der Unabhängigkeit der Prozesse wesentlich komplizierter.
  • Zusammenfassung der Erfindung
  • Das Hauptziel der Erfindung ist die Bereitstellung eines Kommunikationsverwaltungssystems gemäß Anspruch I.
  • Ein Verfahren zur Kommunikationsverwaltung für eine Buseinheit in einem verteilten Prozessornetz verwaltet logische Verbindungen zwischen kommunizierenden Prozessen, um zu gewährleisten, daß ein Mindestdienstgrad für jeden Prozeß verfügbar ist. Eine Buseinheit ist eine Verarbeitungseinheit, die in einem verteilten Prozessornetz an den Bus angeschlossen ist, und kann beispielsweise einen oder mehrere Hosts oder Ein-/Ausgabe (E/A)-Prozessoren umfassen. Logische Verbindungen zwischen Prozessen werden bei jedem der Prozessoren mittels eines Busverwalters in Verbindungsgruppen zusammengefaßt. Jede Verbindungsgruppe erhält ausreichend Prozessorressourcen, um mindestens eine Verarbeitungsanforderung auszuführen. Hat eine Verbindungsgruppe bereits ihre Grenze an ausstehenden Verarbeitungsanforderungen erreicht, informiert der Busverwalter Buseinheiten, die Prozesse enthalten, die Verarbeitungsvorgänge anforderten, nachdem die Gruppe voll war, daß ihre Anforderung zu diesem Zeitpunkt nicht ausgeführt werden kann.
  • Aufgrund der Hardware-Warteschlangenverzögerungen kann ein anfordernder Prozeß eine weitere Verarbeitungsanforderung senden, die für einen Prozeß bestimmt ist, der mit der Verbindungsgruppe, die voll war, verbunden ist. Der Busverwalter weist die Anforderung wieder zurück und informiert die Buseinheit des Absenders. Wenn der Verarbeitungsvorgang von einem Prozeß in der Verbindungsgruppe beendet ist, informiert der Busverwalter die Buseinheit, daß sie nun weitere Verarbeitungsanforderungen annehmen kann. Da es wünschenswert ist, Verarbeitungsanforderungen in der Reihenfolge zu bearbeiten, in der sie gesendet wurden, startet die anfordernde Buseinheit ihre Verarbeitungsanforderungen in der richtigen Reihenfolge neu und informiert anschließend die Buseinheit des Serverprozesses, daß sie wieder mit der Annahme von Verarbeitungsanforderungen beginnen muß. Die anfordernde Buseinheit sendet dann die Anforderungen, die von der Buseinheit des Servers nur nach dem Empfang der Neustartnachricht vom Anforderer angenommen werden.
  • Die Verwendung von Verbindungsgruppen bringt deutliche Vorteile mit sich. Es handelt sich um ein einziges Verfahren zur Flußsteuerung auf der untersten Programmierebene, und es wird für alle Buseinheiten verwendet. Ein Host oder eine Ein-/Ausgabesteuereinheit, die verschiedene Typen von Einheiten unterstützen, wie Datenfernverarbeitung, Sekundärspeicher, Datenstationen, . . . alle verwenden unabhängig von der Aufgabe der Buseinheit das Verfahren zur Flußsteuerung. Es unterstützt eine Peerzu-Peer-Umgebung auf dem Bus, weil es für alle Buseinheiten gleich ist.
  • Die Verbindungsgruppen verhindern, daß eine Buseinheit aufgrund von hoher Aktivität anderer Buseinheiten von den Diensten einer anderen Buseinheit abgeschnitten wird. Dies erfolgt, indem mindestens eine an den Bus angeschlossene Verbindungsgruppe benötigt wird und indem diese Verbindungsgruppe nur für Verbindungen zwischen Prozessen auf zwei eindeutigen Prozessoren zuständig ist. Folglich muß ein an zwei andere Prozessoren gekoppelter Prozessor mindestens zwei Verbindungsgruppen, eine für jeden Prozessor, aufweisen.
  • In einer bevorzugten Ausführungsform gibt es drei Arten von Verbindungsgruppen für Datenübertragungen zu jedem der anderen Prozessoren, mit dem Kommunikation gewünscht wird. Prozesse mit geringer Aktivität gehören zu einer Verbindungsgruppe, die stets nur ein paar Verarbeitungsanforderungen annehmen kann. Prozesse mit mittlerer Aktivität gehören zu einer Verbindungsgruppe, die mehr Verarbeitungsanforderungen annehmen kann, und Prozesse mit hoher Aktivität gehören zu einer Verbindungsgruppe, die über viele Systemressourcen verfügt, um eine große Anzahl von Verarbeitungsanforderungen anzunehmen. Auf diese Weise ist der Dienstgrad für verschiedene Prozessoren in Abhängigkeit vom erwarteten Angebot an Verarbeitungsvorgängen garantiert.
  • Die Verwendung der oben genannten Nachrichten um anzuzeigen, wann eine Verbindungsgruppe voll ist, und um die Rücksendung zurückgewiesener Nachrichten in dieser Verbindungsgruppe zu koordinieren, bringt weitere Vorteile mit sich. Sie garantiert, daß Verarbeitungsvorgänge in der vorgesehenen Reihenfolge ausgeführt werden.
  • Verbindungsgruppen ermöglichen die Zuweisung einer Verbindungsgruppe zu Prozessen, deren Aufgabe es ist, Ressourcen in kritischen Situationen freizustellen. So können Ressourcen freigestellt werden, falls mindestens eine Verarbeitungsanforderung von dieser Gruppe empfangen werden kann. Ein Mittel zur Freistellung von Ressourcen besteht darin, die Verarbeitungsvorgänge vollständig abzuschalten und das System zurückzusetzen.
  • Ein weiterer Vorteil der Gruppierung von Ressourcen ist die Fähigkeit, mehrere Einheiten zu unterstützen. Jede Einheit hat eine Mindestmenge an Ressourcen, die sie zum Ausführen von Arbeitsgängen benötigt. Indem weniger Ressourcen in einer Verbindungsgruppe bereitgestellt werden (die pro Einheit benötigte Mindestmenge begrenzt die Anzahl der Einheiten in der Gruppe), können mehr Einheiten an ein System angeschlossen werden. Ein Beispiel ist eine Einheit mit Bandlaufwerk. Es sollen mehrere Bandlaufwerke angeschlossen werden, und jedes Laufwerk hat einen hohen Bedarf an Speicherplatz für Pufferdaten; durch die Zuordnung von genügend Ressourcen zu jedem Bandlaufwerk würden wenige Ressourcen für Einheiten mit Direktzugriffsspeicher verfügbar bleiben. Durch die Zusammenfassung der Bandlaufwerke in einer Verbindungsgruppe und die Zuordnung von genügend Ressourcen, damit nur eines oder zwei gleichzeitig betrieben werden können, stehen genügend Ressourcen für Einheiten mit Direktzugriffsspeicher zur Verfügung. Es ist ein garantierter Unterstützungsgrad für Einheiten mit Bandlaufwerken und außerdem für Einheiten mit Direktzugriffsspeicher gewährleistet. Da es unwahrscheinlich ist, daß fünf Bandeinheiten gleichzeitig in Betrieb sind, erfolgt keine Verringerung des Gesamtdienstes.
  • Kurze Beschreibung der Zeichnungen
  • Fig. 1 ist eine Blockdiagrammübersicht eines Systems mit mehreren Prozessen mit einer Einrichtung zur Interprozeßkommunikation für die Übertragung zwischen Prozessen, die der US-Patentschrift Nr. 4 649 473 entnommen wurde.
  • Fig. 2 ist eine Blockdiagrammübersicht des Systems mit mehreren Prozessen aus Fig. 1, die logische Verbindungsgruppen mit logischen Verbindungen zwischen Prozessen zeigt.
  • Fig. 3 zeigt eine Tabelle und einen Steuerblock, die bei der Verwaltung logischer Verbindungsgruppen aus Fig. 2 verwendet werden.
  • Fig. 4 ist ein Blockflußdiagramm, das eine anfordernde Buseinheit zeigt, die auf einen Status "Warteschlange voll" für Verarbeitungsanforderungen antwortet, der für eine Verbindungsgruppe, die nicht genug Ressourcen hat, um mehr Verarbeitungsanforderungen anzunehmen, bestimmt ist.
  • Fig. 5 ist ein weiteres Flußdiagramm der anfordernden Buseinheit aus Fig. 4 für das Antworten auf einen Status "Warteschlange voll".
  • Fig. 6 ist ein Blockdiagramm von Warteschlangen, die von der anfordernden Buseinheit aus Fig. 4 zum Antworten auf einen Status "Warteschlange voll" verwendet werden.
  • Fig. 7 ist ein Blockflußdiagramm einer Serverbuseinheit, das den Fluß beim Bestimmen, ob genügend Ressourcen in einer Verbindungsgruppe verfügbar sind, und, falls dies nicht der Fall ist, beim Senden einer Nachricht "Warteschlange voll" zeigt.
  • Fig. 8 ist ein weiteres Flußdiagramm der Serverbuseinheit aus Fig. 7, um zu bestimmen, wann Ressourcen für eine Verbindungsgruppe verfügbar geworden sind, und um eine Nachricht "Pufferbereich verfügbar" zu senden.
  • Fig. 9 ist ein Blockdiagramm, das die Felder einer Nachricht "Busfehlerbedingung" zum Auflisten von Fehlern und zum Anzeigen eines Status "Warteschlange voll" zeigt.
  • Fig. 10 ist ein Blockdiagramm, das die Felder einer Nachricht "Pufferbereich verfügbar" zeigt, um anzuzeigen, daß Ressourcen für eine Verbindungsgruppe frei sind.
  • Fig. 11 ist ein Blockdiagramm, das die Felder einer Nachricht "Warteschlange neu starten" zeigt, um eine Verbindungsgruppe zu informieren, mit der Annahme von Verarbeitungsanforderungen zu beginnen.
  • Fig. 12 ist ein Diagramm des an einer Bedingung "Warteschlange voll" beteiligten Nachrichtenflusses für eine Verbindungsgruppe.
  • Fig. 13 ist ein Blockdiagramm, das die Felder einer Nachricht "Verarbeitungsstart" (VERARBSTART) zeigt, um anzuzeigen, daß eine Verarbeitungsanforderung für einen gekennzeichneten Prozeß vorliegt.
  • Fig. 14 ist ein Blockdiagramm, das die Felder eines Anforderung/Antwort-Steuerblocks zeigt, der verwendet wird, um die Positionen von Anforderungen und Daten zu kennzeichnen.
  • Fig. 15 ist ein Blockdiagramm, das die Felder eines Zusatzes zum Anforderung/Antwort-Steuerblock zeigt.
  • Fig. 16 ist ein Blockdiagramm, das die Felder einer Nachricht "Verarbeitungsende" (VERARBENDE), um anzuzeigen, daß eine Antwort auf eine Verarbeitungsanforderung vorliegt, zeigt.
  • Ausführliche Beschreibung
  • Fig. 1 ist der US-Patentschrift Nr. 4 649 473 entnommen. Sie wird verwendet, um dem Leser eine Grundlage für ein besseres Verständnis der hier vorgestellten Erfindung zu schaffen. Der anschließende Text beschreibt Fig. 1 und konzentriert sich auf die Prozeß-zu-Prozeß-Übertragung, wobei die Prozesse keine Kenntnis von der zugrundeliegende Kommunikationsverwaltung haben. Die zugrundeliegende Bustransporteinrichtung und ein Busverwalter, welcher der Gegenstand dieser Erfindung ist, werden in einem späteren Abschnitt beschrieben.
  • In Fig. 1 ist eine Ansicht der oberen Ebene einer verteilten Prozeßumgebung allgemein bei 10 gezeigt. Ein bei 12 dargestellter Prozessor A ist über einen mittels einer Linie 14 dargestellten physischen Pfad mit einem bei 16 dargestellten Prozessor B verbunden. Der Prozessor A ist mit einem bei 18 dargestellten Prozeß A und einem bei 19 dargestellten Prozeß B, die sich darin befinden, dargestellt. Ein Speicherbereich 20 ist mit dem Prozeß A und dem Prozeß B verbunden, wie jeweils durch die Linien 21 und 22 dargestellt ist, um die Steuerung der und den Zugriff auf die Datenspeicherung durch die Prozesse zu gewährleisten.
  • Der Prozessor B ist mit einem bei 23 gezeigten Prozeß C und einem bei 24 gezeigten Prozeß D, die sich darin befinden, dargestellt. Ein Speicherbereich 25 ist mit dem Prozeß C und dem Prozeß D verbunden, wie jeweils durch die Linien 26 und 28 dargestellt ist, um die Steuerung der und den Zugriff auf die Datenspeicherung durch die Prozesse zu gewährleisten.
  • Prozesse oder aus führende Programme innerhalb der Prozessoren müssen miteinander kommunizieren. In Prozessoren mit verschiedenen Konfigurationen oder, da er sich mit der Zeit ändert, in demselben Prozessor können sich zwei kommunizierende Prozesse an verschiedenen relativen Positionen befinden, und dazwischen können verschiedene physische Pfade liegen.
  • Eine Einrichtung zur Interprozeßkommunikation (IPCF) ist im Prozessor A und im Prozessor B jeweils bei 30 und 32 vorgesehen, um die Interprozeßkommunikation anzupassen, die für die kommunizierenden Prozesse positionstransparent ist. Die IPCF 30 ist mit dem Prozeß A im Prozessor A verbunden, wie durch eine Linie 34 dargestellt ist, und mit dem Prozeß B, wie durch eine Linie 36 dargestellt ist. Die Linien 34 und 36 stellen die Schnittstellen zwischen dem Prozeß A und dem Prozeß B zur IPCF 30 dar. Diese Schnittstellen ermöglichen die Übertragung zwischen dem Prozeß A und dem Prozeß B, vorausgesetzt, daß geeignete Datenpfade eingerichtet sind. Die IPCF 30 ist außerdem über eine Transporteinrichtung 40 im Prozessor B mit der IPCF 32 verbunden. Die IPCF 32 ist, wie durch die Schnittstellenlinien 42 und 44 dargestellt ist, mit dem Prozeß C und dem Prozeß D verbunden. Diese Schnittstellen mit den IPCFs und den Transporteinrichtungen ermöglichen die Einrichtung der Übertragung zwischen allen gezeigten Prozessen, ohne daß ein Prozeß die Position des Prozesses, mit dem er kommuniziert, kennt. Die Transporteinrichtungen 38 und 40 umfassen bevorzugterweise eine Mehrzahl von Transporteinrichtungen wie lokale Transporteinrichtungen, die verwendet werden, wenn der Prozeß A und der Prozeß B oder der Prozeß C und der Prozeß D mit einem einzelnen Prozessor kommunizieren. Befinden sich der Prozessor A und der Prozessor B in demselben Gerät, wird eine Bustransporteinrichtung verwendet, um die Übertragung zwischen Prozessen im Prozessor A und im Prozessor B zu erleichtern. Für Intermaschinenkommunikation ist ein Übertragungsprotokoll wie SNA geeignet.
  • Die Transporteinrichtungen 38 und 40 sind Datenübertrager. Sie sind für die Übertragung von Datenbytes von einem Ort an einen anderen zuständig und verstehen die Bedeutung der übertragenen Informationen nicht. Folglich ist der Speicher 20 im Prozessor A, wie durch eine Linie 46 dargestellt ist, mit der Transporteinrichtung 38 verbunden, und der Speicher 25 im Prozessor B ist, wie durch eine Linie 48 dargestellt ist, mit der Transporteinrichtung 40 verbunden, um Informationsübertragungen unmittelbar durch die Transporteinrichtungen 38 und 40 zu ermöglichen.
  • Die IPCF des Prozesses, der zu kommunizieren versucht, wählt die Transporteinrichtung für die Übertragung. Die kommunizierenden Prozesse müssen die verwendete Einrichtung nicht kennen. Der Prozeß, der zu kommunizieren versucht, überträgt den Namen des Zielprozesses, da dieser dem Prozeß, der zu kommunizieren versucht, bekannt ist, an die IPCF, die einen geeigneten Verzeichniszugriffsdienst wählt, um ihn zu lokalisieren. Die IPCF wählt anschließend die geeignete Transporteinrichtung und verwendet systemunterstützte Dienste, um die Verbindung zwischen den Prozessen standardmäßig einzurichten. Die IPCF kann von allen Prozeßebenen, von Anwendungen bis hin zu Basissystemdiensten wie einem Seitenwechselverwalter, verwendet werden.
  • Um die Verwendung vieler verschiedener Transporteinrichtungen, von denen jede verschiedene Fähigkeiten und Merkmale hat, zu ermöglichen, weist die IPCF eine generische Transporteinrichtungs-Schnittstelle mit jedem Prozeß auf. Die Schnittstelle definiert einen Satz von Funktionen für die Einrichtung von Verbindungen und für die Übertragung von Informationen zwischen Prozessen. Die definierten Funktionen sind auf den von der IPCF verwendeten Transporteinrichtungen abgebildet. Die auf die Schnittstelle geschriebenen Programme sind unabhängig von der Transporteinrichtung und sind daher während der Übertragung unabhängig von ihren relativen Positionen.
  • Die Übertragung zwischen Prozessen erfolgt, was das Senden und Empfangen von Nachrichten über eine Verbindung zwischen ihnen betrifft, wie von der IPCF eingerichtet. Die Nachrichten enthalten Verarbeitungsanforderungen und/oder Daten. Entsprechend einer bestimmten Verarbeitungsanforderung übernimmt ein Prozeß die Aufgabe eines Anforderers oder eines Servers. Der Anforderer leitet eine Verarbeitungsanforderung ein, indem er eine Anforderung zu einem Server sendet, der diese ausführt. Anforderungen enthalten eine Verarbeitungsanforderung (einen Befehl und seine Parameter) und wahlweise einige Daten. Sowohl die Anforderung als auch die Daten haben eine veränderliche Länge.
  • Falls der Leser weitere Informationen über die IPCF und die Art und Weise, wie Verbindungen eingerichtet werden, wünscht, bietet die oben erwähnte Patentschrift weitere Einzelheiten. Nun wird ein Busverwalter, der ein Teil der Transporteinrichtungen 38 und 40 ist, beschrieben.
  • BUSVERWALTER
  • In Fig. 2 sind zwei Buseinheiten 50 und 52 über einen physischen Pfad, wie einem E/A(Eingabe und Ausgabe)-Bus 54, verbunden. In einer bevorzugten Ausführungsform umfaßt die Buseinheit 50 ein Hostsystem mit einem Prozessor 56, mit dem ein Hauptspeicher 58 durch eine Leitung 60 verbunden ist. Der Host 56 führt eine Mehrzahl von Programmen aus, von Abrechnungsprogrammen bis hin zu Betriebssystemprogrammen. Auf eine ausführende Instanz eines Programms wird als Prozeß Bezug genommen. Einige Prozesse PA1 bis PAn, PB1 bis PBn und PC1 bis PCn sind im Host 56 gezeigt.
  • Die Buseinheit 52 umfaßt in einer bevorzugten Ausführungsform einen E/A-Prozessor 66, mit dem ein Hauptspeicher 68 über eine Leitung 70 verbunden ist. Der E/A-Prozessor 66 weist außerdem eine Anzahl von Prozessen PD1 bis PDn, PE1 bis PEn und PF1 bis PFn auf, die ausführen können. Obwohl eine große Anzahl von Prozessen in jedem der Prozessoren 56 und 66 gezeigt wird, kann es Situationen geben, in denen ein Prozessor nur einen Prozeß hat. In weiteren Ausführungsformen ist der Prozessor 66 ein Peer-Prozessor in einem Netz von Prozessoren. Prozesse kommunizieren, unabhängig von den Positionen zweier kommunizierender Prozesse, über die IPCF 72 in der Buseinheit 50 und die IPCF 74 in der Buseinheit 52 miteinander. Jedes Paar kommunizierender Prozesse ist über die IPCF mittels logischer Verbindungen, die durch die Linien 80 in der Buseinheit 50 und 82 in der Buseinheit 52 dargestellt sind, logisch verbunden.
  • Die Einrichtung von Verbindungen ist in der oben enthaltenen Patentschrift ausführlicher beschrieben. Im wesentlichen richtet ein IPCF-Verb "Öffnen" eine IPCF-Verbindung zwischen zwei Prozessen ein. Die Verbindung ist für jedes Paar kommunizierender Prozesse eindeutig. Folglich paßt jede der Linien 80 zu einer der Linien 82. Da mehr E/A-Prozessoren oder Hosts als in Fig. 2 gezeigt vorhanden sein können, zeigen mehr Linien 80 als Linien 82 Verbindungen zu Prozessen in nicht gezeigten Prozessoren an. Das Verb "Öffnen" bewirkt, wenn von einem Prozeß ausgegeben, der eine Übertragung starten möchte, daß die IPCF eine logische Verbindung zwischen dem Prozeß, der das Verb "Öffnen" ausgab, und dem durch das Verb "Öffnen" gekennzeichneten Zielprozeß erzeugt. Das Ziel des Verbs "Öffnen" ist durch einen Instanznamen gekennzeichnet. Das Verb "Öffnen" richtet die Verbindung zu einer neuen oder einer bereits ausführenden Instanz eines Programms in Abhängigkeit von dem durch das Verb "Öffnen" übertragenen Instanznamen ein.
  • Das Verb "Öffnen" weist einen Instanznamen auf, der von der IPCF und den zugeordneten Betriebssystemen verwendet wird, um das Programm im Server und die aus führende Instanz dieses Programms (d. h. Prozesses), mit der die Verbindung eingerichtet werden muß, zu bestimmen. Eine Verbindungs-ID kennzeichnet die von der IPCF gemeldete Verbindung. Sie wird verwendet, um bei nachfolgenden Arbeitsgängen auf diese Verbindung Bezug zu nehmen. Eine bestimmte Verbindungs-ID ist nur innerhalb eines einzelnen Prozessors bekannt. Zwei verbundene Prozessoren haben im allgemeinen verschiedene Verbindungs-IDs für dieselbe Verbindung. Verbindungs-IDs werden von der lokalen IPCF zugewiesen und sind innerhalb eines Prozessors eindeutig. Die IPCF verwendet einen Rückkehrcode, um dem Prozeß die Beendigung des Verbs "Öffnen" anzuzeigen.
  • Es wird ein Busverwalter 86 gezeigt, der durch eine Anzahl von bereits eingerichteten logischen Verbindungen so mit dem Rost 56 verbunden ist. Ein ähnlicher Busverwalter 88 ist, ebenfalls mit Mehrfachverbindungen 82, in der Buseinheit 52 gezeigt. Der Busverwalter 86 erfüllt die gleichen Funktionen, die von den Bustransporteinrichtungen (BTMs), die in den Buseinheiten aus Fig. 1 bei 38 und 40 dargestellt sind, ausgeführt werden.
  • Die Busverwalter 86 und 88 verwalten die Verbindungen und geben Nachrichten aus, um den Fluß der Verarbeitungsanforderungen auf dem Bus 54 zu steuern. Die den Bus unterstützende Hardware, die bei 90 und 92 dargestellt ist, gewährleistet dem Bus Priorität für jede der Buseinheiten, DMA (Direct Memory Access, direkter Speicherzugriff) auf den Hauptspeicher einer anderen Buseinheit und Warteschlangenbildung für Nachrichten von den jeweiligen Busverwaltern bis eine Steuerung des Busses erreicht wurde, um eine Übertragung der Nachrichten und Daten zu gestatten. Die Bus-Hardware steuert auch die Warteschlangenbildung für Nachrichten von den Buseinheiten in Hauptspeicher-Warteschlangen.
  • Der Busverwalter 86 empfängt eine Übertragung, die durch ein in der Buseinheit 52 ausgegebenes Verb "Öffnen" bewirkt wurde. Anschließend richtet er eine Verbindung zu dem angezeigten Prozeß ein. Unter Verwendung von Informationen wie der Identität des Zielprozesses (d. h.: des Serverprozesses), der Identität des anfordernden Prozesses, dem Typ des Verarbeitungsvorgangs, den eine bestimmte Einheit ausführt, oder anderen Faktoren, wird die Verbindungs-ID für diese Verbindung einer Mehrzahl von Verbindungsgruppen zugewiesen, die als CG1, CG2, . . . , CGn bezeichnet werden. Einige der Informationen sind in der Kommunikation mit der Buseinheit 52 enthalten. Andere Informationen sind im Hauptspeicher 58 enthalten, und auf diese wird in Abhängigkeit von der durch die Buseinheit 52 gelieferten Informationen zugegriffen. Die Zuweisung erfolgt dann aufgrund dieser Informationen und ist in einer bevorzugten Ausführungsform durch die Entwickler voreingestellt.
  • Verbindungsgruppen werden verwendet, um den Fluß der Verarbeitungsanforderungen zu steuern. Jede Verarbeitungsanforderung benötigt zur Verarbeitung Systemressourcen. Falls alle Verarbeitungsanforderungen auf einer "First-Gome/First-Served-Basis" bearbeitet würden, würde eine Anzahl von Einheiten mit großem Ressourcenbedarf verhindern, daß andere Einheiten bearbeitet werden können.
  • Ein Beispiel einer Einheit, die einen hohen Bedarf an Hauptspeicherressourcen hat, ist eine Bandlaufwerkeinheit. Damit eine Bandeinheit im Datenstrommodus, ihrem leistungsfähigsten Betriebsmodus, betrieben werden kann, wird ein großer Hauptspeicherpuffer benötigt. Falls mehrere Bandlaufwerke angeschlossen werden sollen und jedes einen hohen Speicherbedarf für Pufferdaten hat, wenn es im Datenstrommodus betrieben wird, würden durch die Zuweisung von genügend Ressourcen zu jedem Bandlaufwerk wenige Ressourcen verfügbar bleiben, um Einheiten mit Direktzugriffsspeicher zugeordnet zu werden. Indem die Bandlaufwerke in einer Verbindungsgruppe zusammengefaßt werden und genügend Ressourcen zugeordnet werden, daß eines oder zwei gleichzeitig betrieben werden können, sind viel mehr Ressourcen für Einheiten mit Direktzugriffsspeicher verfügbar. Es ist ein garantierter Unterstützungsgrad für Bandlaufwerkeinheiten und auch für Einheiten mit Direktzugriffsspeicher gewährleistet. Da es unwahrscheinlich ist, daß fünf Bandeinheiten zur gleichen Zeit betrieben werden, wird der Gesamtdienst nicht verringert.
  • Verbindungsgruppen können außerdem verwendet werden, um zu gewährleisten, daß stets Ressourcen für bestimmte Hostprozesse verfügbar sind. Ein Beispiel ist die Plazierung der Serverseitenverbindung zwischen einem Hostprozeß "Sichern/Fortsetzen" und einem entsprechenden E/A-Prozeß in eine Verbindungsgruppe, wo dies die einzige Verbindung in dieser Gruppe ist. Folglich sind stets Ressourcen für die Bearbeitung der Host-Verarbeitungsanforderung "Sichern/Fortsetzen" verfügbar, obwohl der Serverprozeß Verbindungen zu anderen Gruppen haben kann.
  • Eine Basis für die Zuordnung von Gruppen sind die Betriebsmerkmale der Einheiten. Umfangreiche Datenübertrager wie Bandeinheiten, die außerdem nur gelegentlich verwendet werden, werden in einer Gruppe zusammengefaßt. Einheiten, wie Einheiten mit Direktzugriffsspeicher, die beim Umstellen von Daten in einen und aus einem Hauptspeicher häufig verwendet werden, werden in einer anderen Gruppe zusammengefaßt, und der Gruppe wird eine große Menge von Ressourcen zugeordnet, um einen hohen Dienstgrad zu gewährleisten. Andere Einheiten, wie Datenstationen, werden in einer anderen Gruppe zusammengefaßt. Falls genügend Ressourcen verfügbar sind, hat jede Einheit ihre eigene Gruppe.
  • Bei der Erläuterung der Zusammenfassung von Einheiten in Gruppen soll kurz angemerkt werden, daß die Verbindungen zu Prozessen, die mit der Einheit verbunden sind, in einer Gruppe zusammengefaßt werden. Weitere Zuweisungen von Verbindungen in Gruppen werden aufgrund der Typen von Verarbeitungsanforderungen, die bearbeitet werden, gemacht. Verbindungen, die sich auf die Bearbeitung einer Fehlerbedingung beziehen, und andere, die Verwaltung betreffende Verarbeitungsanforderungen können für sich in einer anderen Gruppe zusammengefaßt werden, um solchen Anforderungen einen Mindestdienstgrad zu garantieren. Es wird deutlich, daß die Verwendung von Verbindungsgruppen eine hohe Flexibilität bei der Zuordnung von Ressourcen und folglich bei der Steuerung des Flusses von Verarbeitungsvorgängen gewährleistet.
  • In der Buseinheit 50 ist, wenn sie als Server betrieben wird, jede Verbindungsgruppe in einem Steuerblock 120 in Fig. 3 (die Numerierung stimmt mit Fig. 2 überein) im Hauptspeicher 58 aufgelistet. Der Steuerblock 120 beinhaltet einen Eintrag für jede Verbindungsgruppe CG1 bis n, der für die Gruppe 10 als GP10 bezeichnet wird. Ein in der Spalte 122 angezeigter Additionswert ist mit dem GPID-Eintrag verbunden, der verwendet wird, um die Anzahl der Verarbeitungsanforderungen, die über eine Verbindung in der Gruppe empfangen, jedoch noch nicht durch einen Prozeß in der Buseinheit 50 bearbeitet wurden, zu verfolgen. Die aktiven Verbindungs-IDs (C10) in Tabelle 125 haben Zeiger auf Verbindungsgruppen-Eingänge bei 120 und kennzeichnen die Gruppe, zu der eine Verbindung gehört. Die Buseinheit 52 weist ein ähnliches Verfahren auf, um die Anzahl ausstehender, unbearbeiteter Verarbeitungsanforderungen aufzuzeichnen.
  • Einer der Vorteile des obigen Flusses von Verarbeitungsanforderungen ist, daß Verarbeitungsvorgänge (für eine einzelne Verbindung mit derselben Priorität) in einer Verbindungsgruppe schließlich in der Reihenfolge bearbeitet werden, in der sie von der anfordernden Buseinheit angefordert wurden. Falls mehrere Prioritätsanforderungen für einen Prozeß erzeugt wurden, um Daten zu schreiben, werden diese folglich in der geforderten Reihenfolge geschrieben, auch wenn Ressourcen zu einer Zeit nicht verfügbar waren. All dies erfolgt transparent für den anfordernden Prozeß.
  • Es wird nun ein Flußdiagramm in einer Anfordererbuseinheit mit Bezugnahme auf Fig. 4 und Fig. 5 beschrieben. Vier Warteschlangen werden verwendet, um Verarbeitungsanforderungen, die von der Anfordererbuseinheit stammen, laufend zu verfolgen. Jede Warteschlange enthält einen Zeiger auf die Verarbeitungsanforderung, eine Anforderungs-ID und die entsprechende Verbindungsgruppe in der Serverbuseinheit, mit der während des Prozesses ÖFFNEN kommuniziert wird. Im normalen Fluß von Verarbeitungsanforderungen wird eine Warteschlange "Sendebereit" verwendet, um auf Warteschlangen-Verarbeitungsanforderungen zu zeigen, die bereit sind, zu Serverprozessoren gesendet zu werden. Wird eine Nachricht "VERARBEITUNGSSTART" (VERARBSTART) für eine Anforderung in der Warteschlange "Sendebereit" gesendet, wird der Zeiger entfernt und auf eine Warteschlange "Auf Antwort wartend" gestellt. Wird eine Nachricht "VEPARBEITUNGSENDE" (VERARBENDE) empfangen, wird der Eintrag für die Verarbeitungsanforderung aus allen Warteschlangen entfernt. Dieser normale Fluß ist durch die Blöcke 150, 152 und 154 in Fig. 4 dargestellt.
  • Wird eine Meldung WARTESCHLANGE VOLL als Antwort auf eine Verarbeitungsanforderung ausgegeben, wird der Zeiger von der Warteschlange "Auf Beendigung wartend" auf eine Warteschlange "Zurückweisen" bei 156 bewegt, und eine Meldung, daß eine Nachricht WARTESCHLANGE VOLL empfangen wurde, wird der Verbindungsgruppe, für die sie empfangen wurde, zugeordnet. Anschließend wird bei 158 eine PUFFERBEREICH-MARKIERUNG zum Anzeigen, daß die Verbindungsgruppe nun über Speicherplatz verfügt, überprüft. Diese Markierung ist normalerweise ausgeschaltet, folglich fährt der Busverwalter fort, Übertragungen zu senden und zu empfangen.
  • Jede Verarbeitungsanforderung in der Warteschlange "Auf Beendigung wartend", für die eine Meldung WARTESCHLANGE VOLL ausgegeben wird, wird auf diese Art und Weise in die Warteschlange "Zurückweisen" gestellt.
  • In Fig. 5 überprüft ein Busverwalter, wenn er bereit ist, ein weiteres VERARBSTART entsprechend dem nächsten Eintrag in der Warteschlange "Sendebereit" zu senden, ob eine Meldung "Verbindungsgruppe voll" für die Verbindungsgruppe in der Serverbuseinheit bei 160 vorliegt. Falls diese anzeigt, daß die Verbindungsgruppen-Warteschlange voll ist, wird der Eintrag für die Anforderung in eine Zwischenwarteschlange bei 162 gestellt. Falls sie nicht voll ist, wird eine Nachricht VERARBSTART bei 164 gesendet, und der Anforderungseintrag wird in die Warteschlange "Auf Beendigung wartend" bei 166 gestellt.
  • Zurück im Fluß aus Fig. 4 wird, wenn eine Nachricht "Pufferbereich verfügbar" vom Anfordererprozessor bei 168 empfangen wird, die PUFFERBEREICH-MARKIERUNG bei 170 gesetzt, und die Warteschlange "Auf Beendigung wartend" wird auf Einträge nach dem einen, für den in der gekennzeichneten Verbindungsgruppe WAR- TESCHLANGE VOLL empfangen wurde, überprüft. Falls "Warteschlange voll" nicht für alle auf Beendigung wartenden Anforderungen ausgegeben wurde, fährt die Buseinheit fort, auf die nächste Übertragung bei 174 zu warten.
  • Falls alle bei 172 bestätigt werden, werden die Einträge aus der Warteschlange "Zurückweisen" zum Beginn der Warteschlange "Sendebereit" bei 176 übertragen. Anschließend werden Anforderungseinträge von der Zwischenwarteschlange zu der Warteschlange "Sendebereit" hinter Elemente aus der Warteschlange "Zurückweisen" bei 178 übertragen, und die PUFFERBEREICH-MARKIERUNG wird bei 180 zurückgesetzt. Eine Nachricht "Warteschlange neu starten" wird bei 182 gesendet, und der Busverwalter beginnt, aus der Warteschlange "Sendebereit" bei 184 zu senden.
  • In Fig. 6 sind die von dem obigen Fluß verwendeten Warteschlangen gezeigt, wobei der Fluß der Warteschlangeneinträge, die Verarbeitungsanforderungen entsprechen, durch Pfeile dargestellt ist. Die Warteschlange 200 "Sendebereit" überträgt normalerweise Einträge über die Leitung 202 zu der Warteschlange 210 "Auf Antwort wartend". Falls ein Status WARTESCHLANGE VOLL empfangen wird, werden Einträge über eine Leitung 222 aus der Warteschlange 210 zur Warteschlange 220 "Zurückweisen" übertragen. Da inzwischen neue Verarbeitungsvorgänge in der Warteschlange 200 eingeleitet werden, wird, falls eine Verarbeitungsanforderung für eine bereits volle Verbindungsgruppe erfaßt wird, diese über die Leitung 232 zu der Zwischenwarteschlange 230 übertragen. Wurden alle Einträge aus der Warteschlange 210 "Auf Antwort wartend", die für die volle Verbindungsgruppe bestimmt waren, zu der Warteschlange 220 "Zurückweisen" übertragen und wurde die Nachricht "Warteschlange neu starten" als Antwort auf eine Nachricht "Pufferbereich verfügbar" gesendet, werden die zurückgewiesenen Anforderungen über eine Leitung 234 zurück zum Beginn der Warteschlange 200 "Sendebereit" gesendet. Anschließend werden andere Anforderungen, die für die Gruppe bestimmt sind, die nun über Ressourcen für weitere Verarbeitungsvorgänge verfügt, auf Leitung 236 zu der Warteschlange 200 "Sendebereit" hinter die zuvor zurückgewiesenen Anforderungen übertragen.
  • Der entsprechende Fluß in der Serverbuseinheit ist in den Fig. 7 und 8 gezeigt. Beim Empfang einer Nachricht VERARBSTART durch eine Serverbuseinheit bei 250 wird die Verbindungsgruppe bei 252 bestimmt, und ihr Zähler wird bei 254 erhöht. Es wird ein Zählergrenzwert verwendet, um die Anzahl der Verarbeitungsanforderungen, die bei einer Verbindungsgruppe zu einer Zeit anstehen können, festzulegen. Der Wert des Zählers wird mit dem Zählergrenzwert bei 256 verglichen, und falls der Wert größer als der Grenzwert ist, wird eine MARKIERUNG W VOLL bei 258 gesetzt, und der Status WARTESCHLANGE VOLL wird in einer Nachricht "Busfehlerbedingung" zu der Ursprungsbuseinheit bei 260 gesendet, und die Verarbeitung geht bei 261 weiter. In einer weiteren Ausführungsform werden die tatsächlich verfügbaren Ressourcen überwacht und mit den für eine Verarbeitungsanforderung, die durch VERARBSTART angezeigt wird, benötigten Ressourcen verglichen. Falls der Zähler nicht höher als der Grenzwert ist, jedoch erfaßt wird, daß die MARKIERUNG W VOLL bei 262 gesetzt ist, kehrt der Fluß zurück zu 260, und der Status WARTESCHLANGE VOLL wird als Antwort auf VERARBSTART gesendet, anderenfalls geht die Bearbeitung der Anforderung bei 264 weiter, und der Fluß geht bei 266 weiter. Falls die bei 250 empfangene Nachricht keine Nachricht VERARBSTART ist, wird sie überprüft, um festzustellen, ob es sich um eine Nachricht "Warteschlange neu starten" bei 268 handelt. Ist dies nicht der Fall, geht die Verarbeitung bei 270 weiter. Falls es eine Nachricht "Warteschlange neu starten" ist, wird die MARKIERUNG W VOLL bei 272 auf "aus" zurückgesetzt, und die Verarbeitung geht bei 274 weiter.
  • Um eine Bedingung "Warteschlange voll" zu löschen, muß der Serverprozeß entweder mehr Ressourcen zuordnen und den Grenzwert an ausstehenden Anforderungen erhöhen oder den Verarbeitungsvorgang bei mindestens einer der Anforderungen in einer vollen Verbindung beenden. Dieser Fluß ist in Fig. 8 dargestellt. Wird eine Verarbeitungsanforderung beendet, wird der entsprechende Verbindungsgruppenzähler bei 280 vermindert. Es wird entweder ein VERARBENDE oder eine Nachricht "Busfehlerbedingung" bei 282 gesendet. Die MARKIERUNG W VOLL wird anschließend bei 284 überprüft, und falls diese ausgeschaltet ist, geht die Verarbeitung bei 285 weiter. War die MARKIERUNG W VOLL eingeschaltet, wird der Verbindungsgruppenzähler überprüft, um festzustellen, ob er unter dem Grenzwert bei 286 liegt. Dieser Grenzwert, auf den im Block 286 als "unterer Wert" Bezug genommen wird, muß nicht der gleiche wie der zuvor erläuterte Grenzwert sein. Es kann wünschenswert sein, einen noch niedrigeren Grenzwert einzurichten, um zu gewährleisten, daß genügend Ressourcen für eine Anzahl von Anforderungen verfügbar sind. Dies kann hilfreich sein, um eine konstante Folge von Flüssen WARTESCHLANGE VOLL zu eliminieren, wobei mehrere Anforderungen nach dem Neustart der Warteschlange des Anforderers schnell gesendet werden können. Liegt der Zähler nicht unter dem unteren Wert, geht die Verarbeitung bei 287 weiter. Liegt der Zähler unter dem unteren Wert bei 286, wird eine Nachricht "Pufferbereich verfügbar" bei 288 gesendet, und die Verarbeitung geht bei 290 weiter.
  • In einer bevorzugten Ausführungsform sind gesonderte Verbindungsgruppen für jedes Übertragungsprotokoll in der Buseinheit 50 festgelegt, einschließlich der Verbindungen zu den Prozessen, die X.25, LAN, SDLC und andere Übertragungsprotokolle ausführen.
  • Eine andere Gruppe umfaßt Verbindungen zu Fehlerbearbeitungsprozessen. Noch eine andere Gruppe ist für Verbindungen, die allgemeine Verwaltungsprozesse betreffen, zuständig.
  • Eine weitere Gruppe umfaßt normale Funktionen wie Verbindungen zu Prozessen, die an der Übertragung von Daten zwischen einer Plattenlaufwerkseinheit, die von der Buseinheit 52 gesteuert wird, beteiligt sind.
  • Mehrere Variationen hinsichtlich der Anzahl der Verbindungsgruppen liegen im Rahmen der Erfindung. Einige Prozesse können einen großen Bedarf an Ressourcen haben, so daß es wünschenswert sein kann, eine einzelne Verbindungsgruppe für Verbindungen zu jedem derartigen Prozeß zu haben. Die im einzelnen gewünschte Gruppierung von Verbindungen hängt von der vorhandenen Ausführung und den Merkmalen der Prozesse, die miteinander kommunizieren müssen, ab.
  • Die Einrichtung einer Verbindung zwischen einem Prozeß im Host 56 und einem Prozeß im E/A-Prozessor 66 führt auch dazu, daß der Busverwalter 88 die Verbindung beendet und seinen Prozessen eine Verbindung zu einer von mehreren Verbindungsgruppen CG1, CG2, . . . , CGn zuweist. Folglich weist der Busverwalter des Prozessors, in dem sich der Zielprozeß befindet, jedem Prozeß in dem die Buseinheiten umfassenden System, der eine Verbindung zu einem anderen Prozeß hat, eine Verbindung zu einer Gruppe zu und ordnet der Verbindungsgruppe, die verwendet werden muß, um Verarbeitungsanforderungen auf der dieser Gruppe zugewiesenen Verbindung zu bearbeiten, Ressourcen zu.
  • FLUSSTEUERUNGS-BUSNACHRICHTEN
  • Nachrichten werden zwischen Busverwaltern übertragen, um Nachrichten zu steuern und zu resynchronisieren, wenn eine Verbindungsgruppe nicht genügend Ressourcen zur Verfügung hat, um eine Anforderung, die für einen mit dieser Gruppe verbundenen Prozeß bestimmt ist, zu bearbeiten. Kann eine Zielbuseinheit keine zusätzlichen Verarbeitungsvorgänge für eine bestimmte Verbindungsgruppe annehmen, gibt sie eine Nachricht aus, die einen Status WARTESCHLANGE VOLL angibt. Dieser Status ist in einer Nachricht "Busfehlerbedingung" enthalten, deren Format in Fig. 9 gezeigt ist. Die Nachricht "Busfehlerbedingung" wird an Stelle von einer normalen Antwort auf eine Anforderung ausgegeben, um Fehler zu melden, welche die erfolgreiche Beendigung oder Fortsetzung von Verarbeitungen verhindern. Einige andere Bedingungen, für welche die Nachricht "Busfehlerbedingung" gesendet wird, sind Adressierfehler bei Speicherzugriffsanforderungen, Formatfehler und der Empfang nicht definierter oder nicht unterstützter Nachrichten. Einige andere Bedingungen können das Senden dieser Nachricht in Abhängigkeit von der physischen Ausführung der Bustransporteinrichtung aufrufen.
  • Ein mit RESERVIERT bezeichnetes Feld in der Nachricht "Busfehlerbedingung" ist für eine bevorstehende Nutzung reserviert. Ein Feld BUSEINHEIT wird verwendet, um die Quelle der Nachricht zu kennzeichnen. Es wird zum Zweck dieser Erfindung ignoriert. Ein drittes Feld NACHRICHTEN-ID (82) wird verwendet, um die Nachricht als eine Nachricht "Busfehlerbedingung" zu kennzeichnen. Ein STEUERFELD enthält Informationen, um die eindeutige Anforderung oder Verbindung, die ein Fehler betrifft, zu kennzeichnen. Die Inhalte dieses Feldes hängen von dem Fehler und der besonderen Transportnachricht/DMA und dem Flußverfahren, das der Fehler betrifft, ab. Ein Feld CFID kennzeichnet den Inhalt des STEUERFELDES. Verschiedene Werte zeigen an, daß es sich bei den Informationen im Steuerfeld um eine Anforderer-ID oder eine Serververbindungs-ID oder die Adresse eines Steuerblocks usw. handelt. Dies hängt davon ab, warum die Nachricht gesendet wurde und wer sie sendete. Ein Feld ACTN kennzeichnet eine durchzuführende Wiederherstellungsaktion. Ein Wert zeigt an, daß keine Maßnahme durchgeführt werden muß, ein anderer verlangt die Initialisierung der Schließung einer Verbindung, ein weiterer bewirkt ein Zurücksetzen, um Übertragungen zu resynchronisieren.
  • Die Bedingung WARTESCHLANGE VOLL ist im Feld FEHLERSTATUS angezeigt, auf das eine VERBIND-GRUPPEN-ID folgt, das die Verbindungsgruppe, die voll war, kennzeichnet. Es zeigt an, daß die Nachricht von der adressierten Buseinheit nicht ausgeführt wurde. Das STEUERFELD enthält verschiedene Werte, wenn der Status WARTESCHLANGE VOLL angezeigt ist. Es kann je nach der Art und Weise, wie Daten übertragen werden mußten, eine Steuerblockadresse oder eine Anforderer-ID enthalten. In einem Flußsteuerungsabschnitt der vorliegenden Anmeldung werden darüber hinaus weitere verschiedene Arten der Datenübertragung beschrieben. Das Feld FEHLERSTATUS wird außerdem verwendet, um den Status von anderen Fehlerbedingungen, wie den oben beschriebenen, zu kennzeichnen.
  • Nach der Sendung eines Status WARTE SCHLANGE VOLL zu einer Quellenbuseinheit überwacht der Busverwalter der Zielbuseinheit, die ihn sendete, die geeignete Verbindungsgruppe, um zu bestimmen, wann genügend Ressourcen für die Verbindungsgruppe verfügbar sind.
  • Wenn die Zielbuseinheit in dieser bestimmten Verbindungsgruppe Speicherplatz verfügbar hat, sendet sie eine Nachricht "Pufferbereich verfügbar" zu der Quellenbuseinheit. Die Buseinheitennachricht "Pufferbereich verfügbar" wird verwendet, um dem Quellenbusverwalter anzuzeigen, daß Pufferbereich verfügbar ist. Sie wird von einer Buseinheit nur gesendet, nachdem die Buseinheit einen Status WARTESCHLANGE VOLL zu der Quellenbuseinheit gesendet hat. Sie zeigt an, welche Verbindungsgruppe über Pufferbereich verfügt. Das Format der Nachricht "Pufferbereich verfügbar" ist in Fig. 10 gezeigt. Es gibt vier Felder RESERVIERT, ein Feld NACHRICHTEN-ID und ein Feld GRUPPE (GP), das die Verbindungsgruppe, für die Pufferbereich zur Verfügung steht, eindeutig festlegt.
  • Die Quellenbuseinheit empfängt die Nachricht "Pufferbereich verfügbar" und bestimmt die Anzahl der Verarbeitungsanforderungen, die zu dieser bestimmten Verbindungsgruppe auf der Zielbuseinheit gesendet wurden. Da die Übertragung asynchron erfolgt und interne Warteschlangenverzögerungen in der Hardware der Quellenbuseinheit auftreten können, kann die Quellenbuseinheit bereits mehrere Nachrichten zur Einleitung von Verarbeitungsvorgängen gesendet haben.
  • Wenn Übertragungen, die wieder gesendet werden müssen, gekennzeichnet sind, d. h.: diejenigen, die später erfolgten als die Nachricht, die bewirkte, daß der Status WARTESCHLANGE VOLL ausgegeben werden mußte, und für die Verbindungsgruppe, die voll war, bestimmt waren, gibt der Busverwalter der Quellenbuseinheit eine Nachricht "Warteschlange neu starten" aus. Diese Nachricht wird verwendet, um zu gewährleisten, daß keine Nachrichten von der Verbindungsgruppe im Zielprozessor in der falschen Reihenfolge entnommen werden. Falls die Verbindungsgruppe sofort nach der Ausgabe einer Nachricht "Pufferbereich verfügbar" beginnen müßte, Nachrichten zu entnehmen, ist es wahrscheinlich, daß einige Verarbeitungsvorgänge in der falschen Reihenfolge bearbeitet würden. Dies wären Verarbeitungsvorgänge, die durch Nachrichten eingeleitet wurden, die von der Quellenbuseinheit ausgegeben wurden, bevor die Quellenbuseinheit den Status WARTE- SCHLANGE VOLL empfing und die vom Zielbuseinheiten-Verwalter nach der Ausgabe der Nachricht "Pufferbereich verfügbar" empfangen wurden.
  • Das Format der Nachricht "Warteschlange neu starten" ist in Fig. 11 gezeigt. Sie ist der Nachricht "Pufferbereich verfügbar" ähnlich, indem sie kennzeichnet, um welchen Nachrichtentyp es sich im Feld NACHRICHTEN (O/D)-ID handelt, und in einem Feld GRUPPE die Verbindungsgruppe kennzeichnet, die ihre Warteschlange neu starten muß. Bis die Nachricht "Warteschlange neu starten" vom Busverwalter der Zielbuseinheit empfangen wird, gibt der Busverwalter den Status WARTESCHLANGE VOLL für jede Nachricht zum Start von Verarbeitungsvorgängen aus.
  • BEISPIELE FÜR DEN NACHRICHTENFLUSS
  • In Fig. 12 ist ein Austausch von Nachrichten als Antwort auf eine volle Warteschlange für eine Verbindungsgruppe in einer Zielbuseinheit dargestellt. Die Zielbuseinheit ist als der Server bezeichnet, und die Quellenbuseinheit ist als der Anforderer bezeichnet. Vom Server gesendete und empfangene Nachrichten sind auf der Serverseite der Figur dargestellt, weil der Fluß dort gesteuert wird. Pfeile zwischen dem Anforderer und dem Server zeigen auf die Buseinheit, die jede Nachricht empfing. Die Folge der Nachrichten ist in numerischer Ordnung angegeben. Die Ereignisse sind nun in der Reihenfolge, in der sie in Fig. 12 auftreten, aufgelistet:
  • 1. Der Anfordererprozessor sendet eine Nachricht, die Verarbeitungsvorgänge einleitet und als Nachricht VERARBSTART (1) (an späterer Stelle in dieser Beschreibung definiert) bezeichnet wird, zum Serverprozessor.
  • 2. Der Serverprozessor hat eine Bedingung WARTE- SCHLANGE VOLL für die Verbindungsgruppe, für welche die Nachricht VERARBSTART bestimmt war, erkannt, und gibt eine Fehlernachricht mit einem Status WARTE- SCHLANGE VOLL aus.
  • 3. Aufgrund der asynchronen Funktionsweise der Buseinheiten hat der Anforderer den Status WARTESCHLANGE VOLL noch nicht erfaßt, und er sendet eine zweite Nachricht VERARBSTART (2) zum Server.
  • 4. Der Server hat eine frühere Verarbeitungsanforderung beendet und signalisiert dies dem Anforderer, indem er eine Nachricht VERARBENDE sendet.
  • 5. Da der Server eine frühere Verarbeitungsanforderung beendet hat, hat der Server Ressourcen oder Pufferbereich verfügbar und sendet eine Nachricht "Pufferbereich verfügbar" zum Anforderer.
  • 6. Der Anforderer hat die Bedingung "Warteschlange voll" aufgrund von Hardware-Warteschlangenverzögerungen im Anforderer nicht erkannt und sendet eine Nachricht VERARBSTART (3).
  • 7. Der Server muß fortfahren, den Status WARTE- SCHLANGE VOLL zum Anforderer zu senden, bis der Server eine Nachricht "Warteschlange neu starten" empfängt. Er gibt daher einen Status WARTESCHLANGE VOLL (2) als Antwort auf das Erkennen der Nachricht VERARBSTART (2) aus.
  • 8. Der Server erkennt nun die Nachricht VERARBSTART (3) und gibt eine Nachricht WARTESCHLANGE VOLL (3) aus.
  • 9. Der Anforderer erkennt nun den Status WARTESCHLANGE VOLL für VERARBSTART (1), (2) und (3) und die Nachricht "Pufferbereich verfügbar" und sendet, nachdem er bestimmt hat, welche Nachrichten er zurücksenden muß und in welcher Reihenfolge sie gesendet werden müssen, eine Nachricht "Warteschlange neu starten".
  • 10, 11 und 12. Der Anfordererprozessor sendet die Nachrichten VERARBSTART in der richtigen Reihenfolge zurück. Wenn ein Verarbeitungsvorgang von einem Server beendet wird, wird eine Nachricht VERARBENDE zu der anfordernden Buseinheit gesendet, um anzuzeigen, daß der Verarbeitungsvorgang beendet wurde. Ihr Format wird später beschrieben.
  • DATENFLUSS
  • In der bevorzugten Ausführungsform aus Fig. 2 ist die Bushardware 90 und 92 der Buseinheiten 50 und 52 mit direktem Speicherzugriff (DMA) dargestellt. Diese Fähigkeit ist eine Standardhardware-Fähigkeit, welche der größte Teil der Hardware heut zutage aufweist. Haupt-DMA ermöglicht der Buseinheit, die ihn besitzt, direkt auf den Hauptspeicher einer Buseinheit mit Neben-DMA zuzugreifen, ohne den Prozessor in der Buseinheit mit Neben-DMA zu unterbrechen. Folglich werden die Einzelheiten ihres Betriebs nicht beschrieben, da sie für ein umfassendes Verständnis der Erfindung nicht notwendig sind.
  • Die Buseinheit 50 weist Neben-DMA 59 auf. In der bevorzugten Ausführungsform ist die Buseinheit 50 ein Host. Neben-DMA ermöglicht einer Buseinheit, andere Buseinheiten auf ihren Hauptspeicher 58 zugreifen zu lassen, ohne den Host 56 zu unterbrechen. Folglich ist die Leitung 60, die dem Host 56 den Zugriff auf den Hauptspeicher 58 ermöglicht, außerdem mit dem Busverwalter 86 und mit der Neben-DMA-Hardware verbunden, um der Hardware 90 den direkten Zugriff auf den Hauptspeicher 58 zu ermöglichen. Dies ermöglicht einer anderen Buseinheit, wie der Buseinheit 52, die Hardware 92 mit Haupt-DMA aufweist, auf den Hauptspeicher 58 der Buseinheit 50 zuzugreifen, ohne den Host 56 zu unterbrechen. Eine Buseinheit, die nur Neben-DMA aufweist, kann nicht direkt auf den Hauptspeicher einer anderen Buseinheit zugreifen, während eine Einheit, die nur Haupt-DMA aufweist, keine andere Buseinheit aktivieren kann, zu versuchen, direkt auf ihren Hauptspeicher zuzugreifen.
  • Falls ein Prozeß in der Buseinheit 52 eine Verarbeitungsanforderung zu einem Prozeß in der Buseinheit 50 sendet, müssen die eigentlichen Datenübertragungen transparent für die Prozesse erfolgen. Die IPCFs 72 und 74 sind die von den Prozessen verwendeten Verbschnittstellen zur Bearbeitung von Verarbeitungsvorgängen. Ein Serverprozeß greift auf die vom Anforderer gekennzeichneten Daten in seinem eigenen Takt zu. Da die Serverbuseinheit in diesem Fall nur Neben-DMA aufweist, wird ein Mittel bereitgestellt, um die Daten sowohl für die IPCF als auch für die Prozesse transparent zu machen.
  • Im normalen Fluß, wo gewährleistet ist, daß jede Buseinheit volle DMA-Fähigkeit aufweist, würde der Busverwalter 88 Informationen von IPCF-Verben von der IPCF 74 empfangen, die anzeigen, daß ein Prozeß eine Verarbeitungsanforderung senden möchte. Der Busverwalter 88 würde anschließend den Busverwalter 86 informieren, daß ein Verarbeitungsvorgang für ihn vorliegt, indem er eine Nachricht VERARBSTART sendet. Das Format der Busnachricht VER- ARBSTART ist in Fig. 13 gezeigt, und sie enthält genügend Informationen für den Busverwalter 86 in der Serverbuseinheit 50, um einen Anforderung/Antwort-Steuerblock (RRCB), der Steuerinformationen und Datenadressen angibt, vom Hauptspeicher 68 der Buseinheit 52 in den Hauptspeicher 58 der Buseinheit 50 zu übertragen, falls er dies könnte. Weitere Einzelheiten des RRCB sind in den Fig. 14 und 15 gezeigt. Der Busverwalter 86 könnte anschließend den vorgesehenen Prozeß im Host 56 über die IPCF 72 informieren, daß eine Verarbeitungsanforderung ansteht, die von dem Prozeß in eine Warteschlange gestellt würde. Der Prozeß würde die Anforderung, für die eine Datenübertragung zwischen den Buseinheiten notwendig wäre, anschließend ausführen. Die Kopie des RRCB, die sich nun im Hauptspeicher 58 befinden würde, würde vom Busverwalter 86 verwendet, um die Datenübertragung zwischen den Buseinheiten zu steuern. Der angeforderte Arbeitsgang würde durch eine Nachricht VERARBENDE (siehe Fig. 16), die zum Busverwalter 88 gesendet würde, der den anfordernden Prozeß über die IPCF 74 informieren würde, als "beendet" signalisiert.
  • Das Problem bei dem oben dargestellten Vorgang ist, wie in Fig. 2 ausgeführt, daß die Bushardware 90 nicht direkt auf den Hauptspeicher 68 zugreifen kann. Auch wenn die Bushardware 90 Haupt-DMA aufweisen würde, müßte die Bushardware außerdem Neben-DMA aufweisen. Das Problem wird gelöst, indem ein Speicherverteiler-Steuerblock und mehrere neue Busnachrichten verwendet werden, um die Verwaltung der Puffer im Hauptspeicher 58 der Hostbuseinheit 50 dem Busverwalter 88 der Buseinheit 52 zu übergeben. Dies ermöglicht dem Busverwalter 88 im Anforderer, Daten, die sich auf die Anforderung beziehen, zu den Puffern im Hauptspeicher 58 des Servers zu übertragen, und anschließend dem Server Daten gemäß den normalen Fluß von Verarbeitungsvorgängen aus den Puffern in einen Speicher, den der Serverprozeß nutzen kann, zu übertragen. Folglich scheint der Datenfluß für die IPCF 72 normal zu erfolgen. Der RRCB wird verwendet, um wie gewöhnlich anzuzeigen, wo sich die Daten befinden, auf die der Server zugreifen muß. Der Anfordererbusverwalter 88 gewährleistet einfach, daß die Daten in Puffern im Hauptspeicher 58 lokalisiert sind. Es folgt nun eine ausführlichere Beschreibung des RRCB und der Nachrichten.
  • Ein RRCB ist in den Fig. 14 und 15 gezeigt. Er wird verwendet, um eine Verarbeitungsanforderung und die mit ihr verbundenen Daten zu kennzeichnen. Der RRCB ist ein Steuerblock, der vom Busverwalter in der Anfordererbuseinheit und dem Busverwalter in der Serverbuseinheit verwendet wird, um die Verschiebung von Daten zwischen den Buseinheiten zu steuern. Informationen im RRCB werden für den physischen DMA-Prozeß verwendet. Die Inhalte des RRCB sind bevorzugterweise Lesedaten. Die Inhalte werden vom Busverwalter in der Serverbuseinheit nicht geändert oder modifiziert.
  • Der RRCB kann, wie vom Busverwalter des Anforderers angegeben, in der bevorzugten Ausführungsform jede Länge bis zu 4088 Bytes aufweisen. Um Festblock-Pufferverwaltung durch den Anforderer zu erleichtern, können RRCBs segmentiert und verkettet werden. Falls ein Festblock beispielsweise 512 Bytes lang ist und ein RRCB ist länger, wird ein RRCB in einen ersten Typ segmentiert, der einige Kennsatzinformationen und eine Mehrzahl von Segmenten des zweiten Typs, die in Fig. 15 gezeigt werden, enthält, wobei keines der Segmente länger als der Festblock ist. Das erste Feld des ersten Typs des RRCBs weist eine Länge des gesamten RRCBs in Bytes auf. Die Länge ist die Summe der Längen aller der RRCB-Segmente. Ein Feld RRCB-TYP gibt an, daß es sich um ein RRCB-Segment des ersten Typs handelt. Eine SERVERVERBINDUNGS-ID gibt die Kennung des Zielprozesses für diese Anforderung an. Ein Feld ANFORDERUNGSPRIORITÄT gibt die vom Serverprozessor zu verwendende Priorität an, wenn eine Anforderungsmeldung in die Eingangswarteschlange des Serverprozesses eingefügt wird. Ein Feld MARKIERUNG legt fest, ob vom Server eine unbedingte Antwort oder nur eine Ausnahmeantwort benötigt wird. Ein Feld ANFORDERER-RID gibt die Kennung der Anforderung an. Es ist nur dem Anforderer bekannt.
  • Ein ERWEITERTER STATUSZEIGER gibt eine Adresse eines Bereichs an, in dem ein erweiterter Status (Statusdaten, welche die architekturbedingte Größe, die für einen Status erlaubt ist, überschreiten) plaziert werden kann. Dieser Bereich muß bevorzugterweise verfügbar sein und vom Anfordererbusverwalter vor der Nutzung auf Null gesetzt werden. Die Adresse gilt für denselben Speicher wie der RRCB in dem vom Anforderer verwalteten Speicher.
  • Der Rest des Segmentes des ersten Typs ist identisch mit Segmenten des zweiten Typs. Er besteht aus einer Mehrzahl von Deskriptorelementworten, die den Typ der Daten, die im Feld DATENMARKIERUNGEN durch das Deskriptorelement beschrieben werden, angeben. Ein Deskriptortyp im Feld DATENMARKIERUNGEN kennzeichnet den Deskriptortyp wie Anforderung, Dateneingabe vom Serverspeicher zum Anfordererspeicher, Datenausgabe zum Serverspeicher vom Anfordererspeicher oder eine Segmentverbindung zum nächsten RRCB-Segment, wenn ein weiteres Segment benötigt wird. Das Deskriptorelement für die RRCB-Segmentverbindung muß am Ende des RRCB-Segmentes auftreten, falls ein anderes RRCB-Segment vorhanden ist. Ein Deskriptorformat-Feld innerhalb des Feldes DATENMARKIERUNGEN wird verwendet, um anzugeben, daß Direktdaten linksbündig ausgerichtet sind, wobei sie das Datenwort starten und bis maximal 44 Bytes weitermachen. Ein Anforderungs- oder ein Datenausgabe-Deskriptor kann Direktdaten oder ein Bezug sein, der die Buseinheitennummer und die Datenadresse enthält, um zu kennzeichnen, wohin die Daten mit DMA übertragen werden müssen oder wo auf sie zugegriffen werden muß. Eine Buseinheitennummer muß stets erscheinen, wenn das Bezugsdeskriptorformat angegeben wird. Das Feld DATENMARKIERUNGEN kennzeichnet durch die Buseinheitennummer die Buseinheit, auf die sich die Adresse in dem nächsten Feld bezieht.
  • Ein Feld DATENLANGE gibt die Länge der Daten des durch das folgende Adreßfeld angegebenen Feldes in Byte an. Es handelt sich um einen ganzzahligen Wert ohne Vorzeichen, der einen zusammenhängenden, realen Speicher angibt. Die Daten werden bis zu einem Vielfachen von 8 Bytes mit Nullen aufgefüllt.
  • Ein Feld DATENADRESSE/DATEN wird entweder als Adresse oder als Direktdaten verwendet. Bei diesem Feld handelt es sich um Direktdaten, falls Direktdaten in dem Deskriptorformat von DATEN-MARKIERUNGEN des vorhergehenden Wortes des RRCB-Segmentes angegeben sind; anderenfalls ist es eine Adresse. Die Adresse könnte sich im Speicher des Servers, im Speicher des Anforderers oder im Speicher einer dritten Buseinheit, die nicht gezeigt ist, befinden. Die Adresse wird vom Serverbusverwalter für DMA-Operationen zum oder aus dem Speicher in dem anderen Prozessor oder in einem anforderergesteuerten Puffer im Serverspeicher verwendet.

Claims (10)

1. Kommunikationsverwaltungssystem für eine Buseinheit (50, 52) in einem lose verbundenen, verteilten Prozessornetz, wobei die Buseinheiten (50, 52) durch einen Bus (54) miteinander verbunden sind und jede Buseinheit einen oder mehr Prozessoren (56, 66) aufweist und wobei das Kommunikationsverwaltungssystem die Prozeß- zu-Prozeß-Kommunikation zwischen Prozessen, die sich auf Ziel- und Ursprungsbuseinheiten befinden, erleichtert, wobei das System bei einer Buseinheit folgendes aufweist:
ein Empfangsmittel zum Empfangen von Nachrichten, um Verarbeitungsvorgänge einzuleiten, wobei die Nachrichten von einer Ursprungsbuseinheit stammen;
wobei das System gekennzeichnet ist durch:
einen Ressourcenverwalter (86, 88), der mit dem Empfangsmittel verbunden ist, wobei der Ressourcenverwalter folgendes aufweist:
ein Verwaltungsmittel zum Zuordnen von Buseinheitenressourcen zu vorbestimmten Verbindungsgruppen (CG1 bis CGn) auf der Buseinheit, wodurch jede Verbindungsgruppe Verbindungen zwischen Prozessen auf zwei eindeutigen Prozessoren umfaßt und jede Verbindungsgruppe ausreichend Prozessorressourcen erhält, um mindestens eine vorbestimmte Minimalfunktionalität zu gewährleisten;
ein Vollmittel zum Zurücksenden einer Nachricht "Warteschlange voll" zur Ursprungsbuseinheit als Antwort auf eine Nachricht zum Einleiten von Verarbeitungsvorgängen in einer vorbestimmten der Gruppen, falls für die Gruppe keine ausreichenden Ressourcen zum Durchführen der Verarbeitungsvorgänge verfügbar sind;
ein "Ressourcen verfügbar"-Mittel zum Senden einer Nachricht "Ressourcen verfügbar" zur Ursprungsbuseinheit, wenn Ressourcen für die Gruppe verfügbar werden; und
ein Verarbeitungsvorgangannahme-Mittel zum Annehmen einer Nachricht, um Verarbeitungsvorgänge von der Ursprungsbuseinheit einzuleiten, vorausgesetzt daß die Ursprungsbuseinheit zuerst eine Nachricht "Neustart" gesendet hat und der Gruppe ausreichend Ressourcen zur Verfügung stehen, wodurch die Nachricht "Neustart" von der Ursprungsbuseinheit beim Empfang einer Nachricht "Ressourcen verfügbar" gesendet wird.
2. Kommunikationsverwaltungssystem nach Anspruch 1, dadurch gekennzeichnet, daß der Ressourcenverwalter des weiteren folgendes aufweist:
ein Mittel zum Senden einer Nachricht zum Einleiten von Verarbeitungsvorgängen zu einer zweiten Buseinheit als Antwort auf einen Prozeß innerhalb der Buseinheit, der eine Verarbeitungsanforderung einleitet.
3. Kommunikationsverwaltungssystem nach Anspruch 2, dadurch gekennzeichnet, daß der Ressourcenverwalter des weiteren folgendes aufweist:
ein Zwischenspeichermittel zum Speichern von vorher gesendeten Nachrichten zum Einleiten von Verarbeitungsvorgängen in einer zweiten Buseinheit, wobei die gespeicherten Nachrichten die zweite Buseinheit und die Gruppe, zu der sie gesendet wurden, anzeigen;
ein Neustartmittel zum Senden einer Nachricht "Neustart" zu der zweiten Buseinheit, die mit einer Nachricht "Warteschlange voll" auf eine Nachricht "Verarbeitungsvorgang einleiten" von der aktuellen Buseinheit antwortete, wobei die Nachricht "Neustart" nach dem Empfang einer Nachricht "Warteschlangenspeicher verfügbar" von der zweiten Buseinheit gesendet wird; und
ein Rücksendemittel, das mit dem Neustartmittel und dem Zwischenspeichermittel verbunden ist, um Nachrichten zum Einleiten von Verarbeitungsvorgängen zurückzusenden, die bewirkten, daß eine Nachricht "Warteschlange voll" von der zweiten Buseinheit gesendet werden muß.
4. Kommunikationsverwaltungssystem nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß das Vollmittel des weiteren ein Mittel zum Überwachen der für jede Gruppe noch verfügbaren Ressourcen aufweist.
5. Kommunikationsverwaltungssystem nach Anspruch 4, dadurch gekennzeichnet, daß das Überwachungsmittel einen Zähler für jede Gruppe aufweist, der vermindert oder erhöht wird, je nachdem, ob eine Verarbeitungsanforderung von der Gruppe beendet oder von der Gruppe empfangen wird.
6. Kommunikationsverwaltungssystem nach Anspruch 5, dadurch gekennzeichnet, daß das Vollmittel die Nachricht "Warteschlange voll" in Abhängigkeit von einem Vergleich des Zählerwertes mit einem Maximalwert für die Gruppe sendet.
7. Kommunikationsverwaltungssystem nach Anspruch 6, dadurch gekennzeichnet, daß jede Verarbeitungsanforderung bewirkt, daß das Überwachungsmittel den Zähler um Eins erhöht oder vermindert.
8. Kommunikationsverwaltungssystem nach Anspruch 6, dadurch gekennzeichnet, daß jede Verarbeitungsanforderung eine Meldung über die Menge an Ressourcen, die eine Anforderung benötigt, um ausgeführt zu werden, beinhaltet und wobei das Überwachungsmittel den Zähler in Abhängigkeit von dieser Meldung um einen Betrag erhöht oder vermindert.
9. Kommunikationsverwaltungssystem nach Anspruch 3, dadurch gekennzeichnet, daß der Ressourcenverwalter des weiteren folgendes aufweist:
eine Sendewarteschlange zum Zwischenspeichern von Verarbeitungsanforderungen, die von der Buseinheit gesendet werden müssen;
eine Zwischenwarteschlange zum Zwischenspeichern von zu sendenden Verarbeitungsanforderungen in derselben Reihenfolge, in der sie gesendet werden mußten, für die jedoch eine Nachricht "Warteschlange voll" für die Gruppe, für die sie bestimmt waren, empfangen wurde;
ein Mittel zum Übertragen von Verarbeitungsanforderungen von der Sendewarteschlange zu der Zwischenwarteschlange, falls eine Nachricht "Warteschlange voll" für die Gruppe, für die sie bestimmt waren, empfangen wurde; und
ein Mittel zum Überprüfen des Zwischenspeichermittels, um zu bestimmen, ob alle Verarbeitungsanforderungen für Gruppen, für die eine Nachricht "Warteschlange voll" empfangen wurde, zu Nachrichten "Warteschlange voll" geführt haben, die empfangen werden.
10. Kommunikationsverwaltungssystem nach Anspruch 9, dadurch gekennzeichnet, daß das Rücksendemittel die Verarbeitungsanforderungen, die Nachrichten "Warteschlange voll" empfangen haben, zurücksendet, sobald das Mittel zum Überprüfen anzeigt, daß alle von ihnen eine Nachricht "Warteschlange voll" empfangen haben, wobei das Rücksendemittel diese in derselben Reihenfolge sendet, in der sie ursprünglich gesendet wurden, und wobei das Rücksendemittel anschließend die Verarbeitungsanforderungen in derselben Reihenfolge, wie sie ursprünglich in die Sendewarteschlange gestellt wurden, in die Zwischenwarteschlange sendet.
DE3851507T 1987-11-18 1988-09-27 Flusssteuerungssystem für Bus. Expired - Fee Related DE3851507T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12229287A 1987-11-18 1987-11-18

Publications (2)

Publication Number Publication Date
DE3851507D1 DE3851507D1 (de) 1994-10-20
DE3851507T2 true DE3851507T2 (de) 1995-03-30

Family

ID=22401836

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3851507T Expired - Fee Related DE3851507T2 (de) 1987-11-18 1988-09-27 Flusssteuerungssystem für Bus.

Country Status (9)

Country Link
EP (1) EP0317468B1 (de)
JP (1) JPH0786867B2 (de)
KR (1) KR920004771B1 (de)
CN (1) CN1014189B (de)
DE (1) DE3851507T2 (de)
ES (1) ES2059555T3 (de)
GB (1) GB8814633D0 (de)
HK (1) HK15195A (de)
SG (1) SG9495G (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2272312A (en) * 1992-11-10 1994-05-11 Ibm Collaborative working in a network.
US6182176B1 (en) * 1994-02-24 2001-01-30 Hewlett-Packard Company Queue-based predictive flow control mechanism
US5594651A (en) 1995-02-14 1997-01-14 St. Ville; James A. Method and apparatus for manufacturing objects having optimized response characteristics
US7111125B2 (en) * 2002-04-02 2006-09-19 Ip-First, Llc Apparatus and method for renaming a data block within a cache
US7690003B2 (en) * 2003-08-29 2010-03-30 Fuller Jeffrey C System and method for increasing data throughput using thread scheduling
US8156472B2 (en) * 2004-02-12 2012-04-10 Microsoft Corporation Process language for microprocessors with finite resources
US8868891B2 (en) 2004-03-18 2014-10-21 Intel Corporation Method and apparatus to support booting despite deficient resources
CN1926521B (zh) * 2004-03-18 2010-10-06 英特尔公司 尽管资源不足仍支持引导的方法和装置
DE102012219180A1 (de) * 2012-10-22 2014-05-08 Robert Bosch Gmbh Recheneinheit für ein Steuergerät und Betriebsverfahren hierfür
KR102118916B1 (ko) * 2012-12-14 2020-06-05 한국전자통신연구원 클러스터 기반의 적응적인 결합 전송 방법
US9323543B2 (en) * 2013-01-04 2016-04-26 Microsoft Technology Licensing, Llc Capability based device driver framework
CN111275952B (zh) * 2019-02-01 2021-05-18 奥克斯空调股份有限公司 一种无线通信***及使用该***的空调直流电机供电***

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4601586A (en) * 1984-02-10 1986-07-22 Prime Computer, Inc. Solicited message packet transfer system
US4649473A (en) * 1985-06-17 1987-03-10 International Business Machines Corporation Flexible data transmission for message based protocols

Also Published As

Publication number Publication date
KR890008703A (ko) 1989-07-12
JPH01137356A (ja) 1989-05-30
GB8814633D0 (en) 1988-07-27
SG9495G (en) 1995-06-16
EP0317468A2 (de) 1989-05-24
HK15195A (en) 1995-02-10
CN1035373A (zh) 1989-09-06
ES2059555T3 (es) 1994-11-16
CN1014189B (zh) 1991-10-02
EP0317468B1 (de) 1994-09-14
KR920004771B1 (ko) 1992-06-15
DE3851507D1 (de) 1994-10-20
JPH0786867B2 (ja) 1995-09-20
EP0317468A3 (de) 1991-01-30

Similar Documents

Publication Publication Date Title
DE3852378T2 (de) Mechanismus und Verfahren zur entgegengesetzten Flussteuerung.
DE3689990T2 (de) Flexible Datenübertragung für nachrichtenorientierte Protokolle.
DE3688893T2 (de) Datentransfer und Puffersteuerung mit mehrfachen prozesstransparenten Speicherbetriebsarten.
DE3200761C2 (de)
DE68927375T2 (de) Arbitrierung von Übertragungsanforderungen in einem Multiprozessor-Rechnersystem
DE68919631T2 (de) Verfahren zur Verarbeitung von Programmteilen eines verteilten Anwendungsprogramms durch einen Hauptrechner und einen intelligenten Arbeitsplatz in einer SNA LU 6.2-Netzwerkumgebung.
DE69429279T2 (de) Multiprozessor-programmierbares unterbrechungskontrollersystem mit prozessor-integrierten unterbrechungskontrollern
DE3751091T2 (de) Übertragungsprotokoll zwischen Prozessoren.
DE69836778T2 (de) Vorrichtung und Verfahren zur Fernpufferspeicherzuordnung und Verwaltung für Nachrichtenübertragung zwischen Netzknoten
DE69230093T2 (de) Multiprozessorsystem
DE60036465T2 (de) Rechneradapterkarte für die kombinierung von eingang-/ausgangfertigstellungsberichten und verwendung derselben
DE69905287T2 (de) Unterbrechungsarchitektur für ein rechnersystem mit nichtuniformem speicherzugriff
DE68927508T2 (de) Zeitweilige Zustandsbewahrung für einen verteilten Dateidienst
DE69702708T2 (de) Verfahren und vorrichtung für klientverwaltete flusssteuerung in einem rechnersystem mit begrenztem speicher
DE3850881T2 (de) Verfahren und Vorrichtung zur Nachrichtenübertragung zwischen Quellen- und Zielanwender durch einen anteilig genutzten Speicher.
DE3853337T2 (de) Mechanismus und Verfahren zur Fernverwaltung von Speichern.
DE69329839T2 (de) Netzserver für lokale und entfernte Netzressourcen
DE69326272T2 (de) Verfahren und Gerät zur Ausführung von konditionellen Operationen auf externe gemeinsam genutzte Daten
DE3879947T2 (de) Verteilte dateiserver-architektur.
DE68919975T2 (de) Verfahren für die simultane Ablaufverwaltung eines verteilten Anwenderprogramms in einem Hostrechner und in einer grossen Anzahl von intelligenten Benutzerstationen in einem SNA-Netzwerk.
DE69634983T2 (de) Verfahren und vorrichtung für ein hybrides wettbewerbs- und abfrageprotokoll
DE69328804T2 (de) Verteilung von Übertragungsverbindungen über mehrere Dienstzugriffspunkte in einem Kommunikationsnetz
DE3789575T2 (de) Verteiltes Dialogverarbeitungsverfahren in einem komplexen System mit mehreren Arbeitsplätzen und mehreren Gastrechnern und Vorrichtung dafür.
DE69922693T2 (de) Systemem und verfahren für netzwerkvorrichtung und ein-ausgabegerätetreiber
DE69813976T2 (de) Datenübertragungssteuerverfahren und Vorrichtung und Datenübertragungssystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee