DE69738309T2 - Verteilte verarbeitung - Google Patents

Verteilte verarbeitung Download PDF

Info

Publication number
DE69738309T2
DE69738309T2 DE69738309T DE69738309T DE69738309T2 DE 69738309 T2 DE69738309 T2 DE 69738309T2 DE 69738309 T DE69738309 T DE 69738309T DE 69738309 T DE69738309 T DE 69738309T DE 69738309 T2 DE69738309 T2 DE 69738309T2
Authority
DE
Germany
Prior art keywords
record
host computer
identity
objects
host
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 - Lifetime
Application number
DE69738309T
Other languages
English (en)
Other versions
DE69738309D1 (de
Inventor
Paul Antony Gt. Bealings MARTIN
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.)
British Telecommunications PLC
Original Assignee
British Telecommunications PLC
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 British Telecommunications PLC filed Critical British Telecommunications PLC
Publication of DE69738309D1 publication Critical patent/DE69738309D1/de
Application granted granted Critical
Publication of DE69738309T2 publication Critical patent/DE69738309T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • 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/465Distributed object oriented systems

Description

  • Die vorliegende Erfindung betrifft eine verteilte Verarbeitung, insbesondere, aber nicht ausschließlich, eine verteilte Verarbeitung zur Steuerung eines Telekommunikationsnetzwerks. Insbesondere betrifft diese Erfindung die Steuerungssysteme, die auf den verteilten Prozessoren implementiert sind, die vorzugsweise (aber nicht notwendigerweise) Prozesse sind, die auf eine objektorientierte Weise implementiert sind.
  • Telekommunikationsnetzwerke müssen in zunehmendem Maße einen Informationsfluss mit hoher Bandbreite und geringen Verzögerungen unterstützen. Die erforderliche Bandbreite nimmt schnell zu von Kilobits pro Sekunde zu Megabits pro Sekunde und sogar für einige Anwendungen Gigabits pro Sekunde (insbesondere zum Beispiel für Video auf Verlangen (video an demand); animierte gemeinsam benutzte Simulationen und verteilte Berechnung).
  • Um „intelligente Netzwerk"-Einrichtungen vorzusehen, wie Anrufumleitung zu bestimmten Nummern, laufen Computerprogramme auf einer Anzahl von Hostcomputern (bis zu 100 zum Beispiel), die mit Vermittlungsstellen verbunden sind. Die Weise, wie Dienste für bestimmte Kunden vorgesehen werden sollen (zum Beispiel eine bestimmte Nummer, an die Anrufe für einen Kunden weitergeleitet werden sollen), hängt von Daten ab, die bezüglich dieses Kunden auf den Hostcomputern gespeichert sind. Somit kann es viele Millionen von Teilnehmeraufzeichnungen auf zehn oder hunderten von Hostcomputern geben.
  • In „Twenty-twenty vision – software architecture for intelligence in the 21 st century", P. A. Martin, BT Technology Journal, Vol. 13, Nr. 2.
  • April 1995, hat der jetzige Erfinder die Verwendung von objektorientierten Techniken vorgeschlagen, um die erforderliche verteilte Verarbeitung zu implementieren.
  • Eine Beschreibung der objektorientierten Technologie ist zu finden zum Beispiel in BT Technology Journal Vol. 11, Nr. 3, Juli 1993, „Object oriented technology", herausgegeben von E. L. Cusack und E. S. Cordingley. Obgleich die Bezeichnung nicht immer mit Präzision verwendet wird, bezieht sich ein objektorientiertes Berechnen hier auf die berechnende Technik, in der Daten in „eingekapselter" Form gespeichert werden, in der die Daten, statt direkt durch ein aufrufendes Programm oder Routine zugänglich zu sein, nur durch einen begrenzten Teil eines Programms zugänglich sind, das die Daten lesen schreiben und bearbeiten kann. Ein Datensatz und sein zugehöriger Computercode werden als ein „Objekt" bezeichnet. Kommunikation an das und von dem Objekt erfolgt im Allgemeinen durch „Nachrichten-Übermittlung"; das heißt, ein Aufruf an das Objekt übermittelt Datenwerte und ruft den Betrieb eines der Programme auf, die in dem Objekt enthalten sind, das dann Datenwerte zurücksendet.
  • Es sind verschiedene Sprachen für Programmierer verfügbar, die den objektorientierten Ansatz verwenden möchten. Von diesen ist die allgemeinste zur Zeit C++.
  • Die verteilte Verarbeitung unterscheidet sich von einem einzelnen Prozessorbetrieb in mehrerer Hinsicht. Erstens können unterschiedliche Zugangstechniken erforderlich sein, abhängig davon, ob sich andere Programme oder Daten auf dem gleichen Hostcomputer wie ein aufrufendes Programm oder auf einem anderen Hostcomputer befinden. Der Ort eines Programms oder von Daten beeinflusst auch die Geschwindigkeit, mit der es/sie von einem anderen Programm er reicht werden kann/können. Auch kann/können ein oder mehre Hostcomputer ausfallen, während andere in Betrieb bleiben.
  • Ein verteiltes Berechnen wird herkömmlicherweise durchgeführt durch Verwendung einer „Client-Server"-Anordnung, in der ein „Client"-Programm auf einem Computer ein „Server"-Programm auf einem anderen Computer abfragt, das dann die Funktion durchführt oder die Daten zurücksendet, die für das Client-Programm erforderlich sind.
  • Objektorientierte Techniken wurden nicht weithin angewendet auf die verteilte Verarbeitung. Eine Zusammenfassung des Standes der Technik in dieser Hinsicht ist zu finden in „Objekt oriented programming systems" ; Blair G., Pitman Publishing, London, 1991 (ISBN 0-273-03132-5) und insbesondere in Kapitel 9 in den Seiten 223–243; „Distributed systems and objects"; David Hutchison und Jonathan Walpole.
  • Der Artikel „Experience With Distributed Smalltalk" von J. K. Bennet, Software Practice & Experience, Vol. 20, Nr. 2, Februar 1990, offenbart, dass ein erstes Objekt an einem ersten Knoten ein zweites Objekt an einem zweiten Knoten durch eine lokale Objektinteraktion mit einem Proxy-Objekt für das zweite Objekt aufrufen kann. Das Proxy-Objekt enthält die Identität des zweiten Objekts und des zweiten Knotens und wenn es von dem ersten Objekt aufgerufen wird, sendet es eine Nachricht an den zweiten Knoten. Der zweite Knoten hat eine „entferntes Objekt"-Tabelle (ROT – remote object table), welche die Speicherplätze bzw. Positionen aller seiner lokaler Objekte speichert, die entfernt referenziert werden können, d. h. von einem anderen Knoten. Bei Empfang der Nachricht von dem ersten Knoten, ruft die ROT das zweite Objekt, ähnlich mit einer lokalen Objektinteraktion, empfängt einen Antwortwert von dem zweiten Objekt und sendet eine Antwortnachricht an das Proxy-Objekt, das wiederum den Antwortwert an das erste Objekt zurücksendet, wiederum unter Verwendung der lokalen Objektinteraktion.
  • In einem ersten Aspekt sieht die vorliegende Erfindung ein verteiltes Computersystem vor, das aufweist eine Vielzahl von Hostcomputern, und wobei jeder der Hostcomputer einen Speicherraum zum Speichern vorbestimmter Datensätze und Programme zum Zugriff auf die Datensätze und eine Speicherplatz- bzw. Lokations-Tabelle aufweist, und wobei das System dadurch gekennzeichnet ist, dass:
    jede jeweilige Speicherplatz-Tabelle für jeden Datensatz enthält einen „aktueller Speicherplatz bzw. Lokation"-Eintrag für die Identität des Hostcomputers, der aktuell diesen Datensatz speichert, und
    einen „erzeugender Hostcomputer"-Eintrag für die Identität des Hostcomputers, auf dem der Datensatz erzeugt wurde;
    und dadurch, dass jeder der Hostcomputer:
    ausgebildet ist, zum Zugriff auf einen Datensatz, aus seiner eigenen Speicherplatz-Tabelle den aktuellen Speicherplatz bzw. die Lokation dieses Datensatzes zu lesen und zu versuchen, auf diesen Datensatz an diesem aktuellen Speicherplatz zuzugreifen, und in dem Fall, dass der Versuch fehlschlägt, aus seiner eigenen Speicherplatz-Tabelle den Speicherplatz bzw. die Lokation des Hostcomputers zu lesen, auf dem dieser Datensatz erzeugt wurde, und an diesen erzeugenden Hostcomputer eine Anforderung zu senden für den aktuellen Speicherplatz bzw. die Lokation dieses Datensatzes, wie in dessen Speicherplatz-Tabelle gespeichert; und
    reagierend ist auf den Empfang eines „erzeuge neues Objekt"-Befehls, der eine Identität für ein zu erzeugendes Objekt enthält, ein neues Objekt mit dieser Identität zu erzeugen und eine Broadcast-Nachricht zu senden, die seinen eigenen Computer- Speicherplatz bzw. seine eigene Lokation und die Identität des neu erzeugten Objekts enthält.
  • In einem zweiten Aspekt sieht die vorliegende Erfindung vor ein Verfahren zum Bewirken einer verteilten Berechnung in einem System, das eine Vielzahl von Hostcomputern aufweist, wobei jeder Hostcomputer einen Speicherraum zum Speichern vorbestimmter Datensätze und Programme zum Zugriff auf die Datensätze und eine Tabelle aufweist,
    wobei das Verfahren gekennzeichnet ist durch die Schritte:
    Unterhalten jeder jeweiligen Tabelle, um für jeden Datensatz zu enthalten
    einen „aktueller Speicherplatz bzw. Lokation"-Eintrag für die Identität des Hostcomputers, der aktuell diesen Datensatz speichert, und
    einen „erzeugender Hostcomputer"-Eintrag für die Identität des Hostcomputers, auf dem der Datensatz erzeugt wurde;
    und zum Zugriff auf einen Datensatz
    Lesen aus seiner eigenen Speicherplatz-Tabelle des aktuellen Speicherplatzes bzw. der Lokation dieses Datensatzes und Versuchen, auf diesen Datensatz an diesem aktuellen Speicherplatz bzw. der Lokation zuzugreifen, und in dem Fall, dass der Versuch fehlschlägt, Lesen aus seiner eigenen Speicherplatz-Tabelle des Speicherplatzes bzw. der Lokation des Hostcomputers, auf dem dieser Datensatz erzeugt wurde, und Senden einer Anforderung an diesen erzeugenden Hostcomputer für den aktuellen Speicherplatz bzw. die aktuelle Lokation dieses Datensatzes, wie in dessen Speicherplatz-Tabelle gespeichert;
    und zum Erzeugen eines neuen Objekts
    Antworten auf den Empfang eines „erzeuge neues Objekt"-Befehls, einschließlich einer Identität für ein zu erzeugendes Objekt, durch Erzeugen eines neuen Objekts mit dieser Identität und Senden einer Broadcast-Nachricht, die seinen eigenen Computer-Speicherplatz bzw. die Lokation und die Identität des neu erzeugten Objekts enthält.
  • Vorzugsweise weisen die Datensätze Objekte auf, auf die jeweils nur über einen zugehörigen Code zugegriffen werden kann.
  • Noch vorzugsweiser weisen die Objekte mehrere Objekte derselben Klasse auf und wobei sich mehrere Objekte dieser Klasse den zugehörigen Code teilen.
  • Ausführungsbeispiele der Erfindung werden nun auf beispielhafte Weise unter Bezugnahme auf die beigefügten Zeichnungen dargestellt, wobei:
  • 1 ein Blockdiagramm ist, das die Elemente eines Telekommunikationssystems darstellt, das ein verteiltes Computersystem der vorliegenden Erfindung enthält;
  • 2 ein Blockdiagramm ist, das einen Teil des Telekommunikationssystems von 1 darstellt;
  • 3 ein Blockdiagramm ist, das die Elemente eines Hostcomputers darstellt, der einen Teil des Telekommunikationssystems von 1 und 2 darstellt;
  • 4a ein Diagramm ist, das die Struktur von Daten darstellt, die in der Intelligenz-Domain gespeichert sind, die Teil der 1 bildet;
  • 4b ein Diagramm ist, das die Struktur von Daten darstellt, die in der Transport-Domain gespeichert sind, die Teil der 1 bildet;
  • 5 die Datenstruktur in dem Speicher einer Komponente der 4a darstellt;
  • 6 die Struktur einer Objekt-Speicherplatz-Tabelle darstellt, die in dem Speicher als Teil des Objektverwaltungsprogramms des Hostcomputers von 3 gespeichert ist;
  • 7 die Struktur einer Host-Status-Tabelle darstellt, die in dem Speicher des Hostcomputers von 3 gespeichert ist als Teil dessen Objektverwaltungsprogramms;
  • 8 (welche die 8a und 8b aufweist) ein Flussdiagramm ist, das die Aktualisierung der Host-Status-Tabelle darstellt;
  • 9 (welche die 9a und 9b aufweist) ein Flussdiagramm ist, das den Prozess der Konstruktion eines neuen Objekts darstellt;
  • 10 ein Flussdiagramm ist, das den Prozess des Verschiebens eines Objekts von einem Hostcomputer an einen anderen darstellt; und
  • 11 (welche die 11a, 11b und 11c aufweist) ein Flussdiagramm ist, das den Prozess der Übertragung einer Nachricht an ein Objekt auf einem entfernten Hostcomputer darstellt.
  • Unter Bezugnahme auf 1 weist ein Telekommunikationssystem eine Vielzahl von Vermittlungszentralen oder Vermittlungsstellen 2a, 2b auf, die über Kommunikationskanäle 4 (zum Beispiel Mikrowellenverbindungen, faseroptische Kabel, koaxiale Kupferkabel oder virtuelle Verbindungen, die auf den vorhergehenden getragen werden) miteinander verbunden sind, und eine Transport-Domain 6 bilden. Mit der Transport-Domain 6 ist eine Intelligenz-Domain 8 in der Form eines verteilten Computersystems verbunden, das eine Vielzahl von Hostcomputern 10a, 10b in einer Signalisierungskommunikation mit den Vermittlungszentren 2a, 2b über Signalisierungsverbindungen 12a, 12b, 12c aufweist, die auch die Hostcomputer 10a, 10b miteinander verbinden. Zum Beispiel können die zwei Domains miteinander verbunden sein unter Verwendung von Protokollen, wie das Signalisierungssystem 7 (SS7).
  • Die Hostcomputer 10a, 10b stellen zusammen ein lose miteinander verbundenes verteiltes Steuerungssystem dar, da sie nur unter Verwendung einer Messaging-Technik kommunizieren können und sie nicht unter Verwendung einer gemeinsam benutzten Speichertechnik kommunizieren.
  • Endbenutzer-Endgerätvorrichtungen (auch als Endgeräteinrichtungen bekannt), wie Telefone 14a, 14b, und Kommunikationsvorrichtungen mit breiter Bandbreite, wie Videospieler 16, bilden gemeinsam eine Endbenutzer-Domain 18, die mit der Transport-Domain 6 über Teilnehmeranschlussleitungen (local loop connections) 20a, 20b, 20c verbunden ist (zum Beispiel Verbindungen über optische Faser, zellularen Funk oder Twisted-Pair-Kupfer-Kabel).
  • Weiter ist eine Diensteanbieter-Domain 22 vorgesehen, die aus Einrichtungen zum Bereitstellen von Diensten (zum Beispiel Video-Dienste) besteht, wie ein Videospieler 24 und ein Computerterminal 26, die mit der Transport-Domain 6 über Teilnehmeranschlussleitungen 28a, 28b, 28c verbunden sind, wie ISDN-Kanäle oder andere Verbindungen mit hoher Bandbreite.
  • Auf bekannte Weise wird eine Endbenutzer-Endgerätvorrichtung 14 oder 16 benutzt, um eine Anforderung über die Transport-Domain 6 an die Diensteanbieter-Domain 22 zu leiten. Als ein Ergebnis wird ein Kanal durch die Transport-Domain 6 aufgebaut und die Dienstean bieter-Domain 22 überträgt einen Dienst über den Kanal an die Endbenutzer-Domain 18 (zum Beispiel durch Übertragen eines Videofilmes in Echtzeit oder eine Datei von Daten in elektronischem Format).
  • In herkömmlichen normalen alten Fernsprechdiensten (POTS – plain old telephone services) wird die Transport-Domain 6 einfach durch die gewählten Nummern gesteuert, die in der Endbenutzer-Domain erzeugt werden, um den Transportpfad aufzubauen. Jedoch wird momentan eine „intelligente Netzwerk"-Steuerung der Transport-Domain von der Intelligenz-Domain 8 vorgesehen. Die Intelligenz-Domain 8 empfängt von der Transport-Domain 6 die gewählte Nummer und/oder die wählende Nummer und führt eine Anrufverarbeitung gemäß entweder der gewählten oder der wählenden Nummer oder beider durch. Die Intelligenz-Domain 8 liefert typischerweise Nummernübersetzungsdienste, wobei eine gewählte Telefonnummer übersetzt wird, um einen Anrufweiterleitungsdienst an eine andere Nummer vorzusehen. In diesem Fall entspricht die gewählte Nummer einem gespeicherten Datensatz auf einem der Hostcomputer 10, auf den als Antwort auf ein Signal auf einer der Verbindungen 12 zugegriffen wird, um eine entsprechende Um- bzw. Weiterleitungs-Nummer zu erzeugen.
  • Im Allgemeinen liefert als Antwort auf das Auftreten eines Ereignisses in der Transport-Domain 6 (wie die Initiierung eines Anrufs von der Endbenutzer-Domain 18) die Intelligenz-Domain 8 eine Steuerungsinformation, um die Transport-Domain 6 zu steuern.
  • Andere Daten werden auch in der Intelligenz-Domain gespeichert. In diesem Ausführungsbeispiel werden Abrechnungsdaten für jeden Anruf in der Intelligenz-Domain gespeichert, um eine regelmäßige Rechnungsabwicklung für jeden Kunden zu ermöglichen.
  • Unter Bezugnahme auf 2 weist die Intelligenz-Domain 8 weiter eine Compilervorrichtung 30 auf, die aus einer programmierten Workstation besteht, verbunden mit den Hostcomputern 10 über Netzwerkserver 11a11c und ein Weitbereichsnetzwerk (WAN), das zwischen den Compilervorrichtung 30, den Hosts 10 und den Server 11 verläuft. Die Compilervorrichtung 30 bildet keinen Teil der vorliegenden Erfindung und wird nicht weiter beschrieben.
  • Die Server sind auch mit einem oder mehreren Servercomputer(n) des World Wide Webs (WWW) verbunden, die sich im Internet 32 befinden, und folglich mit bearbeitenden Terminals 15a15d, die mit dem Internet verbunden sind (zum Beispiel über einen lokalen Paketvermittlungsknoten).
  • Unter Bezugnahme auf 3 weist jeder Hostcomputer 10 einen Mainframe oder einen Server auf, der eine Kommunikationshardware 100 aufweist, die über das WAN mit den Server 11 verbunden ist; einen Prozessor 102; und einen Speicher 104, der sowohl einen schnellen Zugriffsspeicher in der Form von RAM und einen Offline-Speicher in der Form von magnetischen oder optischen Festplatten aufweist.
  • In der Speichervorrichtung 104 sind ein Betriebssystem 106 (zum Beispiel UNIX (TM)); ein Objektmanagerprogramm 108; und ein Objektmodell gespeichert, das einen Klassencode 110 und Objektdaten aufweist, was alles detaillierter im Folgenden diskutiert wird.
  • Das in der Intelligenz-Domain eingesetzte Datenmodell wird nun kurz beschrieben. Im Folgenden ist jedes „Objekt" ein Datensatz, der eine Anzahl von Datenfeldern aufweist, auf die nur durch einen Code zugegriffen werden kann, der diesem Objekt entspricht (in einer eins-zu-viele-Beziehung, in dem Sinn, dass derselbe Code, der eine Klasse von Objekten betrifft, tatsächlich auf alle Objekte dieser Klasse zugreift).
  • Herkömmlicherweise werden Objekte in Klassen gruppiert, wobei die Objekte derselben Klasse unterschiedliche Daten enthalten, aber in demselben Format. Jedes Objekt gehört auch zu einer oder mehreren Teilroutine(n) (im Allgemeinen bezeichnet als „Verfahren" oder „Funktionen"), die auf den Daten arbeiten und die im Allgemeinen die einzigen Mittel darstellen, die dies tun.
  • Die Formate, in denen die Teilroutinen, die zu den unterschiedlichen Objekten derselben Klasse gehören, entsprechende Daten empfangen und zurücksenden, sind dieselben (d. h. alle Objekte derselben Klasse haben eine gemeinsame Schnittstelle). Tatsächlich werden in C++ die Teilroutinen nur einmal repräsentiert für alle Objekte derselben Klasse (d. h. der Code für die Teilroutinen wird nur einmal gespeichert), so dass der Code und die Objekte sich in einer-zu-vielen-Beziehung befinden. Der Code gehört folglich zu der Klasse der Objekte statt zu jedem Objekt.
  • Jede Objektklasse kann eine Untergruppe einer generischeren Klasse sein, wie es in der objektorientierten Programmierung gewöhnlich ist. In diesem Fall kann der Code stattdessen in Beziehung zu der generischeren Klasse (die „Superklasse") gespeichert werden. Der Objektmanager 108 enthält eine Liste der Speicherstellen der Daten, die jedes Objekt bilden, und bei jedem Aufruf eines Objekts (d. h. einen Anruf), greift der Objektmanager auf den relevanten Teilroutinecode in dem des Klassencode-Speicherbereich 110 zu und liefert an den Code die Adresse der Daten für das relevante Objekt in dem Objekt-Speicherbereich 112.
  • Unter Bezugnahme auf 4a weisen in diesem Ausführungsbeispiel die Objekte, die in den Hosts 10 der Intelligenz-Domain vorgesehen sind, eine Vielzahl von Kundenobjekten 500 auf (ein Speicherdatensatz betreffend einen von Millionen Kunden), die bei Zugang eines neuen Kunden erzeugt werden; zerstört werden, wenn der Kunde freiwillig geht oder von dem Netzwerk entfernt wird; und bearbeitet, wenn sich die Anforderungen eines Kunden ändern: eine Vielzahl von Anrufobjekten 600a600c, von denen jedes am Anfang des jeweiligen Anruf erzeugt und nach der Beendigung des Anrufs zerstört wird; und eine Vielzahl von Kommunikationsvorrichtungsobjekten 700a700c, die jeweils ein Element der Kundenendgeräteinrichtung betreffen und bei der ersten Verbindung dieser Kundenendgeräteinrichtung zum Netzwerk erzeugt werden.
  • Unter Bezugnahme auf 4b weisen in diesem Ausführungsbeispiel die Vermittlungsstellen 2a, 2b ... der Transport-Domain 6 weiter Hostcomputer auf, auf denen Objekte 800a800b, 900a900f gespeichert sind, die jeweils die Vermittlungen und die Anschlüsse der Vermittlungen in den Vermittlungsstellen darstellen. Somit enthält jedes Vermittlungsobjekt 800 einen Datensatz des Zustandes der entsprechenden Vermittlung in jedem Moment; diese Objekte existieren permanent in dem Speicher und haben eine Eins-zu-eins-Abbildung bzw. -Entsprechung zu den physikalischen Vorrichtungen, die in den Vermittlungsstellen 2 vorhanden sind, so dass ein Schreiben zu dem Anschluss oder den Vermittlungsobjekten den Zustand der jeweiligen Anschlüsse oder Vermittlungsstellen ändert und ein Lesen des Anschlusses oder der Vermittlungsobjekte eine genaue Reflexion der tatsächlichen Bedingung der entsprechenden physikalischen Vorrichtungen liefert.
  • Auf beispielhafte Weise wird die Struktur von Daten in einem Kundenobjekt in der 5 darstellt.
  • Die Attributdaten, die von dem Objekt 500 unterhalten werden, weisen ein Kundentypfeld 502 auf (das anzeigen kann, dass der Kunde ein Angestellter ist oder einen anderen ungewöhnlicher Status hat oder ist ein normaler Kunde ist); ein Benutzer-ID-Feld 504; ein Host-Feld 506, das den Host 10 anzeigt, auf dem das Objekt 500 erzeugt wurde (geeigneter Weise in http/TCP/IP-Format).
  • Auch sind Daten gespeichert, die für die Dienste relevant sind, die dem Kunden bereitgestellt werden; zum Beispiel die normale Telefonnummer des Kunden (Feld 508); eine Telefonnummer, an welche die Kundenanrufe zu bestimmten Tageszeiten weitergeleitet werden sollen (Feld 510); und die Tageszeiten, während denen Anrufe weitergeleitet werden sollen (Feld 512).
  • Schließlich wird eine Abrechnungsinformation für den Kunden gespeichert in der Form eines Anruf-Log-Feldes 514, das für jeden Anruf die angerufene (und/oder anrufende) Telefonnummer, das Datum und die Zeit des Anrufs und die Kosten des Anrufs speichert (Feld 514).
  • Auf unterschiedliche Teile dieser Information muss von unterschiedlichen Einzelpersonen zugegriffen werden. Zum Beispiel können die Felder 508512, die den dem Kunden angebotenen Dienst definieren, von dem Kundendienstpersonal bearbeitet werden oder durch den Kunden selbst über eine Endbenutzer-Endgerätvorrichtung 15, während Abrechnungsdaten (Feld 514) nur durch das Abrechnungs- und Buchhaltungspersonal schreibbar sein sollten, welches das Netzwerk betreibt. Selbstverständlich sollte es für keinen Kunden möglich sein, Abrechnungsdatensätze von einer Endbenutzer-Endgerätvorrichtung 15 aus neu zu schreiben.
  • In Betrieb ruft das Auftreten von Ereignissen in der Transport-Domain (wie die Überwachung einer „abgehobenen (off hook)" Bedingung in der Endbenutzer-Domain) den Betrieb des Codes auf, der zu einem Objekt in der Intelligenz-Domain gehört. Zum Beispiel wird, wenn ein Telefon in der Endbenutzer-Domain abgehoben wird, der Code zur Erzeugung eines neuen „Anruf"-Objekts 600 aufgerufen. Wenn die angerufene Nummer erfasst wird, wird sie über die Signalisierungsverbindungen 12 an die Intelligenz-Domain 8 übertragen; das Kundenobjekt 500 des anrufenden Teilnehmers wird aktiviert, um das dessen Abrechnungsdatensatzfeld zu andern; und es wird auf das Kundenobjekt 500 des angerufenen Teilnehmers zugegriffen, um die Nummer festzustellen, an die der Anruf weitergeleitet werden soll, wobei die Information dann an die Vermittlungsobjekte 800 in der Transport-Domain übertragen wird, um den Pfad aufzubauen, über den der Anruf übertragen wird.
  • Während der Verbindung eines Anrufs ist die Rolle der Intelligenz-Domain normalerweise begrenzt. Bei Beendigung (clearing down) eines Anrufs bei Erfassen eines aufgelegten (on hook) Ereignisses, aktualisiert der Abrechnungsfunktionscode, der zu dem/den Kundenobjekten) 500 gehört, das Abrechnungsdatenfeld und das Anrufobjekt wird von dem Objektmanager 108 gelöscht.
  • Der Betrieb zur Laufzeit wird nun beschrieben.
  • In jedem Host-Prozessor 10 weist das Objektmanagerprogramm 108 (der „Daemon"), wie detaillierter beschrieben wird, Prozesse zum Erzeugen neuer Objekte auf; Prozesse zur Bestimmung des Speicherplatzes (d. h. der Hostcomputer 10), auf dem gegebene Objekte gespeichert sind; Prozesse zum Senden von Nachrichten an entfernte Hostcomputer; und Prozesse zum Empfang von Nachrichten davon.
  • Unter Bezugnahme auf 6 weist der Objektmanager 108 für jeden Hostcomputer 10 eine Objekt-Speicherplatz-Tabelle 1500 auf, die eine Liste 1510 der momentan existierenden Objekte nach Namen speichert und zugehörig zu dem Datensatz 1510a1510z für jedes Objekt einen Eintrag 1520a1520z speichert, der den Hostcomputer 10 speichert, auf dem das Objekt momentan gespeichert ist, und einen Eintrag 1530a1530z speichert, der die Identität des Hostcomputers speichert, auf dem das Objekt anfänglich erzeugt wurde.
  • Unter Bezugnahme auf 7 sind in dem Objektmanager 108 auch gespeichert eine Host-Tabelle 1600, die Statusdaten über jeden der Hostcomputer aufweist, aus welcher der geeignetste Hostcomputer zur Erzeugung eines neuen Objekts abgeleitet werden kann. Diese Tabelle weist deswegen auf einen ersten Satz von Einträgen 1610a1610z, welche die Identitäten jedes Hostcomputers speichern; einen zugehörigen zweiten Satz von Einträgen 1620a1620z, welche die Menge freien Speichers speichern, der auf diesem Hostcomputer verfügbar ist; einen dritten zugehörigen Satz von Einträgen 1630a1630z, die Konnektivitätsdaten für jeden der Hostcomputer 10 speichern (zum Beispiel die Anzahl von anderen Computern, mit denen er verbunden ist) und optional andere Einträge, die zum Beispiel eine Prozessorgeschwindigkeit betreffen.
  • Unter Bezugnahme auf 8a fragt der Objektmanager 108 jedes Hostcomputers 10 regelmäßig dessen Betriebssystem 106 ab, um festzustellen, ob es eine Änderung in den Daten gegeben hat, die in der Tabelle 1600 für diesen Prozessor gespeichert sind (zum Beispiel, ob nun weniger Speicher verfügbar ist als vorher), in einem Schritt 2002 und bei Feststellung einer signifikanten Änderung in einem derartigen Informationselement veranlasst in einem Schritt 2004 der Objektmanager 108 die Übertragung einer Broadcast-Nachricht über die Kommunikationsvorrichtung 100 an alle anderen Hostcomputer 10, die in der Tabelle 600 verzeichnet sind, und signalisiert die neue betreffende Information.
  • Unter Bezugnahme auf 8b aktualisiert, wenn ein Hostcomputer 10 eine derartige Nachricht in einem Schritt 2006 empfangt, dessen Objektmanager 108 die Statustabelle 1600 der 20, um die neue Information in einem Schritt 2008 zu reflektieren.
  • Somit hält der Objektmanager 108 jedes Hostcomputers 10 jederzeit eine Statusinformation für alle anderen Hostcomputer sowie für sich selbst in der Tabelle 16 der 7 aktuell.
  • Unter Bezugnahme auf 9 wird nun der Prozess beschrieben, der beim Konstruieren eines neuen Objekts ausgeführt wird. In einem Schritt 2010 liest, wenn eine Anweisung, eine Objektkonstruktionsfunktion aufzurufen, ansonsten in der Quelle angetroffen worden wäre (Schritt 2010), anstatt das Objekt in dem Adressbereich des Host-Prozessors 10 zu erzeugen, von dem der Aufruf stammt, das Objektmanagerprogramm 108 des vorliegenden Ausführungsbeispiels die Host-Prozessor-Statustabelle 1600 in einem Schritt 2012 und die Daten, die in dem Objekt gespeichert sind, das die Klasse beschreibt, aus der das zu erzeugende Objekt ein Mitglied ist.
  • Somit kennt das Objektmanagerprogramm 108 die Anforderungen des Objekts, das nun erzeugt wird (d. h. ob es eine große oder geringe Menge an Speicher erfordert und ob es einen Zugriff auf oder von vielen Kommunikationspunkten erfordert) und hat Daten über die verfügbare Fähigkeit jedes Hostcomputers.
  • In Schritt 2014 wählt der Objektmanager 108 einen Hostcomputer 10, auf dem das Objekt erzeugt werden soll. Die Entscheidung kann nur darauf basieren, welcher Hostcomputer den meisten verfügbaren verbleibenden Speicher hat, oder darauf, welcher die beste Konnektivität zu Zugriffspunkten hat, von denen das neue Objekt aufgerufen wird, ist aber vorzugsweise eine gewichtete Funktion, die berücksichtigt:
    den verfügbaren Speicher auf jedem Prozessor;
    die Konnektivität jedes Prozessors; und
    eine Präferenz für den aktuellen Prozessor (d. h. der, von dem der Aufruf zur Erzeugung des Objekts stammt).
  • In einem Schritt 2016 sendet der Objektmanager 108 eine Nachricht an den ausgewählten Hostcomputer 10, welche die Adresse dieses Hostcomputers und den Befehl aufweist, die Konstruktionsfunktion der Klasse aufzurufen, zu der das zu erzeugende Objekt gehört, zusammen mit dem Namen des zu erzeugenden Objekts.
  • An dem Ziel-Hostcomputer 10 wird in einem Schritt 2018 die Nachricht empfangen und an eine Aufruf-Funktion (invoker function) in einem Schritt 2020 weitergeleitet. Die Aufruf-Funktion veranlasst dann die Erzeugung des neuen Objekts an dem Ziel-Hostcomputer. Gleichzeitig aktualisiert der Ziel-Hostcomputer 10, auf dem das neue Objekt erzeugt wird, seine Objekttabelle 1500, um das neuen Objekt aufzunehmen.
  • Schließlich sendet (broadcast) in Schritt 2022 der Ziel-Hostcomputer an alle Hostcomputer 10 die Identität des neuen Objekts und seine Lokation bzw. seinen Speicherplatz, was am ursprünglichen Hostcomputer (unter anderen) in einem Schritt 2024 empfangen wird und verwendet wird, um die Objekttabelle 1500 dort zu aktualisieren. Somit werden gemäß diesem Ausführungsbeispiel Objekte in der Laufzeit an ausgewählten Hostcomputern 10 erzeugt, um die Verteilung von Objekten an die geeignetsten Hostcomputern auszugleichen, auf der Basis von regelmäßig aktualisierter Information über jeden Hostcomputer-Status.
  • Unter Bezugnahme auf 10 müssen sich Objekte permanent auf einem gegebenen Host befinden, können aber von einem Host zu einem anderen verschoben werden (d. h. gelöscht aus dem Speicher eines Hosts und aufgenommen in dem Speicher eines anderen).
  • In einem Schritt 2030 überprüft der Objektmanager 108 für jeden Hostcomputer 10 dessen Statustabelle 1500. In einem Schritt 2032 bestimmt das Objektmanagerprogramm 108, ob ein Objekt von dem Hostcomputer 10 verschoben werden soll, auf dem sich der Objektmanager 108 befindet; wenn zum Beispiel dieser Hostcomputer 10 keinen verfügbaren Speicher mehr hat. Wenn dem so ist, wird ein geeignetes verschiebbares Objekt ausgewählt (zum Beispiel, ein Objekt, auf das selten zugegriffen wird).
  • In einem Schritt 2034 wird die Objekttabelle 1500 überprüft, um aus dem Eintrag in dem entsprechenden Feld 1530 für das Objekt zu bestimmen, ob sich das Objekt momentan auf dem Host befindet, auf dem es erzeugt wurde. Wenn dem so ist (d. h. wenn das Objekt nicht verschoben wurde, seit es erzeugt wurde), dann wird in einem Schritt 2036 ein neuer Host ausgewählt (auf genau die selbe Weise, wie in Bezug auf die Erzeugung eines neuen Objekts oben beschrieben wurde) und in einem Schritt 2038 wird das Objekt verschoben.
  • Schritt 2038 wiest zwei Bestandteile auf; erstens wird eine Nachricht an den neuen Host übertragen, welche die Erzeugung des Objekts an diesem Host anweist und die Werte der Daten spezifiziert, die in dem Objekts gespeichert sind; und zweitens wird das Objekt aus dem Speicher auf dem aktuellen Hostcomputer 10 gelöscht.
  • Wenn in Schritt 2034 festgestellt wird, dass sich das Objekt momentan nicht auf dem Hostcomputer 10 befindet, auf dem es erzeugt wurde (d. h. das Objekt wurde bereits verschoben, seit es erzeugt wurde), sendet in einem Schritt 2040 der Objektmanager eine Nachricht mit diesem neuen Host-Speicherplatz an den ursprünglichen Hostcomputer 10, auf dem das Objekt ursprünglich erzeugt wurde (wie aus dem Eintrag 1530 und der Tabelle 1500 für das Objekt festgestellt wurde) und fährt nach dem Empfang einer Bestätigung von diesem ursprünglichen Hostcomputer in Schritt 2042 fort wie oben beschrieben (Schritt 2036).
  • Unter Bezugnahme auf 11 wird nun die Verwendung der Objektspeicherplatztabelle 1500 detaillierter beschrieben.
  • Wenn eine Nachricht an ein Objekt gesendet werden soll, bestimmt der Objektmanager 108 zuerst den momentanen Hostprozessor 10 in der Objektspeicherplatztabelle 1500, auf dem das Objekt als sich befindend gespeichert ist, und sendet eine Nachricht wird, die das Objekt aufruft, an diesen momentanen Host in einem Schritt 2050.
  • In den meisten Fällen erreichen Nachrichten die korrekten Hosts, aber es ist möglich, dass aufgrund einer Störung während der Kommunikation oder aus anderer Ursache, die Objektspeicherplatztabelle 1500 möglicherweise nicht völlig aktuell ist, so dass sich das angerufene Objekt nicht (oder nicht mehr) auf dem angezeigten Hostcomputer befindet.
  • Unter Bezugnahme auf 11b, wenn der Hostcomputer 10, an den die Nachricht adressiert ist, die Nachricht in einem Schritt 2052 empfängt, stellt er in einem Schritt 2054 fest, ob oder nicht das Objekt als vorhanden in seiner eigenen Objektspeicherplatztabelle 1500 gespeichert ist. Wenn vorhanden, wird das Objekt in einem Schritt 2056 angerufen und jede Antwortnachricht wird in Schritt 2058 zurück übertragen, wie oben beschrieben.
  • Wenn nicht, dann signalisiert in einem Schritt 2060 der Hostcomputer ein Fehlschlagen des Anrufs des Objekts zurück.
  • Der ursprüngliche Hostcomputer sendet bei Empfang einer derartigen Nachricht in einem Schritt 2062 eine Abfragenachricht an den ursprünglichen Hostcomputer 10, der in der Tabelle 1500 als der aufgeführt ist, auf dem das fragliche Objekt ursprünglich konstruiert wurde, in einem Schritt 2066. Aufgrund der getrennten Speicherplatz-Signalisierungsschritte 2040, 2042 der 10 sollte die Objektspeicherplatztabelle 1500 auf dem ursprünglichen Host, auf dem das Objekt konstruiert wurde, hinsichtlich dieses Objekts vollständig aktuell sein.
  • Unter Bezugnahme auf 11c, wenn der ursprüngliche Hostcomputer in Schritt 2068 ein Speicherplatzabfragesignal empfangt, bezieht sich sein Objektmanager 108 in einem Schritt 2070 auf die darin enthaltene Objektspeicherplatztabelle und signalisiert den bestimmten Speicherplatz des betroffenen Objekts in einem Schritt 2072 zurück.
  • Der erste Hostcomputer empfangt das Speicherplatzsignal von dem ursprünglichen Host und bestimmt in einem Schritt 2074 der 11a, ob der Hostcomputer, der somit als der Speicherplatz des Objekts angezeigt wird, sich von dem unterscheidet, an den eine Nachricht für das Objekt bereits in Schritt 2050 gerichtet wurde. Wenn dem so ist, aktualisiert der Objektmanager 108 die Speicherplatztabelle 1500 in einem Schritt 2076 und kehrt zu dem Schritt 2050 zurück, um die Übertragung der Nachricht an den Speicherplatz des neu angezeigten Hostcomputers 10 für das Objekt zu wiederholen.
  • Wenn die empfangene Adresse dieselbe Adresse ist, an welche die Nachricht vorher gerichtet wurde, sendet in einem Schritt 2078 das Objektmanagerprogramm 108 eine Nachricht, die ein Fehlschlagen des Erreichens des Objekts anzeigt, an das Objekt, den Prozess oder den Benutzer zurück, von dem der Versuch stammte, das Objekt zu anzurufen.
  • Es ist folglich erkennbar, dass in diesem Ausführungsbeispiel jeder Hostcomputer 10 eine Objektspeicherplatztabelle aufweist, in welcher der Speicherplatz aller Objekte in dem System aufgezeichnet ist, und jeder Host kann folglich autonom arbeiten, ohne Referenz auf die zentrale Datenbank, um andere Objekte auf anderen Hostcomputern anzurufen. Nichtsdestoweniger wird ein höherer Grad an Vollständigkeit hinzugefügt durch Vorsehen, dass jeder Hostcomputer 10 zusätzlich die Speicherplätze aller Objekte verfolgt, die ursprünglich auf diesem Hostcomputer erzeugt wurden, selbst wenn der Speicherplatz dieser Objekte darauf folgend auf einen anderen Hostcomputer verschoben wird.
  • Ferner ist es offensichtlich, dass jeder Hostcomputer 10 genaue Aufzeichnungen der Objekte pflegt, die sich in seinem eigenen Speicherbereich befinden.
  • Andere Ausführungsbeispiele und Modifikationen
  • Es ist selbstverständlich möglich, getrennte Tabellen vorzusehen für die Objekte, die lokal an jedem Hostcomputer gespeichert sind, und für die Objekte, die ursprünglich auf diesem Hostcomputer erzeugt wurden, sowie die Objekte, die auf anderen Hostcomputern gespeichert sind. Jedoch stellt das Vorsehen einer einzelnen Tabelle, die alle Objektspeicherplätze speichert, eine größere Flexibilität sicher, da alle Objektspeicherplatztabellen 1500 aller Hostprozessoren 10 im Wesentlichen identisch sind, was im Falle der Erweiterung des verteilten Berechnungssystems ermöglicht, ein neues Host-Prozessor-System aufzunehmen, um die Objektspeicherplatztabelle von jedem Host-Prozessor auf einen neuen Host-Prozessor zu kopieren.
  • Die Erfindung ist nicht nur mit C++ verwendbar, sondern mit anderen objektorientierten Sprachen, wie Smalltalk (TM), die in einer verteilten Umgebung vorgesehen werden.

Claims (6)

  1. Verteiltes Computersystem, das eine Vielzahl von Hostcomputern (10) aufweist, und wobei jeder der Hostcomputer einen Speicherraum (104) zum Speichern vorbestimmter Datensätze (500, 600) und Programme (108) zum Zugriff auf die Datensätze und eine Speicherplatz-Tabelle (1500) aufweist, und wobei das System dadurch gekennzeichnet ist, dass: jede jeweilige Speicherplatz-Tabelle (1500) für jeden Datensatz enthält einen „aktueller Speicherplatz"-Eintrag (1520) für die Identität des Hostcomputers, der aktuell diesen Datensatz speichert, und einen „erzeugender Hostcomputer"-Eintrag (1530) für die Identität des Hostcomputers, auf dem der Datensatz erzeugt wurde; und dadurch gekennzeichnet ist, dass jeder der Hostcomputer: ausgebildet ist, zum Zugriff auf einen Datensatz, aus seiner eigenen Speicherplatz-Tabelle (1500) den aktuellen Speicherplatz (1520) dieses Datensatzes zu lesen und zu versuchen, auf diesen Datensatz an diesem aktuellen Speicherplatz zuzugreifen, und in dem Fall, dass der Versuch fehlschlägt, aus seiner eigenen Speicherplatz-Tabelle (1500) den Speicherplatz (1530) des Hostcomputers zu lesen, auf dem dieser Datensatz erzeugt wurde, und an diesen erzeugenden Hostcomputer eine Anforderung zu senden für den aktuellen Speicherplatz dieses Datensatzes, wie in dessen Speicherplatz-Tabelle gespeichert; und reagierend ist auf den Empfang (2018) eines „erzeuge neues Objekt"-Befehls mit einer Identität für ein zu erzeugendes Objekt ein neues Objekt mit dieser Identität zu erzeugen (2020) und eine Broadcast-Nachricht zu senden (2022), die seinen eigenen Computer-Speicherplatz und die Identität des neu erzeugten Objekts enthält.
  2. System gemäß Anspruch 1, wobei die Datensätze Objekte aufweisen, auf die jeweils nur über einen zugehörigen Code zugegriffen werden kann.
  3. System gemäß Anspruch 2, wobei die Objekte mehrere Objekte derselben Klasse aufweisen und wobei sich mehrere Objekte dieser Klasse den zugehörigen Code teilen.
  4. Verfahren zum Bewirken einer verteilten Berechnung in einem System, das eine Vielzahl von Hostcomputern (10) aufweist, wobei jeder Hostcomputer einen Speicherraum (104) zum Speichern vorbestimmter Datensätze (500, 600) und Programme (108) zum Zugriff auf die Datensätze und eine Tabelle (1500) aufweist, wobei das Verfahren gekennzeichnet ist durch die Schritte: Unterhalten (2014 bis 2022) jeder jeweiligen Tabelle (1500), um für jeden Datensatz zu enthalten einen „aktueller Speicherplatz"-Eintrag (1520) für die Identität des Hostcomputers, der aktuell diesen Datensatz speichert, und einen „erzeugender Hostcomputer"-Eintrag (1530) für die Identität des Hostcomputers, auf dem der Datensatz erzeugt wurde; und zum Zugriff auf einen Datensatz Lesen aus seiner eigenen Speicherplatz-Tabelle (1500) des aktuellen Speicherplatzes (1520) dieses Datensatzes und Versuchen, auf diesen Datensatz an diesem aktuellen Speicherplatz zuzugreifen, und in dem Fall, dass der Versuch fehlschlägt, Lesen aus seiner eigenen Speicherplatz-Tabelle des Speicherplatzes (1530) des Hostcomputers, auf dem dieser Datensatz erzeugt wurde, und Senden einer Anforderung an diesen erzeugenden Hostcomputer für den aktuellen Speicherplatz dieses Datensatzes, wie in dessen Speicherplatz-Tabelle gespeichert; und zum Erzeugen eines neuen Objekts Antworten auf den Empfang (2018) eines „erzeuge neues Objekt"-Befehls mit einer Identität für ein zu erzeugendes Objekt durch Erzeugen (2020) eines neuen Objekts mit dieser Identität und Senden (2022) einer Broadcast-Nachricht, die seinen eigenen Computer-Speicherplatz und die Identität des neu erzeugten Objekts enthält.
  5. Verfahren gemäß Anspruch 4, wobei die Datensätze Objekte aufweisen, auf die jeweils nur über einen zugehörigen Code zugegriffen werden kann.
  6. Verfahren gemäß Anspruch 5, wobei die Objekte mehrere Objekte derselben Klasse aufweisen und wobei sich mehrere Objekte dieser Klasse den zugehörigen Code teilen.
DE69738309T 1996-01-16 1997-01-15 Verteilte verarbeitung Expired - Lifetime DE69738309T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GBGB9600823.0A GB9600823D0 (en) 1996-01-16 1996-01-16 Distributed processing
GB9600823 1996-01-16
PCT/GB1997/000107 WO1997026596A1 (en) 1996-01-16 1997-01-15 Distributed processing

Publications (2)

Publication Number Publication Date
DE69738309D1 DE69738309D1 (de) 2008-01-03
DE69738309T2 true DE69738309T2 (de) 2008-10-02

Family

ID=10787087

Family Applications (2)

Application Number Title Priority Date Filing Date
DE69739835T Expired - Lifetime DE69739835D1 (de) 1996-01-16 1997-01-15 Kompiler für verteilte Verarbeitung
DE69738309T Expired - Lifetime DE69738309T2 (de) 1996-01-16 1997-01-15 Verteilte verarbeitung

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE69739835T Expired - Lifetime DE69739835D1 (de) 1996-01-16 1997-01-15 Kompiler für verteilte Verarbeitung

Country Status (13)

Country Link
US (2) US5937192A (de)
EP (2) EP1400896B1 (de)
JP (1) JP2000505217A (de)
KR (1) KR19990077379A (de)
CN (1) CN1208482A (de)
AU (1) AU724358B2 (de)
CA (1) CA2242516C (de)
DE (2) DE69739835D1 (de)
ES (1) ES2296305T3 (de)
GB (1) GB9600823D0 (de)
MX (1) MX9805725A (de)
NO (1) NO983266L (de)
WO (1) WO1997026596A1 (de)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9600854D0 (en) * 1996-01-16 1996-03-20 British Telecomm Distributed processing
US6437805B1 (en) * 1996-09-23 2002-08-20 National Instruments Corporation System and method for accessing object capabilities in a graphical program
GB9620196D0 (en) * 1996-09-27 1996-11-13 British Telecomm Distributed processing
US6092120A (en) * 1998-06-26 2000-07-18 Sun Microsystems, Inc. Method and apparatus for timely delivery of a byte code and serialized objects stream
US6199201B1 (en) * 1998-08-03 2001-03-06 Xerox Corporation Software constructs that facilitate partial evaluation of source code
GB9921720D0 (en) * 1999-09-14 1999-11-17 Tao Group Ltd Loading object-oriented computer programs
US8010703B2 (en) * 2000-03-30 2011-08-30 Prashtama Wireless Llc Data conversion services and associated distributed processing system
US20010027467A1 (en) * 2000-03-30 2001-10-04 Anderson David P. Massively distributed database system and associated method
US6963897B1 (en) 2000-03-30 2005-11-08 United Devices, Inc. Customer services and advertising based upon device attributes and associated distributed processing system
US7254607B2 (en) * 2000-03-30 2007-08-07 United Devices, Inc. Dynamic coordination and control of network connected devices for large-scale network site testing and associated architectures
US20040103139A1 (en) * 2000-03-30 2004-05-27 United Devices, Inc. Distributed processing system having sensor based data collection and associated method
US7003547B1 (en) 2000-03-30 2006-02-21 United Devices, Inc. Distributed parallel processing system having capability-based incentives and associated method
USRE42153E1 (en) * 2000-03-30 2011-02-15 Hubbard Edward A Dynamic coordination and control of network connected devices for large-scale network site testing and associated architectures
US7039670B2 (en) * 2000-03-30 2006-05-02 United Devices, Inc. Massively distributed processing system with modular client agent and associated method
US20010039497A1 (en) * 2000-03-30 2001-11-08 Hubbard Edward A. System and method for monitizing network connected user bases utilizing distributed processing systems
US7020678B1 (en) 2000-03-30 2006-03-28 United Devices, Inc. Machine generated sweepstakes entry model and associated distributed processing system
US6847995B1 (en) 2000-03-30 2005-01-25 United Devices, Inc. Security architecture for distributed processing systems and associated method
US6654783B1 (en) 2000-03-30 2003-11-25 Ethergent Corporation Network site content indexing method and associated system
US6891802B1 (en) 2000-03-30 2005-05-10 United Devices, Inc. Network site testing method and associated system
US20090216641A1 (en) 2000-03-30 2009-08-27 Niration Network Group, L.L.C. Methods and Systems for Indexing Content
US20040148336A1 (en) * 2000-03-30 2004-07-29 Hubbard Edward A Massively distributed processing system architecture, scheduling, unique device identification and associated methods
US7092985B2 (en) * 2000-03-30 2006-08-15 United Devices, Inc. Method of managing workloads and associated distributed processing system
US7082474B1 (en) 2000-03-30 2006-07-25 United Devices, Inc. Data sharing and file distribution method and associated distributed processing system
US7155606B1 (en) 2000-04-12 2006-12-26 Microsoft Corporation Method and system for accepting preverified information
AU2001247742A1 (en) * 2000-04-12 2001-10-30 Microsoft Corporation Method and system for accepting precompiled information
AU2001281087A1 (en) * 2000-08-04 2002-02-18 Marconi Communications, Inc. System and method for implementing a self-activating embedded application
US20070016692A1 (en) * 2000-10-16 2007-01-18 Edward Balassanian Method and system for dynamic delivery of beads
US6907446B1 (en) * 2000-10-16 2005-06-14 Implicit Networks, Inc. Method and system for dynamic delivery of beads
US20040015820A1 (en) * 2000-09-25 2004-01-22 Edward Balassanian Method and system for dynamic delivery of beads
JP2002116917A (ja) * 2000-10-05 2002-04-19 Fujitsu Ltd オブジェクト指向型プログラミング言語によるソース・プログラムをコンパイルするコンパイラ
EP1461719A4 (de) * 2001-12-04 2007-11-07 Powerllel Corp Paralleldatenverarbeitungssystem, verfahren und architektur
US7051322B2 (en) * 2002-12-06 2006-05-23 @Stake, Inc. Software analysis framework
US20060273299A1 (en) * 2003-06-26 2006-12-07 Rj Mears, Llc Method for making a semiconductor device including a dopant blocking superlattice
WO2005018005A1 (en) * 2003-06-26 2005-02-24 Rj Mears, Llc Semiconductor device including mosfet having band-engineered superlattice
US7266537B2 (en) * 2004-01-14 2007-09-04 Intelligent Results Predictive selection of content transformation in predictive modeling systems
US20060095483A1 (en) * 2004-04-23 2006-05-04 Waratek Pty Limited Modified computer architecture with finalization of objects
US7844665B2 (en) 2004-04-23 2010-11-30 Waratek Pty Ltd. Modified computer architecture having coordinated deletion of corresponding replicated memory locations among plural computers
US20050262513A1 (en) * 2004-04-23 2005-11-24 Waratek Pty Limited Modified computer architecture with initialization of objects
US8028299B2 (en) * 2005-04-21 2011-09-27 Waratek Pty, Ltd. Computer architecture and method of operation for multi-computer distributed processing with finalization of objects
EP1816562A1 (de) * 2006-02-03 2007-08-08 Research In Motion Limited System und Verfahren zur dynamischen Erweiterung einer komponentenbasierten Anwendung durch anwendungsspezifische Dienste
US7797670B2 (en) * 2006-04-14 2010-09-14 Apple Inc. Mirrored file system
US8032877B2 (en) * 2006-10-20 2011-10-04 International Business Machines Corporation Compiler neutral linking solution for C++ code
WO2008064049A2 (en) * 2006-11-16 2008-05-29 Cisco Technology, Inc. Filtering access to data objects
CN101187965B (zh) * 2006-11-16 2010-12-15 思科技术公司 用于过滤对数据对象的访问的方法和装置
US8613080B2 (en) 2007-02-16 2013-12-17 Veracode, Inc. Assessment and analysis of software security flaws in virtual machines
US8095735B2 (en) 2008-08-05 2012-01-10 Convey Computer Memory interleave for heterogeneous computing
US9015399B2 (en) 2007-08-20 2015-04-21 Convey Computer Multiple data channel memory module architecture
US8156307B2 (en) * 2007-08-20 2012-04-10 Convey Computer Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set
US8561037B2 (en) * 2007-08-29 2013-10-15 Convey Computer Compiler for generating an executable comprising instructions for a plurality of different instruction sets
US9710384B2 (en) * 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
CN101140525B (zh) * 2007-10-17 2010-12-08 中兴通讯股份有限公司 分布式编译方法
US8539468B2 (en) * 2008-02-18 2013-09-17 International Business Machines Corporation System and methods for replacing software application classes using transparent object adapters
US8799884B2 (en) * 2008-08-13 2014-08-05 Qualcomm Incorporated Software application performance enhancement
US8205066B2 (en) 2008-10-31 2012-06-19 Convey Computer Dynamically configured coprocessor for different extended instruction set personality specific to application program with shared memory storing instructions invisibly dispatched from host processor
KR101115469B1 (ko) * 2009-01-22 2012-03-13 성 완 김 개인 맞춤형 인터넷 전화 서비스를 제공하는 방법
US8423745B1 (en) 2009-11-16 2013-04-16 Convey Computer Systems and methods for mapping a neighborhood of data to general registers of a processing element
US9348661B2 (en) * 2010-03-11 2016-05-24 International Business Machines Corporation Assigning a unique identifier to a communicator
US20110225297A1 (en) 2010-03-11 2011-09-15 International Business Machines Corporation Controlling Access To A Resource In A Distributed Computing System With A Distributed Access Request Queue
US8621446B2 (en) * 2010-04-29 2013-12-31 International Business Machines Corporation Compiling software for a hierarchical distributed processing system
US20120030649A1 (en) * 2010-08-02 2012-02-02 Advanced Bionics AG, c/o Froriep Renggli Methods and Systems for Automatic Generation of Multithread-Safe Software Code
US9424010B2 (en) * 2010-08-30 2016-08-23 International Business Machines Corporation Extraction of functional semantics and isolated dataflow from imperative object oriented languages
JP5644307B2 (ja) * 2010-09-17 2014-12-24 富士通株式会社 情報処理装置、情報処理装置の制御方法及び制御プログラム
US9678747B2 (en) 2011-02-08 2017-06-13 Openspan, Inc. Code injection and code interception in an operating system with multiple subsystem environments
US9286063B2 (en) 2012-02-22 2016-03-15 Veracode, Inc. Methods and systems for providing feedback and suggested programming methods
US10430190B2 (en) 2012-06-07 2019-10-01 Micron Technology, Inc. Systems and methods for selectively controlling multithreaded execution of executable code segments
US9104432B2 (en) 2013-06-24 2015-08-11 International Business Machines Corporation Extracting stream graph structure in a computer language by pre-executing a deterministic subset

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4714996A (en) * 1985-11-26 1987-12-22 International Business Machines Corporation Impact calculation for version management in a distributed information service
US5206951A (en) * 1987-08-21 1993-04-27 Wang Laboratories, Inc. Integration of data between typed objects by mutual, direct invocation between object managers corresponding to object types
US4853843A (en) * 1987-12-18 1989-08-01 Tektronix, Inc. System for merging virtual partitions of a distributed database
US4864497A (en) * 1988-04-13 1989-09-05 Digital Equipment Corporation Method of integrating software application programs using an attributive data model database
US4974156A (en) * 1988-05-05 1990-11-27 International Business Machines Multi-level peripheral data storage hierarchy with independent access to all levels of the hierarchy
US5325524A (en) * 1989-04-06 1994-06-28 Digital Equipment Corporation Locating mobile objects in a distributed computer system
DE69029441T2 (de) * 1989-08-24 1997-06-12 Ibm System für den Aufruf von Prozeduren von einem Fernnetzwerkknotenpunkt
US5495610A (en) * 1989-11-30 1996-02-27 Seer Technologies, Inc. Software distribution system to build and distribute a software release
EP0463172A1 (de) * 1989-12-26 1992-01-02 Fujitsu Limited Objektorientiertes verteiltes verarbeitungssystem
US5230069A (en) * 1990-10-02 1993-07-20 International Business Machines Corporation Apparatus and method for providing private and shared access to host address and data spaces by guest programs in a virtual machine computer system
US5151987A (en) * 1990-10-23 1992-09-29 International Business Machines Corporation Recovery objects in an object oriented computing environment
DE4131380A1 (de) * 1991-09-20 1993-03-25 Siemens Ag Verfahren zur adaption einer objektorientierten applikation
JP2665089B2 (ja) * 1991-09-26 1997-10-22 三菱電機株式会社 分散環境下におけるコンパイル方式
JPH05165610A (ja) * 1991-12-13 1993-07-02 Hitachi Ltd ソフトウェア開発環境の生成および保守方法
GB9305263D0 (en) * 1993-03-15 1993-05-05 Univ Westminster Parrallel computation
US5819283A (en) * 1993-05-11 1998-10-06 Apple Computer, Inc. Method and system for the extensibility of objects
CA2097540C (en) * 1993-06-01 1998-05-12 William G. O'farrell Accessing remote data objects in a distributed memory environment
US5506984A (en) * 1993-06-30 1996-04-09 Digital Equipment Corporation Method and system for data retrieval in a distributed system using linked location references on a plurality of nodes
GB9316948D0 (en) * 1993-08-14 1993-09-29 Ibm Programming aid for distributed computing systems
JPH0793341A (ja) * 1993-09-27 1995-04-07 Matsushita Electric Ind Co Ltd 文書管理装置
JP3190773B2 (ja) * 1993-09-30 2001-07-23 日本電気株式会社 言語処理プログラムのコンパイル処理方法
EP0668558B1 (de) * 1994-01-14 2002-04-17 Sun Microsystems, Inc. Verfahren und Gerät zur Automatisierung der Umgebungsanpassung von Rechnerprogrammen
US5560005A (en) * 1994-02-25 1996-09-24 Actamed Corp. Methods and systems for object-based relational distributed databases
US5778222A (en) * 1994-06-27 1998-07-07 International Business Machines Corporation Method and system for managing access to objects
US5675801A (en) * 1994-09-30 1997-10-07 International Business Machines Corporation Object oriented system and method for generating target language code
WO1996010787A1 (en) * 1994-10-04 1996-04-11 Banctec, Inc. An object-oriented computer environment and related method
US5583983A (en) * 1994-11-17 1996-12-10 Objectware, Inc. Multi-platform object-oriented software development and deployment system
US5617568A (en) * 1994-12-14 1997-04-01 International Business Machines Corporation System and method for supporting file attributes on a distributed file system without native support therefor
US5590331A (en) * 1994-12-23 1996-12-31 Sun Microsystems, Inc. Method and apparatus for generating platform-standard object files containing machine-independent code
US5761669A (en) * 1995-06-06 1998-06-02 Microsoft Corporation Controlling access to objects on multiple operating systems
US5675804A (en) * 1995-08-31 1997-10-07 International Business Machines Corporation System and method for enabling a compiled computer program to invoke an interpretive computer program
US5708838A (en) * 1995-09-08 1998-01-13 Iq Systems, Inc. Distributed processing systems having a host processor and at least one object oriented processor
US5930786A (en) * 1995-10-20 1999-07-27 Ncr Corporation Method and apparatus for providing shared data to a requesting client
US5809495A (en) * 1996-06-04 1998-09-15 Oracle Corporation Method for obtaining information regarding the current activity of a database management system from a viritual table in a memory of the database management system
US5737518A (en) * 1996-07-31 1998-04-07 Novell, Inc. Method and apparatus for testing an object management system
US5758355A (en) * 1996-08-07 1998-05-26 Aurum Software, Inc. Synchronization of server database with client database using distribution tables

Also Published As

Publication number Publication date
US6216262B1 (en) 2001-04-10
JP2000505217A (ja) 2000-04-25
EP0875029B1 (de) 2007-11-21
NO983266L (no) 1998-09-15
CN1208482A (zh) 1999-02-17
EP1400896A2 (de) 2004-03-24
AU1393597A (en) 1997-08-11
US5937192A (en) 1999-08-10
EP1400896B1 (de) 2010-04-07
ES2296305T3 (es) 2008-04-16
AU724358B2 (en) 2000-09-21
DE69738309D1 (de) 2008-01-03
WO1997026596A1 (en) 1997-07-24
EP0875029A1 (de) 1998-11-04
KR19990077379A (ko) 1999-10-25
CA2242516A1 (en) 1997-07-24
DE69739835D1 (de) 2010-05-20
EP1400896A3 (de) 2006-10-04
NO983266D0 (no) 1998-07-15
MX9805725A (es) 1998-10-31
CA2242516C (en) 2002-09-17
GB9600823D0 (en) 1996-03-20

Similar Documents

Publication Publication Date Title
DE69738309T2 (de) Verteilte verarbeitung
DE19882235B4 (de) Verwendung von Web-Technologie für Teilnehmerverwaltungsaktivitäten
DE60217133T2 (de) Zugriffsserver für Web-Dienste
DE69916928T2 (de) Zugriffsverfahren und Server für Netzwerkverzeichnis
DE60031788T2 (de) System zur bereitstellung vor diensten
DE69735450T2 (de) Verfahren zum Errichten einer Verbindung über ein Rechnernetzwerk
EP0525432B1 (de) Verfahren zur Änderung von Systemkonfigurationsdatensätzen in einem Fernmeldevermittlungssystem
DE69735355T2 (de) Nichtgeographische telefonnummerübertragbarkeit von intelligenten netzwerkdiensten
DE69924178T2 (de) Zugriffsteuerung mit Just-in-time Entdeckung von Mitteln
DE19681682B4 (de) Telekommunikationsnetz-Verwaltungssystem
EP0825524A1 (de) Verfahren zur Verwaltung der Benennung von Objekten
EP0520083B1 (de) Datenkonsistenzsicherung in einem digitalen Fernmeldevermittlungssystem
DE69332927T2 (de) Gerät zur Verwaltung eines Elementverwalters für ein Fernmeldevermittlungssystem
EP0959588A2 (de) Netzelement mit einer Steuerungseinrichtung und Steuerungsverfahren
EP1225511A1 (de) Verfahren und system zur akten-verwaltung in verteilten umgebungen
EP1872595A1 (de) Änderungsverfahren der arbeitsweise einer technischen-kommunikationsgruppen-plattform (tkgp) eines telekommunikations-netzes (tk-netzes)
DE69812574T2 (de) Verfahren und System zur Leitweglenkung von Agent-Programmen in einem Kommunikationsnetz
DE69833845T2 (de) Intelligente Schnittstelle zwischen einem Dienststeuerpunkt und einem Signalisierungsnetz
EP0632910B1 (de) Programmgesteuertes isdn-vermittlungssystem mit einem nach prinzipien objektorientierter programmierung erstellten programmodul zur behandlung von wählverbindungen
DE69734352T2 (de) Verteilte verarbeitung
EP1311105B1 (de) Verfahren zur Unterstützung der Vergebührung von Diensten
DE60201688T2 (de) Verfahren und System zur Dienstbereitstellung
DE69833689T2 (de) Teilnehmerdatenbehandlung in telekommunikationsnetzwerken
DE69921431T2 (de) Gateway in einem intelligenten Netz
EP0614551B1 (de) Verfahren zur steuerung der interaktion einer bedieneroberfläche mit einer bedieneranwendung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition