DE69309704T2 - Datenverarbeitungssystem und betriebssystem - Google Patents
Datenverarbeitungssystem und betriebssystemInfo
- 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
Links
- 238000012545 processing Methods 0.000 title claims description 72
- 238000000034 method Methods 0.000 claims description 135
- 230000008569 process Effects 0.000 claims description 128
- GKNWJYPYFJMILD-UHFFFAOYSA-N 1-[4-(2h-triazolo[4,5-c]pyridin-4-ylperoxy)-2h-triazolo[4,5-c]pyridin-6-yl]decan-1-one Chemical compound N=1C(C(=O)CCCCCCCCC)=CC=2NN=NC=2C=1OOC1=NC=CC2=C1N=NN2 GKNWJYPYFJMILD-UHFFFAOYSA-N 0.000 claims description 29
- 101000885693 Taxus cuspidata 10-deacetylbaccatin III 10-O-acetyltransferase Proteins 0.000 claims description 29
- 238000004891 communication Methods 0.000 claims description 8
- 230000006870 function Effects 0.000 claims description 8
- 238000013519 translation Methods 0.000 claims description 4
- 238000012217 deletion Methods 0.000 claims 1
- 230000037430 deletion Effects 0.000 claims 1
- 238000011156 evaluation Methods 0.000 claims 1
- 230000002085 persistent effect Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 241000699666 Mus <mouse, genus> Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5044—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/501—Performance criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task 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.
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)
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)
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 |
-
1992
- 1992-10-30 GB GB9222799A patent/GB2272085A/en not_active Withdrawn
-
1993
- 1993-07-01 CA CA002146672A patent/CA2146672C/en not_active Expired - Fee Related
- 1993-07-01 GB GB9523109A patent/GB2293674B/en not_active Expired - Fee Related
- 1993-07-01 KR KR10-2001-7006706A patent/KR100384085B1/ko not_active IP Right Cessation
- 1993-07-01 DE DE69309704T patent/DE69309704T2/de not_active Expired - Fee Related
- 1993-07-01 GB GB9506109A patent/GB2286269B/en not_active Expired - Fee Related
- 1993-07-01 WO PCT/GB1993/001382 patent/WO1994010628A1/en active Application Filing
- 1993-07-01 CA CA002358010A patent/CA2358010C/en not_active Expired - Fee Related
- 1993-07-01 DE DE69327739T patent/DE69327739T2/de not_active Expired - Fee Related
- 1993-07-01 EP EP96115042A patent/EP0756232B1/de not_active Expired - Lifetime
- 1993-07-01 SG SG1996011031A patent/SG52857A1/en unknown
- 1993-07-01 SG SG1995000364A patent/SG34219A1/en unknown
- 1993-07-01 GB GB9523209A patent/GB2293675B/en not_active Expired - Fee Related
- 1993-07-01 JP JP51079294A patent/JP3722156B2/ja not_active Expired - Fee Related
- 1993-07-01 EP EP93914859A patent/EP0667011B1/de not_active Expired - Lifetime
- 1993-07-01 KR KR10-2001-7006707A patent/KR100384086B1/ko not_active IP Right Cessation
- 1993-07-01 EP EP96115043A patent/EP0756233B1/de not_active Expired - Lifetime
- 1993-07-01 US US08/424,367 patent/US5930511A/en not_active Expired - Lifetime
- 1993-07-01 AU AU45080/93A patent/AU679686B2/en not_active Ceased
- 1993-07-01 DE DE69322887T patent/DE69322887T2/de not_active Expired - Fee Related
- 1993-07-01 KR KR1019950701769A patent/KR100419108B1/ko not_active IP Right Cessation
-
1996
- 1996-08-13 AU AU62036/96A patent/AU676815B2/en not_active Ceased
- 1996-08-13 AU AU62037/96A patent/AU676816B2/en not_active Ceased
- 1996-11-05 SG SG1996011040A patent/SG42445A1/en unknown
-
1998
- 1998-05-26 HK HK98104529A patent/HK1005475A1/xx not_active IP Right Cessation
- 1998-05-26 HK HK98104530A patent/HK1005476A1/xx not_active IP Right Cessation
- 1998-05-26 HK HK98104528A patent/HK1005474A1/xx not_active IP Right Cessation
-
2005
- 2005-07-28 JP JP2005219615A patent/JP2006031721A/ja active Pending
Also Published As
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 |