DE69309704T2 - Datenverarbeitungssystem und betriebssystem - Google Patents

Datenverarbeitungssystem und betriebssystem

Info

Publication number
DE69309704T2
DE69309704T2 DE69309704T DE69309704T DE69309704T2 DE 69309704 T2 DE69309704 T2 DE 69309704T2 DE 69309704 T DE69309704 T DE 69309704T DE 69309704 T DE69309704 T DE 69309704T DE 69309704 T2 DE69309704 T2 DE 69309704T2
Authority
DE
Germany
Prior art keywords
processor
processing
code
processors
data
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
DE69309704T
Other languages
English (en)
Other versions
DE69309704D1 (de
Inventor
Christopher Andrew Bracknell Berkshire Rg12 8Uz Hinsley
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.)
TAO Group Ltd
Original Assignee
TAO Group Ltd
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 TAO Group Ltd filed Critical TAO Group Ltd
Application granted granted Critical
Publication of DE69309704D1 publication Critical patent/DE69309704D1/de
Publication of DE69309704T2 publication Critical patent/DE69309704T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • 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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • 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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • 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/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Image Processing (AREA)
  • Devices For Executing Special Programs (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf Datenverarbeitungssysteme und auf Betriebssysteme hierfür. Insbesondere bezieht sich die Erfindung auf Betriebssysteme für Computer und Computernetzwerke.
  • Um zu funktionieren, muß ein Computer oder ein Oomputersystem Hardware, wie zum Beispiel einen oder mehrere Prozessoren, Eingabe/Ausgabeeinrichtungen, einen Speicher und verschieden Peripheriegeräte, sowie Software sowohl in Form von Betriebsprogrammen, um zu bewirken, daß die Hardware auf eine bestimmte Art und Weise arbeitet, als auch in Form von Programmen auf höherem Niveau aufweisen, die die Betriebsprog ramme anweisen, Vorgänge durchzuführen. In dem Versuch, die bestmögliche Funktionsfähigkeit für die verschiedenen verfügbaren Prozessoren zu erreichen, sind viele Betriebssysteme entworfen worden. Viele dieser Betriebssysteme sind speziell auf einen bestimmten Prozessor abgestimmt. Weiterhin unterstützen sie unter Umständen nur eine kleine Zahl von Prozeßbzw. Programmiersprachen.
  • Die vorliegende Erfindung ist bei dem Versuch entstanden, einen verbesserten Computer und ein Computerbetriebssystem zu entwerfen, welcher bzw. welches insbesondere, jedoch nicht ausschließlich, eine Mehrzahl von Prozessoren beinhaltet.
  • Die Erfindung ist gemäß Anspruch 1 definiert. Die Merkmale des Oberbegriffs des Anspruchs 1 sind in der EP-A-0 336 552 offenbart.
  • Gemäß der vorliegenden Erfindung wird ein Datenverarbeitungssystem bereitgestellt, welches eine Mehrzahl von Codeabschnitten sowie einen oder mehrere Datenprozessoren für die Handhabung der Codeabschnitte aufweist, wobei der Datenprozessor (die Datenprozessoren) jeweils eine Verarbeitungseinrichtung und eine Einrichtung für das Verbinden einer ausgewählten Mehrzahl von Codeabschnitten zu einer ausführbaren Anweisung aufweist, die durch die Verarbeitungseinrichtung ausgeführt werden soll wobei die ausgewählten Codeabschnitte zu einer vollständigen, ausführbaren Anweisung nur zum Zeitpunkt des Ladens oder Ausführens der Anweisung verbunden werden, wobei die Codesegmente für einen Prozessor geschrieben sind (der im folgenden als "virtueller Prozessor" bezeichnet wird), der seine eigene, vordefinierte Sprache hat, und wobei die Verarbeitungseinrichtung des Datenprozessors bzw. jedes Datenprozessors so betreibbar ist, daß sie einen Code in einer Sprache versteht und ausführt, die eine andere ist als die Codesprache des virtuellen Prozessors, und wobei der bzw. jeder Datenprozessor Einrichtungen zum Übersetzen der Codeabschnitte aus dem Code des virtuellen Prozessors in die Codesprache aufweist, die von der jeweiligen Verarbeitungseinrichtung verstanden wird.
  • Während das Betriebssystem gemäß der Erfindung dafür ausgelegt ist, eine Mehrzahl von Datenprozessoren miteinander zu verknüpfen, und insbesondere Datenprozessoren verschiedener Typen, die auch ihre eigenen unterschiedlichen Codesprachen haben, und zwar zu einem gemeinsamen System, welches einen gemeinsamen Satz von Codeabschnitten verwendet, die in diesem Fall in der Sprache des virtuellen Prozessors geschrieben sind und die durch die Übersetzungseinrichtung in die Codesprachen der individuellen Verarbeitungseinrichtungen übersetzbar sind, kann die Erfindung auch auf Datenverarbeitungssysteme angewendet werden, die nur einen einzelnen Prozessor mit einer natürlichen Codesprache haben, die sich von derjenigen der Codeabschnitte unterscheidet. Gemäß einem bevorzugten Aspekt der Erfindung weist das Datenverarbeitungssystem eine Mehrzahl von Prozessoren auf, die wie Knoten in einem Netzwerk miteinander verbunden sind, und wobei das Netzwerk so eingerichtet ist, daß es ein Verfahren der Verarbeitungszuordnung durchführt, bei welchem der Prozessor an irgendeinem beliebigen, gegebenen Knotenpunkt in dem Netzwerk nach Empfang der Anweisungen, eine Verarbeitung durchzuführen, entscheidet, ob er oder ein Datenprozessor an einem der Nachbarknoten zu diesem Zeitpunkt besser in der Lage ist, die Verarbeitung durchzuführen, und gemäß dieser Entscheidung entweder die Verarbeitung selbst durchführt oder die Anweisung, die Verarbeitung durchzuführen, zu diesem Nachbarprozessor weiterleitet In einer Ausführungsform kann der Datenprozessor an dem ersten Knoten eine Nachricht an den Datenprozessor jedes benachbarten Knotenpunktes senden, welche das Verarbeitungsvolumen anzeigt, welches für die Durchführung der Verarbeitung erforderlich ist, wobei der Prozessor auch bestimmt, ob er selbst ein ausreichendes, verbleibendes Volumen hat, wobei der Prozessor an jedem benachbarten Knotenpunkt so eingrichtet ist, daß er dem Prozessor an dem ersten Knotenpunkt eine Information als Antwort zukommen läßt, die anzeigt, ob das Volumen verfügbar ist, und wobei der Prozessor an dem ersten Knotenpunkt die Antworten mit seiner eigenen Feststellung vergleicht und entweder den Vorgang an denjenigen der Nachbarprozessoren weiterleitet, der das meiste verfügbare Volumen hat oder die Verarbeitung selbst übernimmt, wenn er das meiste verfügbare Volumen hat.
  • Alternativ wird der Prozessor mit der höchsten Leistungsfähigkeit (power rating) ausgewählt, wobei die Leistungsfähigkeit die Geschwindigkeit der effektiven Vorgänge pro Sekunde bei dem Prozessor an irgendeinem gegebenen Knotenpunkt, geteilt durch die Anzahl der auf dem Prozessor laufenden Vorgänge und multipliziert mit einer Funktion der für den in Rede stehenden Prozessor verfügbaren Geschwindigkeit der Kommunikation außerhalb des Chips ist. Auch andere Verfahren und Schemata, die Entscheidung zu treffen, können verwendet werden.
  • Andere Aspekte und Merkmale der Erfindung werden unter Bezug auf die beigefügten Zeichnungen beschrieben, von denen:
  • Figur 1 schematisch die Programmorganisation eines Computersystems zeigt,
  • Figur 2 die Hierarchie der Organisation nach Figur 1 zeigtv
  • Figur 3 die wechselseitige Beziehung zwischen einer Anzahl von zugeordneten Mikroprozessoren während des Einstellens des Computersystems zeigt,
  • Figur 4 dieselbe Beziehung zu einem späteren Zeitpunkt der Verarbeitung zeigt,
  • Figur 5 ein schematisches Flußdiagramm für die Verarbeitungszuordnung zeigt.
  • Die folgende Beschreibung bezieht auf ein Berechnungsnetzwerk, welches eine Mehrzahl von Prozessoren hat, die entweder in derselben Umgebung angeordnet sind, möglicherweise auf demselben Wafer oder Chip, oder die in einem Netzwerk veteilt und durch Verdrahtung, optische Fasern, Telekommunikationsleitungen über größere Entfernungen oder durch irgendwelche anderen Einrichtungen miteinander verknüpft sind. Das beschriebene System ist ausreichend flexibel, so daß jede dieser Ausgestaltungen und darüberhinaus auch weitere geeignet sind. Das System kann alternativ auch nur einen Prozessor aufweisen. Der Prozessor oder die Prozessoren sind so eingerichtet, daß sie Operationen, Programme und Verarbeitungen unter der Steuerung eines Betriebssystems durchführen. Das Betriebssystem ermöglicht es, daß Programme für einen imaginären Prozessor geschrieben werden, der als virtueller Prozessor bezeichnet wird und der seine eigene, vordefinierte Sprache hat. Dieser virtu eile Prozessor ermöglicht es, daß irgendein beliebiger Typ von tatsächlichen Prozessoren verwendet wird, oder daß Kombinationen verschiedener Typen von Prozessoren verwendet werden, da der für den virtuellen Prozessor geschriebene Programmcode nur zum Zeitpunkt des Ladens in den eigenen Code jedes Prozessor übersetzt wird. Daher können ausführbare Dateien zu irgendeinem unterstützten Prozessor ohne Modifizierung und ohne Rückübersetzung oder erneute Übersetzung (Recompilierung) übertragen werden. Typische Prozessoren, die für das System geeignet sind, schließen den Inmos T800 Transputer, Motorola 680X0, Intel 80386/80486, TM534C40 Archimedes ARM und SUN SPARC ein. Andere Prozessoren sind selbstverständlich auch geeignet. Das Betriebssystem ist für eine Parallelverarbeitung ausgelegt, so daß mehr als eine Operation gleichzeitig ausgeführt werden kann, im Gegensatz zu konventionellen Rechnersystemen, in welchen die Daten und Operationen nacheinander angeordnet werden müssen, so daß nur eine Operation bzw. ein Vorgang zu einem bestimmten Zeitpunkt ausgeführt werden kann. Die Fähigkeiten des Multitasking und für mehrere Benutzer sind ebenfalls eingeschlossen.
  • Das System wird vom Datenstrom getrieben und beinhaltet im wesentlichen eine Mehrzahl von Codeabschnitten oder Werkzeugen, die nur zum Zeitpunkt des Ladens in eine vollständige, ausführbare Anweisung eingebunden sind. Dementsprechend kann jedes dieser Werkzeuge sehr kurz und für sich selbst betrachtet in seiner Einfachheit nahezu trivial sein. Zum Vergleich sollte darauf hingewiesen werden, daß das traditionelle maschinelle Berechnen Routinen, wie zum Beispiel Bibliotheken, Funktionen usw. unmittelbar nach dem Übersetzen (Kompilieren) in einem Vorgang, der als Uulinkiflgl, bekannt ist, miteinander verbindet. Die daraus resultierende Datei ist ein großes, unhandliches, vollständiges und in sich geschlossenen, ausführbares Bild bzw. Gebilde, welches zum Zeitpunkt des Ladens nur eine sehr geringe Modifizierung erfordert. Die Datei kann nicht durch Prozessoren weitergetragen werden und kann nicht in einfacher Weise an sich verändemde Komponenten angepaßt werden, wie zum Beispiel bei Systemen mit kleinen Speicherkapazitäten. Weiterhin können die Bestandteile derselben nicht für andere Aufgaben verwendet werden oder sie müssen tatsächlich vollständig verändert werden. Die in der vorliegenden Erfindung verwendeten, kleinen Komponenten, die nur zusammengebracht werden, um im letzten Moment eine Operation bzw. einen Verarbeitungsvorgang zu bilden (ein "just in time"- Verfahren), sind selbstverständlich vollständig übertragbar und können auch gleichzeitig von zwei oder mehr Verarbeitungen geteilt bzw. gleichzeitig verwendet werden, auch wenn die Verarbeitungen unterschiedliche Arbeiten ausführen. Einige Werkzeuge sind für eine besondere Anwendung ausgelegt und andere sind ausgestaltet, ohne daß an eine besondere Anwendung gedacht wurde. Aufgrund des späten Verknüpfungsvorganges können die Programmbestandteile auch während der Ausführung miteinander verbunden werden. Es können also große Anwendungen, die eine (nominell) große Kapazität haben, in der Tat auf einem System mit einer kleinen Speicherkapazität laufen und die Anwendung kann die Auswahl vornehmen, daß in dem Speicher nur der besondere Codeabschnitt oder die Codeabschnitte verfügbar sind, die zu jeder Zeit erforderlich sind, wie unten noch beschrieben wird.
  • Daten in dem System werden in Form von Nachrichten zwischen Codebestandteilen weitergeleitet bzw. übertragen. Ein Codebestandteil, der in der Lage ist, Nachrichten zu empfangen und zu senden, ist unter dem Begriff "Prozeß" (oder "Verarbeitung") bekannt und besteht aus einer Ansammlung von Werkzeugen und der Verbindungslogik hierfür, sowie den verarbeiteten Daten. Das System ist schematisch in Figur 1 veranschaulicht, in welcher ein zentraler Kern eines Programmcodes dargestellt ist. Der Kern ist ein "Block", und ist das grundlegende Betriebssystem, welches von allen Prozessoren in dem Netzwerk verwendet wird. Typischerweise umfaßt er 8 bis 16 Kilobytes. Außerhalb des Kerns sind schematisch eine Mehrzahl von Werkzeugobjekten 2 dargestellt, von denen irgendeine beliebige Ansammlung einen Prozeß bilden kann. Ein drittes Niveau des Programmcodes liegt in Form der Werkzeuge 3 vor. Ein typischer Prozeß oder Verarbeitungsvorgang wird durch die Pfeile in der Figur dargestellt. Demnach weist ein Prozeß, den wir P1 nennen wollen, den Kerncode 1 plus zwei Werkzeugobjekte M1 und M2 auf. Jedes dieser Werkzeugobjekte, das vielleicht nur einige wenige hundert Byte lang ist, kann eines oder mehrere der Werkzeuge 3 verwenden. In diesem Fall verwendet das Werkzeugobjekt M1 die Werkzeuge T1, T2 und T3 und das Werkzeugobjekt M2 verwendet (wiederum) T3, T4, T5 und T6. Man erkennt also aus der Figur, daß ein relativ komplexer Prozeß oder ein relativ komplexes Programm durch Verwendung einer Mehrzahl der relativ kleinen Abschnitte ausgeführt werden kann, die nur bei Bedarf zusammengebracht werden. Es kann mehr als ein Prozeß bzw. mehr als eine Verarbeitung gleichzeitig ausgeführt werden, indem jeder Prozeß auf einem anderen Prozessor angeordnet wird. Die aktuelle Anordnung von Verarbeitungen geschieht durch ein unten skizziertes, automatisches Verfahren, wobei dieses Verfahren für die Benutzer transparent ist und in der Tat auch für das System als Ganzes. Dadurch wird eine optimale Belastungsverteilung und Kommunikationseffizienz sichergestellt. Im Ergebnis kann eine Anzahl von Verarbeitungen, die miteinander in Verbindung stehen, automatisch parallel ablaufen.
  • Die drei fundamentalen Komponentenobjekte des Systems sind in Figur 2 dargestellt. Diese bestehen aus Datenobjekten, Werkzeugobjekten (Werkzeugen) und Prozeßobjekten. Ein Proze ßobjekt wirkt als ein Kabelbaum, der verschiedene Werkzeugobjekte aufruft. Ein Prozeß bzw. eine Verarbeitung lenkt im wesentlichen den logischen Ablauf einer Tätigkeit und lenkt Werkzeugobjekte so, daß sie auf Daten wirken. Ein Prozeßobjekt befindet sich also am oberen Ende der in Figur 2 dargestellten hierarchischen Struktur. Ein Werkzeugobjekt entspricht einem traditionellen Funktionsaufruf oder Unterprogramm. Es kann nur durch Ansprechen verwendet werden und muß durch irgendetwas anderes aktiviert werden, wie zum Beispiel ein Prozeßobjekt. Dies ist ähnlich der Art und Weise, in welcher eine Funktion in der Sprache C von einem Hauptteil eines Codes aufgerufen wird, wobei der wesentliche Unterschied darin liegt, daß bei dem vorliegenden System jedes Codesegment, d.h. Werkzeug, vollständig unabhängig ist. Schließlich entspricht ein Datenobjekt einer Datei. Eine Datei kann Informationen über sie selbst enthalten und darüber, wie sie verarbeitet werden kann. Diese Information kann beispielsweise eine Information umfassen, die auf das für die Handhabung der Datenstruktur und den zu dieser Datei gehörenden lokalen Daten verwendete Werkzeug zeigt. Ein Prozeß kann einen allgemein bzw. öffentlich definierten Eingang und Ausgang haben, wie zum Beispiel einen ASCII-Datenstrom. Der Prozeß kann demnach auch durch Verarbeitüngen Dritter verwendet werden, d.h. nicht nur von dem Urheber. Ein Prozeß, der nicht allgemein bzw. öffentlich verfügbar ist, hat eine private Eingangs- und Ausgangsstruktur und ist dementsprechend nur frei für die Benutzung durch den Urheber eines bestimmten Programmes, sofern nicht Einzelheiten der Eingabe/Ausgabezwischenstufe öffentlich bzw. allgemein verfügbar gemacht werden. Man kann auch eine oder mehrere Verarbeitungen miteinander kombinieren, um eine Anwendung zu bilden, die eine vollständige Arbeit ist. Es versteht sich, daß eine Anwendung auf zwei oder mehr Prozessoren laufen kann.
  • Wie oben beschrieben, können Anwendungen im Multi-task-Betrieb oder in Parallelverarbeitung laufen. Verarbeitungen bzw. Prozesse können andere, Tochterprozesse, aktivieren, die ihrerseits Tochterprozesse (Enkelprozesse) aktivieren können, usw. Diese Prozesse werden über das verfügbare Netzwerk von Prozessoren dynamisch verteilt und ohne daß für den Anwendungsfall oder den Programmierer die aktuelle Verteilung bekannt ist. Die Kommunikation zwischen den Prozessoren beruht auf einer Eltern-Kind-Hierarchie. Es gibt keine "Master"-Knoten oder -prozessoren als solche und irgendeine beliebige Topologie irgendeiner Anzahl von Prozessoren kann verwendet werden. Figur 5 zeigt einen möglichen Algorithmus für das Verteilen von Prozessen bzw. Verarbeitungen zwischen den verschiedenen Prozessoren in dem Netzwerk.
  • Wenn ein Mutterprozeß (parent process) mit einem Tochterprozeß (child process) zusammenarbeiten möchte, so wird zuerst die Nachricht an einen ersten Prozessor weitergeleitet und insbesondere zu dem Kernprozeß bzw. der Kernverarbeitung auf diesem Prozessor. Dieser Prozeß handhabt Nachrichten zu dem Prozessor und von dem Prozessor und wirkt als ein Umschalter zwischen Prozeßsteuerung und Nachricht. Der Kern des ersten Prozessors, der mit "A" bezeichnet ist, berechnet dann die Leistungsfähigkeit des Prozessors. Die Leistungsfähigkeit ist im wesentlichen ein Maß der Kapazität oder des Volumens in diesem Prozessor, um die spezielle Verarbeitung durchzuführen. Die Leistungsfähigkeit kann definiert werden als Geschwindigkeit der effektiven Operationen des Prozessors pro Sekunde, geteilt durch die Anzahl von Prozessen, die auf dem Prozessor laufen und multipliziert mit einer Funktion der für ihn verfügbaren Kommunikationsgeschwindigkeit außerhalb des Chips. Andere Verfahren zum Bestimmen einer Leistungsfähigkeit können selbstverständlich auch verwendet werden. Beispielsweise kann eine Nachricht, eine bestimmte Verarbeitung auszuführen, von der Anzahl von Bytes begleitet sein, die für die Verarbeitung erforderlich sind. Die Leistungsfähigkeitsbestimmung kann also auch die Bestimmung aufweisen, ob diese Anzahl von Bytes in dem lokalen Speicher des Prozessors verfügbar sind. Dieser Speicher kann ein On-Chip-Speicher für einen Prozessor, wie zum Beispiel ein Transputer sein, oder er kann außerhalb des Chips liegen. Der lokale Kern weist dann den Kern jedes Nachbarprozessors in dem Netzwerk an (es sei daran erinnert, daß Nachbarschaft topologische Nachbarschaft sein soll und daß Prozessoren räumlich einen großen Abstand voneinander haben können), damit sie ihre eigene Leistungsfähigkeit berechnen. Jeder der Nachbarprozessoren sendet dann zu dem Mutterprozessor A eine Nachricht zurück, die die jeweilige Leistungsfähigkeit anzeigt. Der Kern von A vergleicht dann alle Leistungsfähigkeiten miteinander und entscheidet, ob seine eigene Leistungsfähigkeit größer oder gleich derjenigen seiner Nachbarn ist. Wenn dies der Fall ist, so entscheidet der Kern von A, daß er die Verarbeitung selbst annimmt. Er tut dies, indem er seinen eigenen dynamischen Verknüpfer und Übersetzer (siehe unten) anweist, die Tochterverarbeitung zu installieren, und schickt dann eine Nachricht an den anweisenden Prozessor und informiert diesen über die eindeutige Adresse des empfangenden Prozessors. Wenn die Leistungsfähigkeit des Prozessors A nicht größer als die oder gleich der seiner Nachbarn ist, so wird dann derjenige Prozessor ausgewählt, der die größte Leistungsfähigkeit hat, um die Verarbeitung anzunehmen. Wenn alle Leistungsfähigkeiten gleich sind, so nimmt der Prozessor A die Verarbeitung an. Wenn der Prozeß einem anderen Prozessor zugeordnet ist, so sendet der Prozessor A eine Nachricht zu diesem Prozessor, die ihm sagt, "nimm X Bytes, Adressnummer des Mutterprozesses".
  • Wenn ein Prozessor gefunden worden ist, der den Tochterprozeß übernimmt, so könnte die dynamische Prozeßzuordnung stoppen und der Prozeß k²nnte durchgefiihrt werden. Es ist jedoch üblicher, denselben Zuordnungsablauf für den neuen Prozessor durchzuführen, d.h. in dem in Figur 5 dargestellten Flußdiagramm wird der neu ausgewählte Prozessor, der Prozessor B, zu dem Prozessor A und der Zyklus beginnt von neuem mit dem Schritt der Abfrage der Nachbarn, ihre Leistungsfähigkeiten zu berechnen. Die Suche für einen lokalen Prozessor, der die minimale aktuelle Aktivität und damit die größte Kapazität zur Durchführung einer Verarbeitung hat, hat damit automatisch die Tendenz, sich von einem zentralen Punkt, von wo aus der Mutterprozeß bzw. die Mutterverarbeitung ausgeht, auszubreiten. Dies garantiert im wesentlichen einen Lastenausgleich zwischen dem Netzwerk von Prozessoren und lokalen Kommunikationen zwischen eng verknüpften Prozessen bzw. Verarbeitungen. Weiterhin erkennt man aus dem vorstehenden, daß kein Master-Knoten erforderlich ist und daß in jedem Netzwerk irgendein beliebiger Prozessor üblicherweise zu irgendeinem beliebigen Zeitpunkt nicht mehr als einen Prozeß mehr auszuführen hat als irgendein Nachbar, wenn sie von identischem Typ sind. Alternativ kann der Benutzer in einigen Ausführungsformen auswählen, falls gewünscht, welcher Prozessor oder Typ von Prozessor einen Prozeß bzw. eine Verarbeitung durchführen kann. Wenn beispielsweise das Netzwerk zwei Typen von Prozessoren enthält, so kann einer dieser Typen besser dafür ausgelegt sein, eine bestimmte Verarbeitung durchzuführen, zum Beispiel abhängig von der Speicherkapazität. Der Benutzer kann dann angeben, daß diese Verarbeitung durch einen bestimmten Typ von Prozessor ausgeführt werden soll. Man sieht auch, daß die Verarbeitung und damit der Programmierer, nicht genau wissen muß, wo jener sich in dem Netzwerk befindet. Eine Nachricht kann entweder Daten oder Codes zwischen den Prozessoren transportieren, was es ermöglicht, daß Nachrichten die Form von Laufwegencodes haben.
  • In einer alternativen Ausführungsform können die Prozessoren Information, die sich auf ihre Leistungsfähigkeit bezieht, kontinuierlich untereinander weiterleiten. Dies kann als eine in Nachrichten eingebettete Information übertragen werden, die während des normalen Ablaufs der Kommunikation weitergeleitet werden, oder es kann nur während Zeitabschnitten, während welcher keine anderen Nachrichten zwischen den Prozessoren übertragen werden, ein spezieller Austausch der Information über die Leistungsfähigkeit stattfinden, so daß also ungenutzte Kommunikationszeit am effizientesten genutzt wird. Jeder Prozessor kann dann beispielsweise mit einer Nachschlagetabelle versehen werden, die den Zustand seiner nächsten Nachbarprozessoren und seinen derzeitigen Zustand angibt. Die Information über die Leistungsfähigkeit kann beispielsweise in Form eines oder weniger Bytes am Anfang oder Ende jeder gewöhnlichen Nachricht zwischen den Prozessoren erfolgen. In dieser Ausführungsform kann er, wenn er eine Anfrage für die Durchfiihrung eines Prozesses erh lt, unmittelbar bestimmen, ob er diesen Prozeß bzw. diese Verarbeitung übernimmt oder nicht oder ob er sie an einen Nachbarprozessor weiterleitet und er weiß auch an welchen. Wenn festgelegt worden ist, daß eine Anfrage zu einem Nachbarprozessor weitergeleitet wird, so wird die Anfrage übersendet und der aufnehmende Prozessor beginnt dann mit dem Entscheidungsvorgang erneut, bis zu einem Zeitpunkt, in welchem ein Prozessor feststellt, daß er am besten dafür ausgelegt ist, diese Verarbeitung selbst durchzuführen.
  • Ein Prozeß bzw. eine Verarbeitung kann sich in fünf verschiedenen Zuständen befinden. Diese sind:
  • 1. aktives Arbeiten,
  • 2. warten auf eine Eingabe,
  • 3. beenden,
  • 4. inaktiv,
  • 5. ruhend.
  • Die Zustände 1 und 2 erfordern keine Kommentierung. Der Zustand 3 tritt auf, wenn ein Prozeß bzw. eine Verarbeitung einen Befehl erhalten hat, aufzuhören. In diesem Zustand führt die Verarbeitung irgendeine Aktivität aus, die inaktiv werden muß. Dies kann beispielsweise das Verarbeiten von eiliger Post, das Übersenden von Beendigungsnach richten zu allen seiner Tochterprozesse, falls solche vorhanden sind, und allgemein das Vorbereiten für einen bequemen bzw. geeigneten Zustand einschließen, in welchem er inaktiv werden kann. Wenn der Prozeß die oberste Ebene einer Anwendung bildet, so wird er oft seinen genauen aktuellen Zustand als Nachricht in einer Festplattendatei aufbewahren. Der Zustand 4 repräsentiert einen Prozeß bzw. eine Bearbeitung, die effektiv beendet ist. In traditionellen Systemen würde dies bedeuten, daß der Prozessor in dem Speicher nicht mehr existieren würde und daß sein Speicherplatz für eine nachfolgende Benutzung freigemacht bzw. gelöscht worden ist. In dem System gemäß der vorliegenden Erfindung wird jedoch der Prozeß zwar als inaktiv markiert, wird jedoch nicht entfernt, solange nicht und bis nicht sein Speicherplatz tatsächlich benötigt wird. Wenn also ein weiterer Prozeß oder eine weitere Verarbeitung in demselben lokalen Prozessor einen inaktiven Prozeß in dem Zustand 4 aufruft, so kann er unmittelbar in den Zustand 2 übergehen. Der Zustand 5 ist derjenige Zustand eines Prozesses, in welchem er sich in dem dauerhaften Speicher, wie zum Beispiel einer Festplatte oder einem anderen Speichermedium befindet. Wenn ein Prozeß in dem Zustand 4 inaktiv ist und sein Speicherplatz für einen anderen Prozeß benötigt wird, so geht dieser Prozeß von dem Zustand 4 in den Zustand 5, d.h. er wird auf einer Festplatte gespeichert und aus dem Speicher des lokalen Prozessors entfernt. Wenn ein Prozeß, der sich in dem Zustand 5 befindet, für einen bestimmten lokalen Prozessor benötigt wird, so wird dieser Prozeß aus dem dauerhaften Speicher geladen. Dann ist möglicherweise Post für den Prozessor verfügbar, wobei diese Post aus drei Quellen, entweder aus dem Zustand des Prozesses auf einer Festplatte oder von dem eigenen Verteiler des Prozesses übernommen wird, d.h. aus der Information, die einen Teil des Prozesses bildet, oder als Post von dem Mutterprozeß, welcher bewirkt hat, daß der Prozeß an dem erstgenannten Platz geladen wurde. Dieses kann bewirken, daß der Prozeß aus dem Zustand 4 in den Zustand 2 und dann in den Zustand 1 übergeht.
  • Vorstehend ist der Begriff Uufestplatteu, eingeführt worden. Dies ist eine Vorrichtung, welche eine Sammlung von Daten objekt, Uudateienuu, hat, die in einem physikalischen Speichermedium gespeichert sind. Wie beschrieben, erhalten alle Prozesse automatisch Mailboxeigenschaften und können Post von anderen Prozessen lesen und an diese absenden, wenn sie eine bekannte Postadresse haben. Dieser Prozeß könnte beispielsweise ein Tochterprozeß, die Mutter des Prozesses, irgendeine benannte Vorratsquelle, zum Beispiel ein Festplattenlaufwerk oder eine Anzeige sein, irgendein inaktiver Prozeß, dessen vollständige Speicheradresse bekannt ist oder irgendein anderer Prozeß, der eine bekannte Mailboxadresse hat. Wenn ein aktiver Prozeß Post an einen inaktiven Prozeß übersendet, so kann die Post bewirken, daß der inaktive Prozeß als ein Tochterprozeß ausgeführt wird oder die Post kann gespeichert werden, bis der Zielprozeß bzw. der angesprochene Prozeß wieder erwacht ist. Eine Nachricht, die zwischen zwei aktiven Prozessen übermittelt wird, kann die folgende Struktur haben:
  • #Bits Beschreibung
  • 32 Länge der Nachricht in Bytes,
  • 32 Maskentyp der Nachricht - Typ der Nachricht, zum Beispiel Code, Debugging-Information, Fehlerdaten,
  • 32 Versatz der Nach richtendaten - weist auf den Beginn der Nachrichtendaten hin und erlaubt damit, daß die DTM (siehe unten) keine fest Länge haben,
  • 32 Zeiger zum nächsten Bestimmungsort (NDP) - zeigt die Adresse an, an welche eine Antwort gerichtet werden soll,
  • 64 Ursprungsmailbox,
  • 64 Mailbox des Bestimmungsortes (DTM) - Liste der Prozeß ID's,
  • 64 zweite DTM,
  • .. (weitere DTM'S)
  • ..
  • ..
  • (XXX) Nachrichtendaten.
  • Die Länge der Nachricht ist die Zahl der Bytes der gesamten Länge der Nachricht.
  • Wenn der Zeiger für den nächsten Bestimmungsort auf eine Mailbox des Bestimmungsortes "0", zeigt, so ist keine Antwort erforderlich oder wird nicht erwartet. Das Feld von Mailboxen zu weiteren Bestimmungsorten für Nachrichten hat nicht zur Folge, daß eine bestimmte Nachricht übermittelt werden soll. Die Existenz einer gültigen DTM in dem Feld zeigt an, daß eine Antwort auf eine Nachricht an diesen Prozeß gerichtet werden soll. In einem einfachen Fall einer Nachricht, die keine Antwort erfordert, enthält das DTM-Feid drei Werte, die Mailbox des Ursprungsprozesses, die Mailbox des Zielprozesses und dann 0. Bei dem Versuch, eine Nachricht an die Ziel ID 0 zu senden, bewirkt, daß die Nachricht zu dem Postmanager des Systems geleitet wird. Eine Nachricht, die eine Antwort an den Absender erfordert, hat ein DTM-Feid, das aus vier Werten besteht: Mailbox des Ursprunges, Mailbox des Bestimmungsortes, Mailbox des Ursprunges und 0.
  • Eine Reihe von Prozessen, die einen Datenstrom handhaben, empfängt ein DTM-Feld, welches hat (Anzahl der Prozesse in der Reihe) + zwei Elemente, einschließlich der Mailbox des Ursprunges plus den endgültigen Bestimmungsort als einer der Prozesse in der Reihe.
  • "Gegabelte" bzw. verzweigte Reihenschemata sind ebenfalls möglich, erfordern jedoch, daß ein Prozeß die Gabelung bzw. Verzweigung aktiv erzeugt, wobei ein weiterer Prozeß möglicherweise die Verzweigung später aktiv wieder vereint. Einfache, lineare Reihen benötigen nur wiederverwendbare Werkzeuggegenstände, die in ähnlicher Weise arbeiten, wie Unix-Filter (wie sie den Fachleuten auf diesem Gebiet bekannt sind), können jedoch parallel laufen und können dauerhaft in dem Netzwerk vorhanden sein.
  • Verzweigte und wieder verbundene Nachrichten werden beim Programmieren automatisch gehandhabt, wobei das Gerüst bzw. die Schale mit einfachen Eingabe-Ausgabe-Filterwerk zeugen verwendet wird. Wenn er sich in dem Speicherplatz eines Bestimmungsortprozesses befindet, so hat der Nachrichtenaufba, zwei weitere Elemente, die vor dem Nachrichtenabschnitt hinzugefügt sind:
  • #Bits Beschreibung
  • 32 Zeiger auf Verknüpfungsglied nach vorn,
  • 32 Zeiger auf Verknüpfungsglied nach hinten,
  • 32 Länge der Nachrichten in Bytes,
  • 32 Maskentyp der Nachricht, etc.
  • Die Verknüpfungsglieder nach vorn und nach hinten zeigen auf andere Nachrichten, sofern solche vorhanden sind, welche die verknüpfte Liste von Nachrichten für die Eingangsmailbox eines Prozesses bilden.
  • Die Post wird von einem Prozessor in zwei Stufen gelesen, zunächst die Größe der Nachricht und dann wird der Rest der Nachricht in einen Puffer gelesen, der für die Nachricht dynamisch zugeordnet wird. Dieser Mechanismus erlaubt es, daß eine Nachricht um einen ausgefallenen Knotenpunkt oder einen Kern herum umgelenkt wird, der aus irgendeinem Grund nicht in der Lage ist, eine Nachricht zu empfangen.
  • Nachrichten können auf mehr als einen Bestimmungsort verteilt werden, mit Hilfe eines Postgruppenverteilers. Jeder Prozeß, der weiß, daß er zu einer Gruppe von Prozessen gehört, kann eine Nachricht an einen Postgruppenverteiler senden und seine Gruppenzugehörigkeit erklären. Alternativ kann ein Prozeß eine Nachricht an den Postgruppenverteiler senden, welche alle seine Mitgliederprozesse definiert. Sobald der Postgruppenverteiler informiert ist, informiert er alle Mitgliederprozesse von der Mailbox ID, die für diese Gruppe verwendet werden soll. Post, die auf alle Mitglieder der Gruppe verteilt werden soll, wird an die Gruppenmailbox gesendet und Kopien werden an alle Mitglieder gesendet mit Ausnahme des Ursprunges bzw. Ausgangspunktes. Ein einzelner Prozeß kann zu mehr als einer Mailgruppe gehören und es können auch Untergruppen vorgesehen werden. Private Nachrichten können ebenso zwischen Prozessen in einer Gruppe ausgetauscht werden, ohne daß alle anderen Prozesse dieses mitbekommen.
  • Die folgenden Typen von Werkzeugen können verwendet werden: dauerhafte Werkzeuge, welche den Kern des Betriebssystemes bilden. Sie werden aktiviert durch die Boot-Sequenz und können nicht außer Betrieb gesetzt werden. Jeder Prozessor hat eine Kopie von jedem verfügbaren dauerhaften Werkzeug.
  • Semi-permanente Werkzeuge werden für jeden Prozessor beim Boot-Up-Prozeß (Startvorgang) aktiviert. Der Benutzer kann auswählen, welche semi-permanenten Werkzeuge aktiviert werden können. Wenn sie aktiviert sind, können sie nicht deaktiviert werden. Bibliothekswerkzeuge werden je nach Bedarf aus einer namentlich gekennzeichneten Werkzeugbibliothek verwendet. Wenn sie aktiviert sind, so bleiben sie in dem Speicher jedes Prozessors zwischengespeichert, bei welchem eine Anwendung läuft, die sie aufruft, bis Speicherbegrenzungen ihre Deaktivierung erfordern.
  • Anwendungswerkzeuge sind entweder virtuelle oder nicht-virtuelle Werkzeuge. Virtuelle Werkzeuge sind nicht notwendigerweise aktiv, wenn eine Anwendung läuft, werden jedoch nach Bedarf aktiviert, wenn ein Prozeß den Versuch macht, sie aufzurufen. Wenn das virtuelle Werkzeug nicht läuft, so bleibt es zwischengespeichert, solange nicht der Speicherplatz anderweitig benötigt wird. Es ist also ein automatisches "Überlagern" für Werkzeuge bei großen Anwendungen verfügbar, die in den verfügbaren Speicher nicht hineinpassen. Nicht-virtuelle Werkzeuge werden mit einer Anwendung und an einer aktiven Stelle geladen, bevor sie ausgeführt wird. Sie sind also immer verfügbar und befinden sich während der Ausführung im Speicher.
  • Jeder Prozessor oder jede Gruppe von Prozessoren in dem Netzwerk weist ein dauerhaftes Werkzeug auf, welches als der dynamische Verbinder und Übersetzer "DBAT" bezeichnet wird. Der DBAT hat den natürlichen Code des Prozessors und damit ist eine spezielle Version eines DBAT für jeden unterschiedlichen, unterstützten Prozessor erforderlich. DBAT ist in der Lage, den virtuellen Prozeßcode in den dem Zielprozessor eigenen Code umzuwandeln. Jeder DBAT verwendet eine Liste von Werkzeugen. Die Liste ist eine permanente und externe Werkzeugliste (PETL), die Information über alle permanenten und semi-permanenten Werkzeuge enthält (diese Liste ist für jeden Knoten identisch), sowie aller externen Werkzeuge, wie zum Beispiel Bibliotheken, die von dem Knoten gerade aufgerufen werden, oder zuvor aufgerufen wurden und immer noch aktiv sind, oder inaktiv und immer noch verfügbar für jeden individuellen Knoten. Beim Empfang eines Befehls, einen Prozeß bzw. eine Verarbeitung auszuführen, wird der Prozeß in den lokalen Speicherbereich des Prozessors eingelesen. Mit dem Begriff Prozessor ist auch mehr als ein Prozessor gemeint, der in einem Netzwerk mit einem DBAT angeschlossen ist. Es wird ein Durchlauf durch den Prozeß gemacht. Bei diesem Durchlauf fügt der DBAT dem PETL Werkzeuge hinzu.
  • Externe Werkzeuge werden auffolgende Weise dem PETL hinzugefügt; wenn das Werkzeug sich schon in dem PETL befindet, so wird es als verfügbar angenommen, oder, wenn das Werkzeug in dem PETL nicht vorhanden ist, so wird es eingelesen und mit der Liste der verfügbaren Werkzeuge verknüpft. Wenn dieses neu installierte Werkzeug den Aufruf anderer Werkzeuge enthält, so handhabt der DBAT diesen rekursiv in derselben Art und Weise. Der DBAT fährt fort, bis alle externen Werkzeuge verfügbar sind.
  • Der DBAT "übersetzt" den VP-Code des Prozesses und der neu installierten Werkzeuge für den Zielprozessor und setzt und korrigiert Zeigerinformationen auf Werkzeuge innerhalb des Codes. Die nicht aufgelösten virtuellen Werkzeugaufrufe werden umgewandelt zu einer Falle (trap) für die Handhabung des virtuellen Werkzeuges innerhalb des DBAT, wobei ein Parameter auf den vollen Pfadnamen des Werkzeug es hinweist. Nach der Vervollständigung läßt der DBAT den Prozeß ausführen.
  • Da jedes externe Werkzeug von einem eingehenden Prozeß aufgerufen wird, so wird sein Benutzungskennzeichen schrittweise heraufgesetzt, so daß das Werkzeug einen Wert für die Anzahl von Prozessen hat, die es aktuell verwenden. Jedesmal, wenn ein Prozeß deaktiviert wird, wird das Benutzungskennzeichen des Werkzeuges herabgesetzt. Wenn kein Prozeß ein Werkzeug verwendet, so hat das Werkzeug einen Benutzungswert von Null ünd kann durch Entfernen aus dem PETL deaktiviert werden und sein Speicher kann freigegeben werden. Dies geschieht nur, wenn eine Aufsammlung von Speicherplatz von unerwünschtem Speicherinhalt auftritt, was es dem System ermöglicht, die Werkzeuge im Cache-Speicher zu halten. Semi-permanente und permanente Werkzeuge werden von dem DBAT beim Starten bzw. "BOOTEN" mit einem anfänglichen Benutzungswert von 1 installiert, wodurch sichergestellt wird, daß sie nicht deaktiviert werden können.
  • Virtuelle Werkzeuge werden von einem Prozeß während des Ablaufs aufgerufen. Ein virtuelles Werkzeug wird mit einem Zeiger auf Pfad und Namen des Werkzeuges plus der normalen Parameter des Werkzeuges aufgerufen.
  • Die Handhabungseinrichtung für virtuelle Werkzeuge in dem DBAT überprüft den PETL, um festzustellen, ob das Werkzeug schon verfligbar ist. Wenn dies der Fall ist, so wird das Werkzeug ebenso wie ein normales externes Werkzeug verwendet. Wenn es nicht vorhanden ist, so aktiviert der DBAT das Werkzeug (derselbe Vorgang wie für irgendein, anderes externes Werkzeug, welches währen des Startens des Prozesses aktiviert wird) und leitet es dann an die Werkzeugbezugnahme bzw. den Werkzeugaufruf. Dies ist vollständig transparent mit der Ausnahme, daß Speicherbegrenzungen einen Fehler verursachen können, wenn das Aufsammeln von unerwünschtem Speicherinhalt nicht genug Speicher für das ankommende Werkzeug findet. Um diesen Speicher sicherzustellen, können virtuelle Memorytechniken verwendet werden.
  • Die Figuren 3 und 4 zeigen schematisch ein System im Betrieb. Drei Prozessoren (oder Prozessorfelder) 4 sind dargestellt, welche schematisch mit einem zentralen "virtuellen" Prozessor VP verknüpft sind. Es sei angenommen, daß jeder Prozessor einen Gesamtspeicher entweder auf oder außerhalb des Chips hat. Beim Booten bzw. Starten lädt jeder Prozessor den DBAT und alle anderen dauerhaften (P&sub1; ... Pn) und semi-permanenten Werkzeuge (SP&sub1; ... SPm) Dieser Zustand ist in Figur 3 dargestellt. Alle Prozessoren enthalten dieselbe Gruppe permanenter und semi-permanenter Werkzeuge.
  • Figur 4 zeigt einen späteren Zustand. Eine Prozessor hat die Anweisung erhalten, einen Prozeß auszuführen, der Bibliothekswerkzeuge L&sub1;, L&sub2;, L&sub3; und L&sub4; verwendet. Er hat diese daher eingelesen. Dieser Prozessor kann nun seinerseits verschiedene virtuelle oder andere Werkzeuge nach Bedarf einlesen, um einen bestimmten Prozeß auszuführen. Ein weiterer Prozessor hat Werkzeuge L&sub5;, L&sub6;, L&sub7; und L&sub8; eingelesen. Der letzte Prozessor führt derzeit keinen Prozeß durch. Zwei oder mehr Prozessoren können selbstverständlich dieselbe Bibliotheksfunktion benutzen, indem sie eine Kopie derselben in den lokalen Speicher einlesen. Wenn ein Prozeß zu Ende ist, 50 bleiben die Bibliothekswerkzeuge in dem jeweiligen lokalen Speichern gespeichert, bis sie wieder benötigt werden, oder bis zur Aufsammlung von nicht benätigtem Speicherinhalt. Selbstverständlich können mehrere Vorgänge gleichzeitig auf irgendeinem Prozessornetzwerk ablaufen, wie es oben beschrieben wurde.
  • Ebenso wie das Handhaben der Übersetzung des VP-Codes in den dem Prozessor eigenen Code kann der DBAT in einigen Ausführungsformen die dem Prozessor eigene Codierung erkennen. Die Verwendung der dem Prozessor eigenen Codierung verhindert die Übertrag barkeit des Codes, ist jedoch als eine Strategie für hardwarespezifische Werkzeuge (üblicherweise Treiber) akzeptabel.
  • Es versteht sich, daß ein Prozeß oder Werkzeug entweder in dem VP-Code oder in dem natürlichen bzw. dem Prozessor eigenen Code codiert werden kann und daß Werkzeuge vom gemischten Typ gemeinsam verwendet werden können. Jedoch können der VP-Code und der dem Prozessor eigene Code üblicherweise nicht innerhalb eines einzigen Werkzeuges gemischt werden. Eine Einrichtung in dem DBAT akzeptiert eine Eingabe im VP-Code und gibt für den späteren Lauf im eigenen Code des Prozessors aus. Dies ermöglicht es, daß eine zeitkritische Anwendung vollständig in der VP-"Quelle" transportierbar ist, jedoch vollständig für ein Targetsystem übersetzt bzw. "kompiliert", wird. Um dabei zu helfen, ein unbegrenztes Kopieren von Anwendungen zu verhindern, können die Anwendungen die Verwendung der Fähigkeit der im eigenen Code codierten Werkzeuge beibehalten, wobei die ursprüngliche VP-Codierung für die Erzeugung unterschiedlicher Produkte auf der Basis spezieller Prozessoren zurückbehalten wird. Die Benutzung dieses Merkmals verhindert jedoch, daß Anwendungen auf parallelen Systemen mit gemischten Prozessortypen laufen. Wenn ein außen aufgerufenes Werkzeug nicht verfügbar ist, so kann ein unter der Wirkung des DBAT mit den bekannten Einzelheiten des fehlenden Werkzeuges ein Fehler angezeigt werden. Der Benutzer kann dann entscheiden, ob er das fehlende Werkzeug zeitweise oder dauerhaft durch ein anderes ersetzt. Ein Werkzeugverlust kann auftreten aufgrund eines fehlenden oder unterbrochenen Zugangspfades, oder wenn beispielsweise ein herausnehmbares Medium, wie eine Diskette, gerade nicht verfügbar ist. Objekte können auf das Netzwerk und weg von diesem bewegt werden, jedoch beinhaltet dies oft das Entfernen der gesamten Anwendung, aller der von ihr abhängigen Prozesse etc.
  • Der oben beschriebene, virtuelle Prozessor ist ein imaginärer Prozessor, der verwendet wird, um einen tragbaren bzw. übertragbaren, "ausführbaren", Code zu konstruieren. Wie oben beschrieben, erfordert die Ausgabe der VP-kompatiblen Assembler und Kompiler nicht das Verknüpfen aufgrund des Systems der außerordentlich späten Verbindung, welches den DBAT verwendet.
  • Etwas "Ausführbares" in dem VP-Code wird durch den DBAT zu seinem zugehörigen bzw. gastgebenden Zielprozessor zum Ladezeitpunkt verarbeitet, bevor die Steuerung an den Code weitergeleitet ist. Der VR hat ein 18 x 32 bit Register, welches eingestellt ist mit einem angenommenen 32 bit linearen Adressraum, jedoch nicht auf 16 begrenzt ist. Die Register Nummer 0 - 15 dienen vollständig einem allgemeinen Zweck. Register, wie zum Beispiel ein IP, Segmentzeiger, Flags etc. werden angenommen, d.h. sie werden von dem Zielprozessor als notwendig verwirklicht. Der VP-Code ist so ausgestaltet, daß er für einen modernen Zielprozessor extrem einfach zu übersetzen ist, unabhängig von der Betriebsphilosophie.
  • Wortprozessoren, die keine 32 bit Prozessoren sind, können in einfacher Weise gehandhabt werden. Die eingestellte Benutzung des VP-Registers wird in dem endgültig ausführbaren Zielcode nicht entfernt. Die Registereinstellung wird oft in einem Speicher verwirklicht (Geistregister genannt), wobei das verwendete und eingestellte Zielregister nach Bedarf benutzt wird, um den auf den Speicherregistern eingestellten VP-Betrieb zu verwirklichen. Diese Pseudointerpretation der VP-Codierung durch einen tatsächlichen bzw. natürlichen Prozessor mag für einige Prozessoren einen kleinen Nachteil hinsichtlich der Geschwindigkeit haben, hat jedoch insgesamt viele Vorteile. Prozessoren mit einem Cache-Speicher oder einem schnellen Speicher (wie zum Beispiel der Transputer) können tatsächlich eine Steigerung der Leistungsfähigkeit zeigen, insbesondere, wenn die Einstellung des natürlichen Registers sehr klein ist, wie zum Beispiel bei einem Transputer. Die Umschaltzeiten zwischen Aufgaben sind bei der Verwendung dieses Schemas außerordentlich schnell, da der Zustand des natürlichen Prozessors ignoriert werden kann mit der Ausnahme, daß ein Schreiben in den Speicher für die Aufbewahrung der Position einer Registereinstellung für eine nach außen gehende Aufgabe und ein Lesen des Speichers stattfindet, um die Registerposition der wieder hereinkommenden Aufgabe wiederherzustellen. Die Transputer-Architektur macht selbst dieses überflüssig. Einige Ausführungsformen können eine einfache Version des DBAT haben, die die VP-Codierung nicht in die natürliche Codierung umwandelt. Diese verwenden VP-Makros, die durch einen Makroassembler des Zielprozessors in ausführbare Anweisungen des Zielprozessors umgewandelt bzw. kompiliert werden. Bestimmte Bauteile bzw. Konstruktionen, wie zum Beispiel die Bezugnahme auf Werkzeuge, Objekte, etc. werden für das Verarbeiten und Reparieren durch den DBAT zurückgehalten. Industrielle und standardmäßige Makroassembler für das Ziel (den Zielprozessor) sind für diese Umwandlung in perfekter Weise geeignet.
  • Die Wirksamkeit des auf einem Zielprozessor schließlich laufenden Codes hängt von den beiden Stufen der Kompilierung und Assemblierung durch den VP-Kompiler und den DBAT ab. Die Fähigkeit eines Kompilers, den VP-Ausgang auf seine effizienteste Form zu beschränken, wird nicht behindert, es kann jedoch nur wenig oder keine Gucklochoptimierung stattfinden. Der DBAT führt Gucklochoptimierungen für den endgültig hergestellten Code durch, in erster Linie, indem Bewegungen des redundanten natürlichen Registers/Geistregisters entfernt werden, die durch einige Folgen von VP-Codes erzeugt werden können. Auf Transputern können die VP-Geistregister zu einer gleichen oder besseren Funktionsfähigkeit als die Benutzung der traditionellen Register führen. Geistregister werden in dem On-Chip RAM auf Transputern angeordnet, wodurch effektiv ein Datencache-Speicher für alle laufenden Prozesse erzeugt wird. Auf einem Inmos T800 Transputer können bis zu 48 Prozesse die On-Chip-Speicher der Geistregister verwenden. Weitere Prozesse erfordern Platz auf einem Speicher außerhalb des Chips.
  • Das beschriebene System kann ein graphisches Benutzerinterface für die Betriebsweise unter der Verwendung von Fenstern, von Mäusen und dergleichen aufweisen. Fenster können bezüglich einer Anzeigeeinrichtung verschoben werden und es kann damit gearbeitet werdenu oder ihr Inhalt wird bearbeitet mit Hilfe einer Maus, einer Tastatur oder anderen Eingabeeinrichtungen.

Claims (18)

1. Datenverarbeitungssystem mit:
einer Mehrzahl von Codeabschnitten, und
einem Datenprozessor, welcher aufweist:
Verarbeitungseinrichtungen (1), und
Einrichtungen (DBAT) für das Verbinden einer ausgewählten Mehrzahl der Codeabschnitte zu einer ausführbaren Anweisung, die von der Verarbeitungseinrichtung ausgeführt wird, wobei die ausgewählten Codeabschnitte zu einer vollständigen, ausführbaren Anweisung nur zum Zeitpunkt des Ladens oder Ausführens der Anweisung verbunden sind,
dadurch gekennzeichnet, daß
die Codeabschnitte für einen virtuellen Prozessor geschrieben sind, der seine eigene, vordefinierte Sprache hat,
wobei die Verarbeitungseinrichtung des Datenprozessors so betreibbar ist, daß sie einen Code in einer Sprache versteht und ausführt, die eine andere ist als die Codesprache des virtuellen Prozessors, und wobei
der Datenprozessor (4) Einrichtungen (DBAT) aufweist für das Übersetzen der Codesegmente aus der Codesprache des virtuellen Prozessors in die Codesprache, die von der Verarbeitungseinrichtung verstanden werden kann.
2. System nach Anspruch 1, wobei:
der Datenprozessor einen lokalen Speicher für das Speichern der übersetzten Codeabschnitte hat,
wobei die Verbindungseinrichtung (DBAT) aufweist:
Einrichtungen für das Empfangen einer Nachricht, welche das Ausführen einer Anweisung befiehlt,
Einrichtungen zum Bestimmen irgendeines Codeabschnittes, welcher für die Ausführung der befohlenen Anweisung erforderlich ist und welcher nicht in dem lokalen Speicher gespeichert ist, und
Einrichtungen zum Wiedergewinnen irgendeines solchen bestimmten Codebschnittes, und wobei
die Übersetzungseinrichtung (DBAT) so betreibbar ist, daß sie den wiedergewonnenen Codeabschn itt übe rsetzt, wobei der "bersetzte, wiedergewonnene Codeabschnitt in dem lokalen Speicher gespeichert wird.
3. System nach Anspruch 2, wobei die Bestimmungseinrichtung ein Benutzungsmerkzeichen für jeden übersetzten Codeabschnitt verwendet, wobei das Benutzungsmerkzeichen schrittweise weitergesetzt wird, wenn durch eine Anweisung auf den Codeabschnitt zugegriffen wird, und schrittweise zurückgesetzt wird, wenn der Zugriff auf den Codeabschnitt durch eine Anweisung beendet wird, und wobei die übersetzten Codeabschnitte jeweils gegen Löschen aus dem lokalen Speicher gesichert werden, wenn das jeweilige Benutzungsmerkzeichen nicht den Benutzungswert Null des betreffenden, übersetzten Codeabschnittes anzeigt.
4. System nach einem der vorstehenden Ansprüche, wobei die Mehrzahl von Codeabschnitten einen Kern (1) von Verarbeitungsgegenständen sowie eine Gruppe von Mitte Igegenständen (2) (tools) hat, die jeweils durch einen oder mehrere Verarbeitungsgegenstände aufgerufen werden können, um auf ausgewählte Daten zu wirken.
5. System nach einem der vorstehenden Ansprüche, wobei der Datenprozessor einer von einer Mehrzahl derartiger Datenprozessoren des Systems ist.
6. System nach Anspruch 5, wobei:
die Datenprozessoren von unterschiedlicher Art sind und wobei die jeweiligen Verarbeitungseinrichtungen so betreibbar sind, daß sie verschiedene Sprachen verstehen und ausführen,
die Codesprache für den virtuellen Prozessor für das System üblich ist, und die Übersetzungseinrichtung für jeden Datenprozessor so betreibbar ist, daß sie die Codeabschnitte aus der üblichen Codesprache des virtuellen Prozessors in die Codesprache der jeweiligen Verarbeitungseinrichtung übersetzt.
7. System nach Anspruch 5 oder 6, wobei die Datenprozessoren in Parallelverarbeitung betreibbar sind, so daß jeder der Codeabschnitte in einem lokalen Speicher einer Mehrzahl der Datenprozessoren im wesentlichen gleichzeitig gespeichert und von diesen verwendet werden kann, und wobei zwei oder mehrere Anweisungen parallel ausgeführt werden können.
8. System nach einem der Ansprüche 5 bis 7, wobei die Datenprozessoren wie Knoten in einem Netzwerk miteinander verbunden sind.
9. System nach Anspruch 8, wobei das Netzwerk so angeordnet ist, daß es eine Verarbeitungszuordnung ausführt, bei welcher der Datenprozessor an einem ersten der Knoten nach dem Empfang einer Instruktion, eine Verarbeitung durchzuführen, entscheidet, ob er oder ein Datenprozessor an einem der Nachbarknoten zu diesem Zeitpunkt besser in der Lage ist, die Verarbeitung durchzuführen, und gemäß dieser Entscheidung entweder diese Verarbeitung selbst durchführt oder die Anweisung für die Durchführung der Verarbeitung zu dem benachbarten Prozessor weitergibt.
10. System nach Anspruch 9, wobei:
der erste Prozessor eine Leistungsbewertung für sich selbst und Leistungsbewertungen für die benachbarten Prozessoren bezüglich der Durchführung der Verarbeitung bestimmt,
der erste Prozessor die Leistungsbewertungen vergleicht, um festzulegen, welcher der Prozessoren die höchste Leistungsbewertung hat, und
der erste Prozessor die Verarbeitung demjenigen der Nachbarprozessoren zuordnet, welcher die höchste Leistungsbewertung hat, oder aber selbst die Verarbeitung durchführt, wenn der erste Prozessor die höchste Leistungsbewertung hat.
11. System nach Anspruch 10, wobei dann, wenn der erste Prozessor und einer oder mehrere der benachbarten Prozessoren gleiche höchste Leistungsbewertungen haben, der erste Prozessor die Verarbeitung selbst durchführt.
12. System nach Anspruch 10 oder 11, wobei die Leistungsbewertung jedes Prozessors aus der Anzahl von Verarbeitungen bestimmt wird, die gerade auf dem Prozessor laufen.
13. System nach Anspruch 12, wobei die Leistungsbewertung für jeden Prozessor aus der effektiven Verarbeitungsgeschwindigkeit von Betriebsvorgängen pro Sekunde des betreffenden Prozessors, geteilt durch die Anzahl von Verarbeitungen, welche auf dem Prozessor laufen, und multipliziert mit einer Funktion der Kommunikationsgeschwindigkeit außerhalb des Chips bestimmt wird, die für diesen Prozessor verfügbar ist.
14. System nach Anspruch 10 oder 11, wobei die Leistungsbewertung jedes Prozessors aus dem verfügbaren Speicherplatz dieses Prozessor bestimmt wird.
15. System nach einem der Ansprüche 9 bis 14, wobei das Netzwerk weiterhin so angeordnet ist, daß es die Zuordnung der Verarbeitung zumindest einmal wiederholt, und zwar bei demjenigen Prozessor, welchem die Anweisung von dem Prozessor, welcher von dem Prozessor, der die Verarbeitung zuerst erhalten hat, zugeordnet wurde, und welcher dann der Vuerstet, Prozessor wurde.
16. System nach einem der Ansprüche 9 bis 15, wobei für die Zuordnung der Verarbeitung zu dem Prozessor an einem der Nachbarknoten der erste Prozessor dem Nachbarprozessor Datenanweisungen gibt, welche die Anzahl der erforderlichen Bytes, den Namen der Verarbeitung und die Adresse, unter welcher die Verarbeitung gerade gespeichert ist, angeben.
17. System nach einem der Ansprüche 9 bis 16, wobei Informationen, welche sich auf die Fähigkeit der Prozessoren an den Knote Verarbeitungen durchzuführen beziehen, anderen Nachrichten, die zwischen diesen Prozessoren ausgetauscht werden, hinzugefügt werden.
18. System nach einem der Ansprüche 9 bis 16, wobei Informationen, welche sich auf die Fähigkeit der Prozessoren an den Knoten beziehen, die Verarbeitungen durchzuführen, zwischen Paaren von Prozessoren auf benachbarten Knoten weitergegeben wird, wenn keine andere Information zwischen diesen Prozessoren weitergegeben wird.
DE69309704T 1992-10-30 1993-07-01 Datenverarbeitungssystem und betriebssystem Expired - Fee Related DE69309704T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB9222799A GB2272085A (en) 1992-10-30 1992-10-30 Data processing system and operating system.
PCT/GB1993/001382 WO1994010628A1 (en) 1992-10-30 1993-07-01 Data processing system and operating system

Publications (2)

Publication Number Publication Date
DE69309704D1 DE69309704D1 (de) 1997-05-15
DE69309704T2 true DE69309704T2 (de) 1997-10-30

Family

ID=10724294

Family Applications (3)

Application Number Title Priority Date Filing Date
DE69309704T Expired - Fee Related DE69309704T2 (de) 1992-10-30 1993-07-01 Datenverarbeitungssystem und betriebssystem
DE69327739T Expired - Fee Related DE69327739T2 (de) 1992-10-30 1993-07-01 Datenverarbeitung und Betriebssystem mit dynamischer Bindung über zwei oder mehrere Prozessoren
DE69322887T Expired - Fee Related DE69322887T2 (de) 1992-10-30 1993-07-01 Datenverarbeitung und Betriebssystem mit dynamischer Belastungsteilung in einem Netzwerk von verknüpften Prozessoren

Family Applications After (2)

Application Number Title Priority Date Filing Date
DE69327739T Expired - Fee Related DE69327739T2 (de) 1992-10-30 1993-07-01 Datenverarbeitung und Betriebssystem mit dynamischer Bindung über zwei oder mehrere Prozessoren
DE69322887T Expired - Fee Related DE69322887T2 (de) 1992-10-30 1993-07-01 Datenverarbeitung und Betriebssystem mit dynamischer Belastungsteilung in einem Netzwerk von verknüpften Prozessoren

Country Status (11)

Country Link
US (1) US5930511A (de)
EP (3) EP0756232B1 (de)
JP (2) JP3722156B2 (de)
KR (3) KR100384085B1 (de)
AU (3) AU679686B2 (de)
CA (2) CA2146672C (de)
DE (3) DE69309704T2 (de)
GB (4) GB2272085A (de)
HK (3) HK1005475A1 (de)
SG (3) SG52857A1 (de)
WO (1) WO1994010628A1 (de)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7035906B1 (en) 1996-11-29 2006-04-25 Ellis Iii Frampton E Global network computers
US7926097B2 (en) * 1996-11-29 2011-04-12 Ellis Iii Frampton E Computer or microchip protected from the internet by internal hardware
US6725250B1 (en) * 1996-11-29 2004-04-20 Ellis, Iii Frampton E. Global network computers
US6167428A (en) * 1996-11-29 2000-12-26 Ellis; Frampton E. Personal computer microprocessor firewalls for internet distributed processing
US7024449B1 (en) * 1996-11-29 2006-04-04 Ellis Iii Frampton E Global network computers
US7805756B2 (en) 1996-11-29 2010-09-28 Frampton E Ellis Microchips with inner firewalls, faraday cages, and/or photovoltaic cells
US7634529B2 (en) 1996-11-29 2009-12-15 Ellis Iii Frampton E Personal and server computers having microchips with multiple processing units and internal firewalls
US20050180095A1 (en) * 1996-11-29 2005-08-18 Ellis Frampton E. Global network computers
US8312529B2 (en) 1996-11-29 2012-11-13 Ellis Frampton E Global network computers
US8225003B2 (en) 1996-11-29 2012-07-17 Ellis Iii Frampton E Computers and microchips with a portion protected by an internal hardware firewall
US6732141B2 (en) 1996-11-29 2004-05-04 Frampton Erroll Ellis Commercial distributed processing by personal computers over the internet
US7506020B2 (en) 1996-11-29 2009-03-17 Frampton E Ellis Global network computers
GB2337434B (en) 1997-03-14 2002-01-30 Ian Charles Ogilvy Method and apparatus for controlling communications
US5925102A (en) * 1997-03-28 1999-07-20 International Business Machines Corporation Managing processor resources in a multisystem environment in order to provide smooth real-time data streams, while enabling other types of applications to be processed concurrently
US6134216A (en) * 1997-10-29 2000-10-17 Lucent Technologies Inc. Integrated overload control for overload control for distributed real time systems
WO2000029949A2 (en) * 1998-11-18 2000-05-25 The Johns Hopkins University Enhanced virtual executor
US6728961B1 (en) * 1999-03-31 2004-04-27 International Business Machines Corporation Method and system for dynamically load balancing a process over a plurality of peer machines
US7043725B1 (en) * 1999-07-09 2006-05-09 Hewlett-Packard Development Company, L.P. Two tier arrangement for threads support in a virtual machine
GB9920676D0 (en) * 1999-09-01 1999-11-03 Tao Group Ltd Translating and executing object-oriented computer programs
US6532538B1 (en) * 2000-02-17 2003-03-11 International Business Machines Corporation Method and system for supporting multiple operating systems on the same disk running on different computers at the same time
GB0011974D0 (en) * 2000-05-19 2000-07-05 Smith Neale B rocessor with load balancing
US20040003266A1 (en) * 2000-09-22 2004-01-01 Patchlink Corporation Non-invasive automatic offsite patch fingerprinting and updating system and method
EP1327191B1 (de) * 2000-09-22 2013-10-23 Lumension Security, Inc. Eingriffsfreies automatisiertes offsite-patch-fingerabdruck- und aktualisierungssystem und verfahren
JP4123712B2 (ja) * 2000-11-27 2008-07-23 株式会社日立製作所 通信処理方法ならびに通信処理プログラムが記録される記録媒体
US7398216B2 (en) * 2000-12-12 2008-07-08 Lockheed Martin Corporation Network dynamic service availability
US6922832B2 (en) * 2000-12-12 2005-07-26 Lockheed Martin Corporation Execution of dynamic services in a flexible architecture for e-commerce
JP2005031771A (ja) * 2003-07-08 2005-02-03 Hitachi Ltd ジョブスケジューリング管理方法及びシステム並びにプログラム
US7032053B2 (en) * 2003-08-14 2006-04-18 International Business Machines Corporation System and method for loading, executing, and adapting a portable running operation system from a removable module to multiple computer systems
US20060095898A1 (en) * 2004-10-28 2006-05-04 International Business Machines Corporation Method for integrating multiple object files from heterogeneous architectures into a set of files
US7554909B2 (en) * 2005-03-21 2009-06-30 Intel Corporation Dynamic service management for multicore processors
JP2008536236A (ja) * 2005-04-13 2008-09-04 テレフオンアクチーボラゲット エル エム エリクソン(パブル) コンピュータシステムにおけるデータ値の整合性(コヒーレンス:coherence)
JP4781089B2 (ja) * 2005-11-15 2011-09-28 株式会社ソニー・コンピュータエンタテインメント タスク割り当て方法およびタスク割り当て装置
WO2007074797A1 (ja) * 2005-12-28 2007-07-05 International Business Machines Corporation クライアント・サーバ・システムにおける負荷分散
US8125796B2 (en) 2007-11-21 2012-02-28 Frampton E. Ellis Devices with faraday cages and internal flexibility sipes
US8184335B2 (en) * 2008-03-25 2012-05-22 Xerox Corporation Method for ad-hoc parallel processing in a distributed environment
US8224955B2 (en) 2009-05-07 2012-07-17 International Business Machines Corporation Ensuring affinity at all affinity domains by folding at each affinity level possible for a partition spanning multiple nodes
US8819686B2 (en) * 2009-07-23 2014-08-26 Empire Technology Development Llc Scheduling threads on different processor cores based on memory temperature
US8924975B2 (en) * 2009-07-23 2014-12-30 Empire Technology Development Llc Core selection for applications running on multiprocessor systems based on core and application characteristics
US8429735B2 (en) 2010-01-26 2013-04-23 Frampton E. Ellis Method of using one or more secure private networks to actively configure the hardware of a computer or microchip
US9268611B2 (en) 2010-09-25 2016-02-23 Intel Corporation Application scheduling in heterogeneous multiprocessor computing platform based on a ratio of predicted performance of processor cores
EP2662771A4 (de) * 2011-01-07 2014-05-21 Fujitsu Ltd Planungsverfahren und mehrkernprozessorsystem
US9852000B2 (en) * 2013-08-27 2017-12-26 Empire Technology Development Llc Consolidating operations associated with a plurality of host devices
US9368026B1 (en) 2015-05-26 2016-06-14 Google Inc. Fallback requests for autonomous vehicles
US10901415B1 (en) 2015-05-26 2021-01-26 Waymo Llc Non-passenger requests for autonomous vehicles
US10454872B2 (en) * 2015-06-22 2019-10-22 Microsoft Technology Licensing, Llc Group email management
US10332320B2 (en) 2017-04-17 2019-06-25 Intel Corporation Autonomous vehicle advanced sensing and response
EP3462313A1 (de) * 2017-09-27 2019-04-03 Siemens Aktiengesellschaft Verfahren und verteiltes datenbanksystem zum rechnergestützten ausführen eines programmcodes
US10725834B2 (en) 2017-11-30 2020-07-28 International Business Machines Corporation Job scheduling based on node and application characteristics

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2016283A (en) * 1982-10-15 1984-04-19 General Electric Company, Plc, The Plural data processing units
JPH0778785B2 (ja) * 1986-03-29 1995-08-23 株式会社東芝 プロセッサ選択方法
JPH01263734A (ja) * 1988-04-08 1989-10-20 Internatl Business Mach Corp <Ibm> マルチ・タスク環境における動的リンク識別子供給方法
DE4007998A1 (de) * 1989-03-13 1990-09-20 Hitachi Ltd Prozess-planungsverfahren und mehrfach-rechner
CA2025160A1 (en) * 1989-09-28 1991-03-29 John W. White Portable and dynamic distributed applications architecture
GB2242293A (en) * 1990-01-05 1991-09-25 Apple Computer Apparatus and method for dynamic linking of computer software components
US5276881A (en) * 1990-06-25 1994-01-04 Hewlett-Packard Company ANDF producer using the HPcode-Plus compiler intermediate language
JP3203701B2 (ja) * 1990-11-01 2001-08-27 インターナショナル・ビジネス・マシーンズ・コーポレーション コードセグメントのリンク方法とそのシステム及びコードセグメントのダイナミックリンク方法
US5297285A (en) * 1991-07-23 1994-03-22 Telefonaktiebolaget L M Ericsson System for dynamically linking modular portions of computer software
US5649204A (en) * 1991-08-22 1997-07-15 Rec Software, Inc. Method and apparatus for consolidating software module linkage information used for starting a multi-module program
US5301326A (en) * 1991-09-24 1994-04-05 Microsoft Corporation Method and system for controlling the execution of an application program
IL99923A0 (en) * 1991-10-31 1992-08-18 Ibm Israel Method of operating a computer in a network
US5359721A (en) * 1991-12-18 1994-10-25 Sun Microsystems, Inc. Non-supervisor mode cross address space dynamic linking
AU3650693A (en) * 1992-03-09 1993-10-05 Ian Chester Distributed processing system

Also Published As

Publication number Publication date
KR100384086B1 (ko) 2003-05-16
EP0756233A1 (de) 1997-01-29
JPH08502612A (ja) 1996-03-19
JP2006031721A (ja) 2006-02-02
AU6203796A (en) 1996-10-10
GB2293674B (en) 1996-08-14
GB2286269A (en) 1995-08-09
GB2286269B (en) 1996-06-12
JP3722156B2 (ja) 2005-11-30
EP0756232A1 (de) 1997-01-29
HK1005475A1 (en) 1999-01-08
DE69327739T2 (de) 2000-09-28
GB2293675B (en) 1996-08-14
GB9222799D0 (en) 1992-12-09
EP0756233B1 (de) 1998-12-30
US5930511A (en) 1999-07-27
GB9506109D0 (en) 1995-05-31
SG42445A1 (en) 1997-08-15
AU679686B2 (en) 1997-07-10
HK1005476A1 (en) 1999-01-08
DE69322887T2 (de) 1999-05-27
DE69309704D1 (de) 1997-05-15
EP0756232B1 (de) 2000-01-26
SG52857A1 (en) 1998-09-28
SG34219A1 (en) 1996-12-06
CA2358010A1 (en) 1994-05-11
KR100384085B1 (ko) 2003-05-16
AU676815B2 (en) 1997-03-20
EP0667011B1 (de) 1997-04-09
DE69327739D1 (de) 2000-03-02
DE69322887D1 (de) 1999-02-11
GB2272085A (en) 1994-05-04
EP0667011A1 (de) 1995-08-16
AU6203696A (en) 1996-10-10
CA2358010C (en) 2002-04-30
GB9523209D0 (en) 1996-01-17
GB2293675A (en) 1996-04-03
CA2146672A1 (en) 1994-05-11
AU4508093A (en) 1994-05-24
GB9523109D0 (en) 1996-01-10
KR100419108B1 (ko) 2004-05-20
AU676816B2 (en) 1997-03-20
KR950704737A (ko) 1995-11-20
WO1994010628A1 (en) 1994-05-11
GB2293674A (en) 1996-04-03
HK1005474A1 (en) 1999-01-08
CA2146672C (en) 2002-02-05

Similar Documents

Publication Publication Date Title
DE69309704T2 (de) Datenverarbeitungssystem und betriebssystem
DE68925646T2 (de) Pipeline-multiprozessorsystem
DE69924857T2 (de) Programm-kode-umwandlung
DE69730276T2 (de) Vorrichtung und Verfahren zur Erleichterung der Vermeidung von exzeptionellen bestimmten Zuständen während des Ablaufs eines Programmes
DE3852324T2 (de) Verfahren und System zur Netzwerkverwaltung.
DE112012000303B4 (de) Dynamische binäre Optimierung
DE69910826T2 (de) Rechnersystem mit rekonfigurierbarer programmierbarer logik-vorrichtung
DE19815865B4 (de) Kompiliersystem und Verfahren zum rekonfigurierbaren Rechnen
DE68919631T2 (de) Verfahren zur Verarbeitung von Programmteilen eines verteilten Anwendungsprogramms durch einen Hauptrechner und einen intelligenten Arbeitsplatz in einer SNA LU 6.2-Netzwerkumgebung.
DE69533148T2 (de) Verfahren und Gerät zur Erzeugung und Verwendung kurzer Operationsidentifizierer in objektorientierten Systemen
DE69918334T2 (de) Erzeugung von kompilierten programmen für interpretative laufzeitumgebungen
DE69938218T2 (de) Vorrichtung und Verfahren zum Laden eines Java Anwendungsprogramms
DE69030425T2 (de) Verfahren und Vorrichtung zur Kompilierung von Rechnerprogrammen mit Registerzuweisung zwischen Prozeduren
DE69024753T2 (de) Tragbarer, Ressourcen teilender Datei-Server, der gemeinsame Routines benutzt
DE68928311T2 (de) Fern-Urlader
DE68921776T2 (de) Prozessorssimulation.
EP0333123B1 (de) Modular strukturiertes ISDN-Kommunikationssystem
DE69936162T2 (de) Verfahren und Gerät für ein objektorientiertes Unterbrechungssystem
DE3855475T2 (de) Software-Verwaltungsstruktur
DE3786069T2 (de) Virtueller Programmablauf auf einem Mehrfachverarbeitungssystem.
DE69215976T2 (de) Verfahren und Gerät für Netzrechnersystemgruppenverwaltung
DE2243956A1 (de) Speicherprogrammierte datenverarbeitungsanlage
DE4208924A1 (de) Verfahren zur kommunikation zwischen prozessoren und parallelverarbeitungscomputer hierfuer
DE102013200503A1 (de) Virtualisierungs-Support zum Speichern und Wiederherstellen von Zuständen einer Sprungvorhersage-Logik
DE10255128A1 (de) Computer-implementierte PDF-Dokumentenverwaltung

Legal Events

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