DE19513922A1 - Verteiltes Computersystem - Google Patents

Verteiltes Computersystem

Info

Publication number
DE19513922A1
DE19513922A1 DE19513922A DE19513922A DE19513922A1 DE 19513922 A1 DE19513922 A1 DE 19513922A1 DE 19513922 A DE19513922 A DE 19513922A DE 19513922 A DE19513922 A DE 19513922A DE 19513922 A1 DE19513922 A1 DE 19513922A1
Authority
DE
Germany
Prior art keywords
program
processing
computer
priority value
value
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.)
Withdrawn
Application number
DE19513922A
Other languages
English (en)
Inventor
Masahiko Saito
Takanori Yokoyama
Masaru Shimada
Kunihiko Tsunedomi
Tomoaki Nakamura
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of DE19513922A1 publication Critical patent/DE19513922A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • 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/505Allocation 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 the load
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • G06F9/4862Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
    • 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
    • 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/54Interprogram communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority

Description

Die Erfindung betrifft ein verteiltes Computersystem mit mehreren zu einem Netzwerk verschalteten Computern, um ge­ meinsam mehrere Programme abzuarbeiten, und insbesondere be­ trifft die Erfindung die Konfiguration und das Betriebsver­ fahren eines derartigen verteilten Computersystems, bei dem Prioritätsmaßnahmen verwendet werden, um Echtzeiteigenschaf­ ten zu realisieren.
Um bei einem herkömmlichen Computersystem, das nur aus einem einzelnen Computer besteht (wozu auch Computer mit mehreren Prozessoren gehören) Echtzeiteigenschaften zu schaffen, wur­ de eine Vorgehensweise verwendet, gemäß der die Reihenfolge der abzuarbeitenden Programme auf Grundlage einer Priori­ tätsreihenfolge der Programme gesteuert wird. Ein Beispiel für eine derartige Steuerung der Verarbeitungsreihenfolge unter Verwendung einer Prioritätsreihenfolge ist in "Opera­ ting Systems - Design and Implementation" von A. S. Tanen­ baum, Prentice-Hall, Inc. S. 82-84 (1987) beschrieben.
Auch beschreibt z. B. die Schrift JP-A-2-113362 ein Steuer­ schema, bei dem ein Prioritätswert zu jeder Meldung hinzuge­ fügt wird, wenn eine solche zwischen Verarbeitungsknoten innerhalb eines verteilten Rechnersystems übertragen wird, damit diese Meldungen in der Prioritätsreihenfolge verarbei­ tet werden, ausgehend mit der Meldung höchster Priorität (dieses System wird nachfolgend als "Stand der Technik 1" bezeichnet).
Ein anderes herkömmliches Schema ist in der Schrift JP-A-5-35701 beschrieben. Dieses Schema spezifiziert die tolerier­ bare Zeit für jede anhängige Verarbeitung, wenn eine Verar­ beitungsanforderung in einem verteilten Computersystem mit mehreren Prozessoren ausgegeben wird, es untersucht die ge­ plante Verarbeitungsanhängigkeitszeit jedes Prozessors, und es ordnet die Verarbeitungsanforderung einem Prozessor zu, dessen geplante Verarbeitungsanhängigkeitszeit kürzer als die tolerierbare Verarbeitungsanhängigkeitszeit ist. Wenn kein Prozessor der Bedingung der tolerierbaren Verarbei­ tungsanhängigkeitszeit genügt, wird die Verarbeitungsanfor­ derung demjenigen Prozessor zugeordnet, der die kürzeste ge­ plante Verarbeitungsanhängigkeitszeit aufweist. Verarbei­ tungsanforderungen, die jeweiligen Prozessoren zugeordnet sind, werden grundsätzlich von der ältesten Anforderung her abgearbeitet (dieses System wird nachfolgend als "Stand der Technik 2" bezeichnet).
Ferner ist es z. B. in der Schrift JP-A-5-35701 beschrieben, daß dann, wenn Verarbeitungsanforderungen ausgegeben werden, zu jeder solchen Anforderung eine tolerierbare Verarbei­ tungsanhängigkeitszeit wie auch ein Prioritätswert hinzuge­ fügt werden, ähnlich wie beim Stand der Technik 1, damit die Verarbeitungsanforderungen nach der Zuordnung zu einem Pro­ zessor vom jeweilig zugeordneten Prozessor in der Reihenfol­ ge der Prioritätswerte abgearbeitet werden (dieses Verfahren wird nachfolgend als "Stand der Technik 3" bezeichnet).
Bei einem verteilten Computersystem, in dem mehrere Compu­ ter durch jeweilige ihnen zugeordnete Betriebssysteme ver­ waltet werden, wird die Priorität der Programme in jedem der Computer gesondert verwaltet. Daher kann die Priorität von Programmen, wie sie von den jeweiligen Computern auszuführen sind, nicht gleichmäßig im gesamten verteilten Computersy­ stem verwaltet werden. Insbesondere in einem verteilten Com­ putersystem mit Computern, die sich hinsichtlich der Funk­ tionsfähigkeit und der Auslastung unterscheiden, kann sich die Dringlichkeit, wie sie durch die Priorität in einem Com­ puter repräsentiert wird, von der Dringlichkeit unterschei­ den, wie sie von der Priorität in einem anderen Computer re­ präsentiert wird. Genauer gesagt, kann dann, wenn ein Compu­ ter mit hoher Leistungsfähigkeit mit einem solchen mit ge­ ringer Leistungsfähigkeit verglichen wird, der erstere eine viel schnellere Verarbeitung als der letztere ausführen, und zwar selbst dann, wenn sie dieselbe Verarbeitung ausführen, die einen auf null gesetzten Prioritätswert hat. Auf ähnli­ che Weise unterscheiden sich bei einem stark ausgelasteten Computer und einem wenig ausgelasteten Computer die Bedeu­ tungen hinsichtlich ihrer jeweiligen Prioritätswerte vonein­ ander.
Darüber hinaus können sich bei einem verteilten Computersy­ stem mit mehreren verschiedenen Computern die Prioritäts­ schemata selbst von einem Computer zum nächsten verschieden sein. Z.B. ist ein Computer mit einem Prioritätswertebereich von 0 bis 255 nicht mit einem Computer mit einem Prioritäts­ wertebereich von 0 bis 127 hinsichtlich der Werte kompati­ bel, die den Prioritätsrängen zugeordnet werden. Auf ähnli­ che Weise kann in einem Computer, der den Prioritätswert 0 als den höchsten Rang ansieht, nicht derselbe Wert zugeord­ net werden wie in einem Computer, der den Prioritätswert 255 als höchsten Rang ansieht.
Der Stand der Technik 1 überträgt einfach eine Meldung zu­ sammen mit einem Prioritätswert, ohne die Unterschiede hin­ sichtlich des Funktionsvermögens, der Auslastung und des Typs verschiedener Computer in einem verteilten Computersy­ stem zu berücksichtigen. Wenn eine Meldung an einen Computer mit geringem Funktionsvermögen oder an einen stark ausgela­ steten Computer geliefert wird, ist es wahrscheinlich, daß die Verarbeitung nicht mit gewünschter Geschwindigkeit aus­ geführt wird, was möglicherweise dazu führt, daß die Echt­ zeiteigenschaften nicht aufrechterhalten werden können.
Ferner kann beim Stand der Technik 1, dann, wenn mehrere Computer dazu aufgefordert werden, Programme auszuführen, ein umgekehrter Effekt auftreten, d. h., daß eine Anforderung mit niedrigerem Prioritätsrang schneller abgeschlossen wird als eine Anforderung mit höherem Prioritätsrang. Es sei z. B. angenommen, daß eine Verarbeitung A mit dem Prioritätswert 5 an einen Computer A gegeben wird, während eine Verarbeitung B mit dem Prioritätswert 1 an einen Computer B gegeben wird (es sei auch angenommen, daß ein höherer Prioritätsrang durch einen kleineren Prioritätswert repräsentiert ist). In diesem Fall sollte die Verarbeitung B schneller abgeschlos­ sen werden als die Verarbeitung A, um dem ursprünglichen Zweck zu genügen. Wenn jedoch das Funktionsvermögen des Computers B schlechter als das des Computers A ist oder wenn der Computer B stärker ausgelastet ist als der Computer A, ist es möglich, daß die Verarbeitung A mit geringerer Prio­ rität schneller abgeschlossen wird als die Verarbeitung B mit höherer Priorität.
Ferner führt beim Stand der Technik 1 ein Computer, der eine große Anzahl von Anforderungen mit höheren Prioritätsrängen empfangen hat, zu Schwierigkeiten beim Sicherstellen von Echtzeiteigenschaften, da keine Situation berücksichtigt ist, bei der Verarbeitungsanforderungen auf einen einzelnen Computer konzentriert sind, insbesondere eine Situation, bei der Verarbeitungsanforderungen mit höheren Prioritätsrängen auf einen einzelnen Computer konzentriert sind.
Der Stand der Technik 2 kann dazu verwendet werden, Echt­ zeiteigenschaften in gewissem Ausmaß hinsichtlich einzelner Verarbeitungsanforderungen zu gewährleisten, vorausgesetzt, daß die geplante Verarbeitungsanhängigkeitszeit für die je­ weiligen Prozessoren korrekt berechnet werden kann. Jedoch kann dieses System keine Zeitgrenzebedingung hinsichtlich einer Verarbeitungsanforderung mit kurzer tolerierbarer Ver­ arbeitungsanhängigkeitszeit, die neu ausgegeben wird, nach­ dem eine bestimmte Anzahl von Verarbeitungsanforderungen be­ reits jeweiligen Prozessoren zugeordnet sind, erfüllen. Z.B. können Situationen auftreten, bei denen ein Prozessor dazu in der Lage war, neu ausgegebene Verarbeitungsanforderungen vor Verarbeitungsanforderungen mit langen tolerierbaren Ver­ arbeitungsanhängigkeitszeiten, wie sie bereits Prozessoren zugeordnet waren, zu verarbeiten. Dabei könnte die Zeit­ grenzebedingung für alle Verarbeitungsanforderungen erfüllt sein, jedoch ist beim System gemäß dem Stand der Technik 2, das Verarbeitungsanforderungen der Reihe nach zuordnet, die Zeitgrenzebedingung gelegentlich für neu ausgegebene Verar­ beitungsanforderungen nicht erfüllt. Anders gesagt, kann der Stand der Technik 2 eine hochdringliche Verarbeitungsanfor­ derung, die bei relativ stark ausgelasteter Situation ausge­ geben wird, nicht unmittelbar verarbeiten. Demgemäß hat der Stand der Technik 2 ein Problem dahingehend, daß strenge Echtzeiteigenschaften nicht gewährleistet sind.
Der Stand der Technik 3 ist andererseits ein System, das folgendes umfaßt: (1) Auswählen eines Prozessors, der einer tolerierbaren Verarbeitungsanhängigkeitszeit genügt, wenn einem Prozessor eine Verarbeitungsanforderung zugeordnet wird; und (2) Ausführen von Verarbeitungsanforderungen in der Reihenfolge der Prioritätswerte, wie sie zu den jeweili­ gen Anforderungen in jedem Prozessor hinzugefügt sind. Beim Stand der Technik 3 kann der Nachteil des Stands der Technik 2 in gewissem Ausmaß dadurch überwunden werden, daß einer neu ausgegebenen Verarbeitungsanforderung mit kurzer tole­ rierbarer Verarbeitungsanhängigkeitszeit ein hoher Priori­ tätsrang zugeordnet wird. Da dieses System jedoch vorzugs­ weise neu zugeordnete Verarbeitungsanforderungen mit hohem Prioritätsrang verarbeitet, kann es unter Umständen der to­ lerierbaren Verarbeitungsanhängigkeitszeit einer bereits zu­ geordneten Verarbeitungsanforderung mit niedrigem Priori­ tätsrang nicht genügen, wobei der niedrige Prioritätsrang deswegen festgelegt wurde, da angenommen wurde, die tole­ rierbare Verarbeitungsanhängigkeitszeit würde erfüllt. Es sei z. B. eine Situation angenommen, bei der eine Verarbei­ tungsanforderung A mit einer auf eine Minute gesetzten to­ lerierbaren Verarbeitungsanhängigkeitszeit und einem Prio­ ritätswert 5 einem Prozessor A zugeordnet wurde, wobei dies erfolgte, da angenommen wurde, daß die tolerierbare Verar­ beitungsanhängigkeitszeit erfüllt wurde, und daß eine Verar­ beitungsanforderung B mit einer auf 30 Sekunden festgesetz­ ten tolerierbaren Verarbeitungsanhängigkeitszeit und mit dem Prioritätswert 1 dem Prozessor A neu zugeordnet wird. In diesem Fall wird die Verarbeitungsanforderung B vor der Ver­ arbeitungsanforderung A verarbeitet. Diese bevorzugte Aus­ führung kann dazu führen, daß die tolerierbare Verarbei­ tungsanhängigkeitszeit für die Verarbeitungsanforderung A, die bereits demselben Prozessor zugeordnet war, nicht er­ füllt werden kann, obwohl auch diese tolerierbare Verarbei­ tungsanhängigkeitszeit sicher erfüllt werden sollte.
Auch kann beim Stand der Technik 3 dann, wenn verschiedene Verarbeitungsanforderungen mit derselben tolerierbaren Ver­ arbeitungsanhängigkeitszeit jedoch verschiedenen Prioritäts­ werten mehreren Prozessoren zugeordnet werden, ein umgekehr­ ter Effekt, ähnlich wie beim Stand der Technik 1, wegen ver­ schiedener Auslastungen und Funktionsfähigkeiten der zuge­ ordneten Prozessoren auftreten, daß also eine Verarbeitungs­ anforderung mit niedrigerem Prioritätsrang schneller abge­ schlossen wird als eine Verarbeitungsanforderung mit höherem Prioritätsrang.
Der Erfindung liegt die Aufgabe zugrunde, ein verteiltes Computersystem zu schaffen, in dem Echtheitseigenschaften strenger eingehalten werden als bei bisherigen derartigen Systemen.
Es ist eine andere Aufgabe der Erfindung, ein verteiltes Computersystem zu schaffen, das Computer enthält, die sich möglicherweise hinsichtlich des Funktionsvermögens, der Aus­ lastung und des Typs unterscheiden, und das dazu in der Lage ist, Echtzeiteigenschaften strenger dadurch einzuhalten, daß örtliche Prioritätsschemata, wie sie in den jeweiligen Com­ putern vorliegen, gleichmäßig verwaltet werden.
Die Erfindung verwendet eines der folgenden zwei Konzepte, um die örtlichen Prioritätsschemata gleichmäßig zu verwal­ ten, die in den verschiedenen Computern vorliegen, die zum verteilten Computersystem gehören:
  • (1) Verarbeitungsdringlichkeit: dies ist ein gemeinsamer Re­ lativwert, wie er im gesamten System dazu verwendet wird, anzuzeigen, wie schnell eine Verarbeitung abzuschließen ist; und
  • (2) Verarbeitungszeitgrenze: dies ist ein absoluter Wert, der anzeigt, wie schnell eine Verarbeitung vorzugsweise ab­ zuschließen ist.
Nachfolgend werden Einrichtungen für die gleichmäßige Ver­ waltung der örtlichen Prioritätsschemata in den jeweiligen Computern in einem verteilten Computersystem, wie bei der Erfindung verwendet, getrennt für den Fall beschrieben, daß die Verarbeitungsdringlichkeit verwendet wird, und für den Fall, daß die Verarbeitungszeitgrenze verwendet wird.
(A) Verwaltungseinrichtungen mit Verarbeitungsdringlichkeit
Um die vorstehend genannten Aufgaben zu lösen, ist die Er­ findung gemäß einer Erscheinungsform durch eine Prioritäts­ wert-Bestimmungseinrichtung zum Bestimmen des Prioritäts­ werts gekennzeichnet, wie er zum Ausführen eines Programms geeignet ist, und zwar unter Berücksichtigung der Funktions­ fähigkeit und der Auslastung jedes Computers und/oder des Dringlichkeitswerts für die vom Computer ausgeführte Verar­ beitung.
Insbesondere enthält die Prioritätswert-Bestimmungseinrich­ tung die folgenden fünf Einrichtungen als Komponenten, die zusammenwirkend miteinander arbeiten, um die Verwaltung ei­ nes verteilten Computersystems in solcher Weise auszuführen, daß die vorstehend genannten Aufgaben unter Verwendung der Verarbeitungsdringlichkeit gelöst werden:
  • (1) Prioritätswert-Umsetzeinrichtung zum Ausführen einer Um­ setzung zwischen einem Dringlichkeitswert und einem zugehö­ rigen Prioritätswert für die Verarbeitung abhängig vom Funk­ tionsvermögen und der Auslastung eines Computers;
  • (2) Prioritätswert-Änderungseinrichtung zum Ändern des Prio­ ritätswerts eines Programms, wodurch die Verarbeitung mit einem Prioritätswert ausgeführt wird, wie sie von der Prio­ ritätswert-Umsetzeinrichtung angegeben wird;
  • (3) Computerauswahleinrichtung zum Bestimmen eines Computers, der zum Ausführen des Programms geeignet ist, und zwar unter Berücksichtigung des Funktionsvermögens und der Auslastung jedes Computers und/oder des Dringlichkeitswerts der von ei­ nem Programm ausgeführten Verarbeitung;
  • (4) Programmauswahleinrichtung, die arbeitet, wenn mehrere Programme, die denselben Vorgang ausführen, vorliegen und Verarbeitung für eines dieser Programme angefordert wird, um ein Programm mit optimalen Prioritätswert aus den mehreren Programmen auszuwählen, die denselben Vorgang ausführen, und zwar unter Berücksichtigung des Funktionsvermögens und der Auslastung jedes Computers und/oder des Dringlichkeitswerts der Verarbeitung; und
  • (5) Verarbeitungsverlegungseinrichtung zum Verlegen einer neu angeforderten Verarbeitung eines Programms, wie von der Programmauswahleinrichtung angezeigt.
(B) Verwaltungseinrichtung für Verarbeitungszeitgrenze
Um die obige Aufgabe zu lösen, ist die Erfindung gemäß einer anderen Erscheinungsform durch eine Prioritätswert-Bestim­ mungseinrichtung zum Bestimmen des Prioritätswerts, wie er zum Ausführen eines Programms geeignet ist, gekennzeichnet, wobei das Funktionsvermögen und die Auslastung jedes Compu­ ters und/oder die Zeitgrenze und die Verarbeitungsmenge der von einem Programm ausgeführten Verarbeitung berücksichtigt werden.
Speziell verfügt die Prioritätswert-Bestimmungseinrichtung über die folgenden acht Einrichtungen als Komponenten, die zusammenwirkend miteinander so arbeiten, daß sie die Verwal­ tung eines verteilten Computersystems dahingehend ermögli­ chen, daß die oben genannten Aufgaben unter Verwendung der Verarbeitungszeitgrenze gelöst werden. Es ist jedoch zu be­ achten, daß nicht alle folgenden acht Einrichtungen gleich­ zeitig vorhanden sein müssen:
  • (1) Prioritätswert-Umsetzeinrichtung zum Ausführen einer Um­ setzung zwischen einem Wertesatz für eine Grenze und eine Verarbeitungsmenge für die Verarbeitung und einem Priori­ tätswert abhängig vom Funktionsvermögen und der Auslastung eines Computers;
  • (2) Prioritätswert-Änderungseinrichtung zum Ändern des Prio­ ritätswerts eines Programms, das von einem Computer ausge­ führt wird, abhängig vom Prioritätswert, wie er von der Prioritätswert-Umsetzeinrichtung angegeben wird;
  • (3) Verbindungszeit-Vorhersageeinrichtung zum Vorhersagen der Verbindungszeit mit einem anderen Computer;
  • (4) Computerauswahleinrichtung zum Bestimmen eines Compu­ ters, wie er zum Ausführen eines Programms geeignet ist, wo­ bei das Funktionsvermögen und die Auslastung jedes Computers und/oder ein Wertesatz einer Zeitgrenze und einer Verarbei­ tungsmenge für eine Verarbeitung, wie sie von einem Programm ausgeführt wird, berücksichtigt werden;
  • (5) Programmauswahleinrichtung, die dann arbeitet, wenn meh­ rere Programme, die denselben Vorgang ausführen, vorliegen und eine Verarbeitung durch eines dieser Programme angefor­ dert wird, um das Programm mit optimalem Prioritätswert aus den mehreren Programmen auszuwählen, die denselben Vorgang ausführen, wobei das Funktionsvermögen und die Auslastung jedes Computers und/oder ein Wertesatz aus einer Zeitgrenze und einer Verarbeitungsmenge für die Verarbeitung berück­ sichtigt werden;
  • (6) Verarbeitungsverlegeeinrichtung zum Verlegen einer neu angeforderten Verarbeitung für ein Programm, wie durch die Programmauswahleinrichtung angezeigt;
  • (7) Verarbeitungszeit-Vorhersageeinrichtung zum Vorhersagen einer Verarbeitungszeit, wie sie für ein Programm erforder­ lich ist, um die gerade ausgeführte Verarbeitung abzuschlie­ ßen, und zwar abhängig vom Funktionsvermögen, der Ausla­ stung, der Verarbeitungsmenge des Computers; und
  • (8) Zeitgrenze-Einstelleinrichtung, die dann arbeitet, wenn die vorhergesagte Verarbeitungszeit nicht der für die Verar­ beitung auferlegten Zeitgrenze genügt, um eine Zeitgrenze neu einzustellen, ausgehend von der Zeit, die ab der Anfor­ derung der Verarbeitung verstrichen ist, und ausgehend von der auferlegten Zeitgrenze.
Der Vorgang, wie er von der Einrichtung zum Überwinden der oben genannten Schwierigkeiten ausgeführt wird, wird ge­ trennt für den Fall, daß die Verarbeitungsdringlichkeit ver­ wendet wird, und für den Fall, daß die Verarbeitungszeit­ grenze verwendet wird, beschrieben.
(A) Verwaltung mit Verarbeitungsdringlichkeit
Die Prioritätswert-Bestimmungseinrichtung bestimmt einen Prioritätswert, wie er dazu geeignet ist, ein Programm aus­ zuführen, und zwar unter Berücksichtigung des Funktionsver­ mögens und der Auslastung jedes Computers und/oder des Dringlichkeitswerts der vom Computer ausgeführten Verarbei­ tung. Dies ermöglicht es, daß die Verarbeitung im wesentli­ chen mit derselben Geschwindigkeit ausgeführt wird, unab­ hängig von Unterschieden des Funktionsvermögens der jeweili­ gen Computer, und zwar dadurch, daß einem Programm dann ein niedriger Prioritätswert zugeordnet wird, wenn es in einem hochleistungsfähigen Computer abgearbeitet wird, es dagegen einen hohen Prioritätswert erhält, wenn es in einem Computer mit geringer Leistungsfähigkeit abgearbeitet wird. Auf ähn­ liche Weise kann die Verarbeitung im wesentlichen mit der­ selben Geschwindigkeit unabhängig von Unterschieden der Aus­ lastung jeweiliger Computer dadurch ausgeführt werden, daß einem stark ausgelasteten Computer hohe Prioritätswerte zu­ geordnet werden und einem gering ausgelasteten Computer niedrige Prioritätswerte zugeordnet werden. Da der Priori­ tätswert in jedem Computer auf Grundlage der Verarbeitungs­ dringlichkeit unter Berücksichtigung des Funktionsvermögens und der Auslastung jedes Computers bestimmt wird, ist es möglich, einen Umkehrungseffekt zu vermeiden, bei dem eine Verarbeitung mit geringerem Prioritätswert früher abge­ schlossen wird als eine Verarbeitung mit höherem Prioritäts­ wert. Anders gesagt, können strenger eingehaltene Echtzeit­ eigenschaften gewährleistet werden als dies bei bekannten Techniken der Fall ist. Die fünf Einrichtungen, die die Prioritätswert-Bestimmungseinrichtung bilden, verfügen je­ weils über die folgenden Funktionen.
Die Prioritätswert-Umsetzeinrichtung enthält eine Priori­ tätswert-Entsprechungstabelle, die für eine Umsetzung zwi­ schen einem Dringlichkeitswert und einem zugehörigen Priori­ tätswert für die Verarbeitung verwendet wird. Der Inhalt der Prioritätswert-Entsprechungstabelle wird abhängig von Unter­ schieden des Funktionsvermögens, der Auslastung und des Typs von Computern verändert.
Die Prioritätswert-Veränderungseinrichtung ändert den Prio­ ritätswert eines Programms abhängig vom Prioritätswert, wie er von der Prioritätswert-Umsetzeinrichtung angegeben wird. Diese Prioritätswert-Umsetzeinrichtung gewährleistet in Zu­ sammenwirkung mit der Prioritätswert-Änderungseinrichtung, daß Verarbeitungen mit demselben Dringlichkeitswert mit im wesentlichen derselben Geschwindigkeit von jedem Computer ausgeführt wird, auch wenn diese verschiedene Funktionsver­ mögen und Auslastungen aufweisen.
Die Computerauswahleinrichtung nimmt auf einen Computer in­ formationsbereich, der aus einer Computerfunktionsvermögen- Informationstabelle und einer Computerauslastung-Informa­ tionstabelle besteht, sie wählt einen Computer aus, dem ein Programm mit einem speziellen Dringlichkeitswert zugeordnet wird, um die Auslastungen der Computer im System gleichmäßig auszulasten, und sie sorgt dafür, daß der ausgewählte Compu­ ter das Programm ausführt. Die Computerfunktionsvermögen-In­ formationstabelle gibt die Funktionsvermögen der jeweiligen Computer an, während die Computerauslastung-Informationsta­ belle die Auslastungen der jeweiligen Computer für jeden Dringlichkeitswert zeigt. Wenn die Auslastung eines Compu­ ters schwankt, wird dieses Schwankungsausmaß in der Compu­ terauslastung-Informationstabelle wiedergegeben. Dies ver­ hindert, daß sich eine Anzahl von Verarbeitungen mit hohem Dringlichkeitswert auf einen einzelnen Computer konzen­ triert, wodurch es möglich ist, in den jeweiligen Computern strenger eingehaltene Echtzeiteigenschaften zu gewährlei­ sten.
Die Programmauswahleinrichtung verwendet eine Programmort- Datenbank, die Information zu Programmen enthält, die den­ selben Vorgang ausführen, um ein Programm mit einem Dring­ lichkeitswert, der mit einem vorgegebenen Dringlichkeitswert übereinstimmt, aus einer Gruppe von Programmen auszuwählen, die denselben Vorgang ausführen. Dann wird an das ausgewähl­ te Programm eine Verarbeitungsanforderung ausgegeben. Die Programmort-Datenbank speichert Prioritätswerte oder Dring­ lichkeitswerte von Programmen, die denselben Vorgang ausfüh­ ren, und auch die Kennungen der Computer, auf denen diese Programme laufen. So ist es selbst dann möglich, wenn die oben genannte Prioritätswert-Änderungseinrichtung nicht ver­ wendet wird, mehrere Programme mit verschiedenen Dringlich­ keitswerten zu erstellen, das Programm mit dem geeignetsten Dringlichkeitswert aus diesen Programmen zur Ausführung der Verarbeitung auf zufordern, und dafür zu sorgen, daß das auf­ geforderte Programm die Verarbeitung mit gewünschter Ge­ schwindigkeit ausführt.
Wenn ein gerade eine Verarbeitung ausführendes Programm dazu aufgefordert wird, eine andere Verarbeitung auszuführen, fragt die Verarbeitungsverlegeeinrichtung aus der Programm­ auswahleinrichtung die Orte der anderen Programme ab, die denselben Vorgang wie das angeforderte Programm ausführen, und sie verlegt die Verarbeitungsanforderung auf ein Pro­ gramm, das im Ergebnis durch die Programmauswahleinrichtung spezifiziert wurde. So kann die neu angeforderte Verarbei­ tung für das aktuell laufende Programm durch ein anderes Programm ausgeführt werden, das die Verarbeitung mit im wesentlichen derselben Geschwindigkeit (mit demselben Dring­ lichkeitswert) ausführen kann, ohne daß auf den Abschluß der aktuell ausgeführten Verarbeitung durch das angeforderte Programm gewartet werden muß, wodurch strenger eingehaltene Echtzeiteigenschaften gewährleistet werden.
(B) Verwaltung mit Verarbeitungszeitgrenze
Die Prioritätswert-Bestimmungseinrichtung bestimmt einen Prioritätswert, wie er für die Ausführung eines Programms geeignet ist, und zwar unter Berücksichtigung des Funktions­ vermögens und der Auslastung jedes Computers und/oder eines Wertesatzes aus einer Zeitgrenze und einer Verarbeitungs­ menge für die vom Programm ausgeführte Verarbeitung. Auf diese Weise wird der Satz aus der Zeitgrenze und der Verar­ beitungsmenge für die Verarbeitung in einen örtlichen Prio­ ritätswert umgesetzt, wie er für jeden Computer definiert ist, und zwar abhängig vom Funktionsvermögen und der Ausla­ stung des Computers, und die Verarbeitung wird mit dem umge­ setzten Prioritätswert ausgeführt. Dadurch ist es möglich, eine neu angeforderte Verarbeitung mit kürzerer Zeitgrenze auszuführen, bevor eine zuvor zugeordnete Verarbeitung mit längerer Zeitgrenze ausgeführt wird. Auch wird, da die Zeit­ grenze für die Verarbeitung in einen örtlichen Prioritäts­ wert für einen Computer unter Berücksichtigung des Funk­ tionsvermögens und der Auslastung des Computers umgesetzt werden kann, dann, wenn sich die verstrichene Zeit der Zeit­ grenze für die Verarbeitung nähert, wie sie bereits dem Com­ puter zugeordnet ist, die Zeitgrenze für die Verarbeitung verkürzt werden, und es wird erneut ein zugehöriger Priori­ tätswert abhängig von der verkürzten Zeitgrenze für die Ver­ arbeitung bestimmt, wodurch eine neu angeforderte Verarbei­ tung die Ausführung der zuvor zugeordneten Verarbeitung nicht behindert. Anders gesagt, können strenger eingehaltene Echtzeiteigenschaften gewährleistet werden als beim Stand der Technik. Die acht Einrichtungen, die die Prioritätswert- Bestimmungseinrichtung bilden, haben jeweils die folgenden Funktionen.
Die Prioritätswert-Umsetzeinrichtung enthält eine Priori­ tätswert-Entsprechungstabelle, die die Entsprechung zwischen der Zeitgrenze pro Einheitsverarbeitungsmenge und einem Prioritätswert angibt, wie dazu verwendet, eine Umsetzung zwischen einem Satz aus einer Zeitgrenze und einer Verarbei­ tungsmenge für die Verarbeitung und einem zugehörigen Prio­ ritätswert vorzunehmen. Der Inhalt der Prioritätswert-Ent­ sprechungstabelle wird abhängig von Änderungen des Funk­ tionsvermögens, der Auslastung und des Typs von Computern verändert.
Die Prioritätswert-Änderungseinrichtung ändert den Priori­ tätswert eines Programms abhängig von einem Prioritätswert, wie er von der Prioritätswert-Umsetzeinrichtung angegeben wird. Diese Prioritätswert-Umsetzeinrichtung ermöglicht in Zusammenwirkung mit der Prioritätswert-Änderungseinrichtung, daß eine Verarbeitung mit einem örtlichen Prioritätswert für jeden Computer entsprechend der der Verarbeitung auferlegten Zeitgrenze ausgeführt wird. Daher ist es möglich, eine Ver­ arbeitung mit kürzerer Zeitgrenze vor einer anderen Verar­ beitung mit längerer Zeitgrenze auszuführen, wodurch stren­ geres Einhalten von Echtzeiteigenschaften für jede Verarbei­ tung im verteilten Computersystem gewährleistet ist. Wenn eine Verarbeitung mit langer Zeitgrenze nicht abgearbeitet wird, um bevorzugt andere Verarbeitungen mit kurzer Zeit­ grenze auszuführen, nähert sich die abgelaufene Zeit der Zeitgrenze der Verarbeitung, die noch nicht abgearbeitet ist. In diesem Fall wird der Prioritätswert der Verarbeitung abhängig von der verkürzten zur Verfügung stehenden Zeit für die Verarbeitung auf einen größeren Wert korrigiert, so daß die Verarbeitung mit dem korrigierten Prioritätswert ausge­ führt werden kann.
Die Verbindungszeit-Vorhersageeinrichtung verfügt über eine Vorhersagezeittabelle zum Abspeichern einer Verbindungszeit für jeden Computer, und sie gibt Information über die Zeit, wie sie für eine Verbindung mit einem bestimmten Computer erforderlich ist, wenn eine entsprechende Anfrage erfolgt. Auf diese Weise kann die Zeitgrenze für die Verarbeitung ge­ nauer eingestellt werden, wenn die Verbindungszeit zwischen Computern nicht vernachlässigbar ist.
Die Computerauswahleinrichtung nimmt auf einen Computer in­ formationsbereich Bezug, der aus einer Computerfunktionsver­ mögen-Informationstabelle und einer Computerauslastung-In­ formationstabelle besteht, sie wählt einen Computer so aus, daß die Auslastung oder Verarbeitung mit vorgegebener Zeit­ grenze pro Einheitsverarbeitungsmenge gleich auf die Compu­ ter verteilt ist, und sie sorgt dafür, daß der ausgewählte Computer ein Programm ausführt. Die Computerfunktionsvermö­ gen-Informationstabelle zeigt die Funktionsvermögen der je­ weiligen Computer, während die Computerauslastung-Informa­ tionstabelle die Auslastungen der jeweiligen Computer für jeden Dringlichkeitswert zeigt. Wenn sich die Auslastung ei­ nes Computers ändert, wird das Änderungsausmaß in der Compu­ terauslastung-Informationstabelle wiedergegeben. Dies ver­ hindert, daß eine Anzahl von Verarbeitungen mit kurzer Zeit­ grenze auf einen einzelnen Computer konzentriert wird, wo­ durch es möglich ist, Echtzeiteigenschaften in den jeweili­ gen Computern strenger einzuhalten.
Die Programmauswahleinrichtung verwendet eine Programmort- Datenbank, die Information zu Programmen enthält, die den­ selben Vorgang ausführen, um ein Programm mit einer Zeit­ grenze pro Verarbeitungsmengeeinheit, die mit der spezifi­ zierten übereinstimmt, aus einer Gruppe von Programmen aus­ zuwählen, die denselben Vorgang ausführen. Eine Verarbei­ tunganforderung wird dann an das ausgewählte Programm ausge­ geben. Die Programmort-Datenbank speichert entweder Priori­ tätswerte oder Dringlichkeitswerte für Programme ein, die denselben Vorgang ausführen, und sie speichert die Kennungen von Computern ab, auf denen diese Programme laufen. Demgemäß ist es selbst dann, wenn die oben genannte Prioritätswert- Änderungseinrichtung nicht verwendet wird, möglich, mehrere Programme mit verschiedenen Zeitgrenzen bereitzustellen, das Programm mit der am besten geeigneten Zeitgrenze, wie aus diesen Programmen ausgewählt, zum Ausführen der Verarbeitung aufzufordern, und dafür zu sorgen, daß das aufgeforderte Programm die Verarbeitung mit gewünschter Geschwindigkeit ausführt.
Wenn ein gerade eine Verarbeitung ausführendes Programm dazu aufgefordert wird, eine andere Verarbeitung auszuführen, fragt die Verarbeitungsverlegeeinrichtung bei der Programm­ auswahleinrichtung die Orte anderer Programme ab, die den­ selben Vorgang wie das angeforderte Programm ausführen, und sie verlegt die Verarbeitungsanforderung auf ein Programm, das im Ergebnis durch die Programmauswahleinrichtung spezi­ fiziert wurde. So kann eine neue Verarbeitung, zu der das aktuell arbeitende Programm aufgefordert wird, durch ein an­ deres Programm ausgeführt werden, das die Verarbeitung mit im wesentlichen derselben Geschwindigkeit ausführen kann, ohne daß auf den Abschluß der aktuell ausgeführten Verarbei­ tung durch das angeforderte Programm gewartet werden muß, wodurch strengeres Einhalten von Echtzeiteigenschaften ge­ währleistet ist.
Die Verarbeitungszeit-Voraussageeinrichtung berechnet die Zeit, wie sie dazu erforderlich ist, ein Programm abzu­ schließen, und zwar gestützt auf die restliche Verarbei­ tungsmenge, wie vom Programm auszuführen, und gestützt auf eine Zeitgrenze pro Einheitsverarbeitungsmenge des Pro­ gramms.
Die Zeitgrenze-Einstelleinrichtung bestimmt eine neue Zeit­ grenze für die Verarbeitung gestützt auf eine Zeitgrenze für die Verarbeitung, wie beim Anfordern der Verarbeitung spezi­ fiziert, und gestützt auf die Zeit, wie sie ab dem Start der Ausführung der Verarbeitung verstrichen ist. Die Zeitgrenze- Einstelleinrichtung bestimmt in Zusammenwirkung mit der Ver­ arbeitungszeit-Voraussageeinrichtung, ob die Zeitgrenze für die Verarbeitung erfüllt wird, wenn ein Programm mit dem ak­ tuellen Prioritätswert abgearbeitet wird. Wenn erkannt wird, daß die Zeitgrenze nicht erfüllt wird, kann eine kürzere Zeitgrenze eingestellt werden. Unter Verwendung der neu ein­ gestellten Zeitgrenze können die Prioritätswert-Umsetzein­ richtung und die Prioritätswert-Änderungseinrichtung dem Programm einen höheren Prioritätswert verleihen und die Ver­ arbeitung an ein anderes Programm verlegen, das denselben Vorgang ausführt und der neuen Zeitgrenze genügen kann, da­ mit dieses Programm die Verarbeitung vornimmt. Auf diese Weise kann die Verarbeitung so verwaltet werden, daß der ur­ sprünglich vergebenen Zeitgrenze genügt wird.
Die Erfindung wird im folgenden anhand von durch Figuren veranschaulichten Ausführungsbeispielen näher beschrieben.
Fig. 1 ist ein Diagramm, das die Konfiguration eines ver­ teilten Computersystems gemäß einem ersten Ausführungsbei­ spiel der Erfindung zeigt;
Fig. 2 zeigt eine Datenstruktur einer Prioritätswert-Ent­ sprechungstabelle, die die Entsprechung zwischen Dringlich­ keitswerten und Prioritätswerten angibt;
Fig. 3 zeigt ein anderes Beispiel zum Realisieren einer Prioritätswert-Umsetzeinrichtung;
Fig. 4 zeigt eine Form eines Programms zum Ausgeben einer Verarbeitungsanforderung mit einem spezifizierten Dring­ lichkeitswert;
Fig. 5 ist ein Diagramm, das einen Verarbeitungsablauf zum Ausführen von Verbindungen zum Spezifizieren eines Dring­ lichkeitswerts zeigt;
Fig. 6 ist ein Flußdiagramm, das einen Verarbeitungsablauf zum Ändern des Inhalts einer Prioritätswert-Entsprechungsta­ belle repräsentiert, die die Entsprechung zwischen Dring­ lichkeitswerten und Prioritätswerten abhängig von sich än­ derndern Auslastung angibt;
Fig. 7 zeigt, wie die Prioritätswert-Entsprechungstabelle abhängig von einer Zunahme oder Abnahme der Auslastung ge­ ändert wird;
Fig. 8 zeigt ein Programm zum Modifizieren der Prioritäts­ wert-Entsprechungstabelle abhängig von einer Zunahme oder Abnahme der Auslastung;
Fig. 9 ist ein Flußdiagramm, das einen Verarbeitungsablauf zum Ändern des Prioritätswerts eines Programms in Überein­ stimmung mit einer Modifizierung der Prioritätswert-Entspre­ chungstabelle zeigt;
Fig. 10 ist ein Diagramm, das ein zweites Ausführungsbei­ spiel der Erfindung und einen Verarbeitungsablauf zum Aus­ führen von Verbindungen zum Spezifizieren eines Dringlich­ keitswerts bei diesem Ausführungsbeispiel zeigt;
Fig. 11 zeigt die Konfiguration eines dritten Ausführungs­ beispiels der Erfindung;
Fig. 12 ist ein Flußdiagramm, das einen Verarbeitungsablauf zum Starten eines Programms beim dritten Ausführungsbeispiel zeigt;
Fig. 13 zeigt Beispiele für eine Computerauslastung-Informa­ tionstabelle, eine Auslastungswerttabelle und eine Ausla­ stung/Funktionsvermögen-Tabelle beim dritten Ausführungsbei­ spiel der Erfindung;
Fig. 14 ist ein Flußdiagramm, das einen Verarbeitungsablauf zum Verschieben eines Programms repräsentiert;
Fig. 15 zeigt andere Beispiele für die Computerauslastung- Informationstabelle, die Auslastungswerttabelle und die Aus­ lastung/Funktionsvermögen-Tabelle beim dritten Ausführungs­ beispiel der Erfindung;
Fig. 16 und 17 sind Diagramme, die die Konfiguration eines vierten bzw. fünften Ausführungsbeispiels der Erfindung zeigen;
Fig. 18 ist ein Flußdiagramm, das einen Verarbeitungsablauf zum Auswählen eines Programms beim fünften Ausführungsbei­ spiel der Erfindung veranschaulicht;
Fig. 19 ist ein Flußdiagramm, das einen Verarbeitungsablauf zum Herausfinden eines Programms mit speziellem Prioritäts­ wert veranschaulicht;
Fig. 20 ist ein Diagramm, das die Konfiguration eines sech­ sten Ausführungsbeispiels der Erfindung und einen Verarbei­ tungsablauf zum Auswählen eines Programms beim sechsten Aus­ führungsbeispiel zeigt;
Fig. 21 ist ein Diagramm, das die Konfiguration eines sieb­ ten Ausführungsbeispiels der Erfindung und einen Verarbei­ tungsablauf zum Verlegen einer Verarbeitungsanforderung beim siebten Ausführungsbeispiel zeigt;
Fig. 22 ist ein Diagramm, das die Konfiguration eines achten Ausführungsbeispiels der Erfindung zeigt;
Fig. 23 zeigt eine Datenstruktur einer Prioritätswert-Ent­ sprechungstabelle, die die Entsprechung zwischen einer Zeit­ grenze und einem Prioritätswert angibt;
Fig. 24 zeigt ein Programm zum Herleiten eines Prioritäts­ werts aus einer vorgegebenen Zeitgrenze;
Fig. 25 zeigt eine Form eines Programms zum Ausgeben einer Verarbeitungsanforderung mit spezifizierter Zeitgrenze;
Fig. 26 ist ein Diagramm, das einen Verarbeitungsablauf zum Ausführen von Verbindungen zum Spezifizieren einer Zeitgren­ ze beim achten Ausführungsbeispiel zeigt;
Fig. 27 ist ein Flußdiagramm, das einen Verarbeitungsablauf zum Modifizieren des Inhalts der Prioritätswert-Entspre­ chungstabelle abhängig von sich ändernder Auslastung veran­ schaulicht;
Fig. 28 zeigt, wie die Prioritätswert-Entsprechungstabelle abhängig von einer Zunahme oder Abnahme der Auslastung modi­ fiziert wird;
Fig. 29 ist ein Diagramm, das ein neuntes Ausführungsbei­ spiel der Erfindung und einen Verarbeitungsablauf zum Aus­ führen von Verbindungen zum Spezifizieren einer Zeitgrenze unter Berücksichtigung der Verbindungszeit beim neunten Aus­ führungsbeispiel zeigt;
Fig. 30 ist ein Diagramm, das die Konfiguration eines zehn­ ten Ausführungsbeispiels zeigt;
Fig. 31 ist ein Flußdiagramm, das einen Verarbeitungsablauf zum Starten eines Programms beim zehnten Ausführungsbeispiel veranschaulicht;
Fig. 32 zeigt Beispiele einer Computerauslastung-Informa­ tionstabelle, einer Auslastungswerttabelle und einer Ausla­ stung/Funktionsvermögen-Tabelle beim zehnten Ausführungsbei­ spiel der Erfindung;
Fig. 33 ist ein Flußdiagramm, das einen Verarbeitungsablauf zum Verschieben eines Programms beim zehnten Ausführungsbei­ spiel der Erfindung veranschaulicht;
Fig. 34 zeigt andere Beispiele der Computerauslastung-Infor­ mationstabelle, der Auslastungswerttabelle und der Ausla­ stung/Funktionsvermögen-Tabelle beim zehnten Ausführungsbei­ spiel der Erfindung;
Fig. 35 ist ein Diagramm, das die Konfiguration eines elften Ausführungsbeispiels der Erfindung zeigt;
Fig. 36 zeigt einen Verarbeitungsablauf zum Auswählen eines Programms beim elften Ausführungsbeispiel der Erfindung;
Fig. 37 ist ein Diagramm, das die Konfiguration eines zwölf­ ten Ausführungsbeispiels der Erfindung und einen Verarbei­ tungsablauf zum Auswählen eines Programms beim zwölften Aus­ führungsbeispiel zeigt; und
Fig. 38 ist ein Diagramm, das die Konfiguration eines drei­ zehnten Ausführungsbeispiels der Erfindung und einen Verar­ beitungsablauf zum Verlegen einer Verarbeitungsanforderung beim dreizehnten Ausführungsbeispiel zeigt.
Zunächst wird eine Reihe von Ausführungsbeispielen unter Verwendung des Dringlichkeitskonzepts dargelegt, gefolgt von Ausführungsbeispielen, die das Zeitgrenzekonzept verwenden.
(A) System unter Verwendung der Verarbeitungsdringlichkeit
Fig. 1 zeigt die Konfiguration eines verteilten Computersy­ stems gemäß einem ersten Ausführungsbeispiel der Erfindung. In diesem System sind mehrere Computer 100-103 mit einem Netzwerk 110 in solcher Weise verbunden, daß Programme auf den jeweiligen Computern in Zusammenwirkung miteinander ab­ laufen. Während im System von Fig. 1 nur vier miteinander verbundene Computer dargestellt sind, kann zum Aufbauen ei­ nes Systems eine Anzahl von Computern verwendet werden, die größer oder kleiner ist als diese Zahl. Das Netzwerk 110 kann einen Übertragungsbus, optische Fasern, ein Kreuzschie­ nenschalter-Vermittlungssystem usw. enthalten. Programme auf den jeweiligen Computern stehen über das Netzwerk 110 mit­ einander in Verbindung. Einzelheiten zur internen Konfigura­ tion sind nur für die Computer 100, 101 dargestellt. Jeder der Computer umfaßt eine zentrale Verarbeitungseinheit 120, eine Hauptspeichereinheit 121, eine Eingabe/Ausgabe-Steuer­ einheit 122 usw., und empfängt und sendet Daten über einen internen Bus 125. Diese Computer können sich hinsichtlich des Funktionsvermögens der zentralen Verarbeitungseinheit 120 oder dergleichen voneinander unterscheiden. Die Eingabe/Ausgabe-Steuereinheit 122 in jedem Computer ist im allgemei­ nen mit einer externen Speichereinheit 123 und einem Termi­ nal 124 verbunden, um Daten von außen zu empfangen und nach außen zu senden. Die Hauptspeichereinheiten 121 enthalten Benutzerprogramme 130-136, Prioritätsschlangen 140, 141, Scheduler 142, 143, Prioritätswert-Umsetzeinrichtungen 144, 145 und Prioritätswert-Änderungseinrichtungen 146, 147, die alle durch die zentralen Verarbeitungseinheiten 120 der je­ weiligen Computer betrieben werden. Im allgemeinen ist jeder Computer mit seinem eigenen Betriebssystem versehen, um die Ausführungen von Programmen und andere Bedingungen im zuge­ hörigen Computer zu verwalten. Die Prioritätsschlange und der Scheduler sind häufig in einem Teil des Betriebssystems enthalten. In Fig. 1 ist die Beschreibung des Betriebssy­ stems weggelassen. Die Anzahl von Benutzerprogrammen und die Art ihrer Anordnung in den jeweiligen Computern können vom Benutzer beliebig festgelegt werden.
Wenn mehrere Programme miteinander zusammenwirkend in einem Mehrprozessor-Computersystem oder einem verteilten Computer­ system, wie in Fig. 1 dargestellt, laufen, werden die Benut­ zerprogramme in den jeweiligen Computern normalerweise in ihrer Verarbeitungsreihenfolge verwaltet, wie sie durch Rei­ henfolgeschlangen im Betriebssystem oder dergleichen angege­ ben ist. Jedoch kann sich die Bearbeitungsdringlichkeit von einem Benutzerprogramm zum anderen unterscheiden. Aus diesem Grund ist jedes Benutzerprogramm mit einem örtlichen Priori­ tätswert in jedem Computer in solcher Weise versehen, daß die Benutzerprogramme abhängig vom vorgegebenen Prioritäts­ wert in eine Schlange eingegeben werden, um die Reihenfolge der Ausführung dieser Benutzerprogramme zu verwalten. Die Prioritätsschlangen 140, 141 bilden die Schlangen für die jeweiligen Prioritätswerte in den Computern 100, 101. Bei dem in Fig. 1 dargestellten Ausführungsbeispiel ist angenom­ men, daß der Computer 100 Prioritätswerte im Bereich von 0- 255 hat, während der Computer 101 Prioritätswerte im Bereich von 0-127 hat. Für jeden der Prioritätswerte ist eine Schlange gebildet, mittels der die Scheduler 142, 143 das Programm bestimmen, das als nächstes auszuführen ist. Die Prioritätsschlangen bestehen aus Programmstrukturen (Bei­ spiele für eine Programmstruktur sind in Fig. 1 als Blöcke 160-166 dargestellt), von denen jede Information zu einem zugehörigen Benutzerprogramm enthält. Während Programmstruk­ turen für Programme D, E und F usw. in den Prioritätsschlan­ gen existieren, die von den Benutzerprogrammen 130-136 ab­ weichen, die in der Hauptspeichereinheit 131 liegen, liegen diese Programme nicht in der Hauptspeichereinheit 121 son­ dern in der externen Speichereinheit 123. Diese Programme D, E, F usw. können ausgeführt werden, nachdem ihnen zugeordne­ te, erforderliche Programmdaten von der externen Speicher­ einheit 123 in die Hauptspeichereinheit 121 überschrieben sind.
Um das verteilte Computersystem dazu auf zufordern, eine Ver­ arbeitung auszuführen, gibt jeder Benutzer dieses verteilten Computersystems an einen der Computer in diesem System die Anweisung, sein Benutzerprogramm neu abzuarbeiten, oder er­ gibt dem System die Anweisung, ein bereits vorhandenes Pro­ gramm abzuarbeiten, wozu er Daten über eine Eingabeeinrich­ tung eingibt. Jedes der Programme im verteilten Computersy­ stem führt seine Verarbeitung aus, während es nach Bedarf mit anderen Programmen in Verbindung steht, und es liefert die Ergebnisse an den Benutzer zurück, oder es zeigt sie auf dem Terminal eines der Computer an. Anders gesagt, ent­ spricht das Eingeben von Information in ein verteiltes Com­ putersystem dem Eingeben eines Programms in ein verteiltes Computersystem oder dem Eingeben von Daten für ein Programm über eine Eingabeeinrichtung wie ein Terminal oder derglei­ chen. Auch entspricht die Ausgabe aus dem verteilten Compu­ tersystem der Ausgabe von Ergebnissen eines Programms, wie vom verteilten Computersystem ausgeführt, als Anzeige auf einem Schirm eines Terminals oder dergleichen.
Die Scheduler 142, 143 bestimmen jeweils das als nächstes auszuführende Programm abhängig vom Inhalt der jeweiligen Prioritätsschlangen 140 bzw. 141. Bei diesem Ausführungsbei­ spiel beinhaltet die Prioritätsschlange 140 des Computers 100 ein Programm A (Benutzerprogramm 130) in einer Schlange für den Wert 0, und Programme B (Benutzerprogramm 131) und C (Benutzerprogramm 132) in einer Schlange für den Wert 1. In dieser Situation werden dann, wenn der Scheduler 142 so ausgebildet ist, daß er Programme ausgehend von einem sol­ chen mit kleinstem Prioritätswert ausführt, die Programme in der Reihenfolge A, B, C, D, E, F, . . . ausgeführt, abhängig von der so ausgebildeten Prioritätsschlange. Die Prioritäts­ schlangen 140, 141 und die Scheduler 142, 143 bilden norma­ lerweise einen Teil des Betriebssystems eines jeweiligen Computers. Die Vorgehensweise, wie die Reihenfolge zur Aus­ führung von Programmen bestimmt wird, kann sich von der oben angegebenen unterscheiden, und zwar abhängig vom Typ des verwendeten Betriebssystems. Das Ausführungsbeispiel wird nachfolgend unter der Annahme beschrieben, daß ein kleinerer Prioritätswert höhere Priorität anzeigt (d. h., daß ein Pro­ gramm mit kleinerem Prioritätswert früher ausgeführt wird).
Wie oben angegeben, können Programme mit verschiedenen Dringlichkeiten auf gleichmäßige Weise in ein und demselben Computer verwaltet werden, wenn jedem Programm ein Priori­ tätswert angesichts der Ausführungsreihenfolge für Programme zugeordnet wird. Jedoch sind die örtlichen Prioritätsschema­ ta nicht miteinander verträglich, und zwar wenn es um Compu­ ter mit verschiedenen Funktionsvermögen, Auslastungen und Typen geht. Um mit dieser Schwierigkeit fertig zu werden, führt dieses Ausführungsbeispiel die "Dringlichkeit" ein, bei der es sich um ein gemeinsames Konzept im gesamten ver­ teilten Computersystem handelt, um ein globales Prioritäts­ schema für das gesamte verteilte Computersystem einschließ­ lich mehrerer Computer mit voneinander verschiedenen Funk­ tionsvermögen, Auslastungen und Typen gleichmäßig zu verwal­ ten. Die Dringlichkeit kann als globales Prioritätsschema angesehen werden, das auf das gesamte verteilte Computersy­ stem anwendbar ist. Bei diesem Ausführungsbeispiel ist an­ genommen, daß die Dringlichkeit in einem Bereich 0-31 spe­ zifiziert werden kann. Einrichtungen bei diesem Ausführungs­ beispiel, die zum Einführen der Dringlichkeit dienen, sind die Prioritätswert-Umsetzeinrichtungen 144, 145 und der Prioritätswert-Änderungseinrichtungen 146, 147. Die Be­ schreibung des Ausführungsbeispiels geht nachfolgend unter der Annahme weiter, daß ein kleinerer Dringlichkeitswert ei­ nen höheren Dringlichkeitswert repräsentiert, ähnlich wie dies für den Prioritätswert angenommen ist.
Die Prioritätswert-Umsetzeinrichtungen 144, 145 sind Ein­ richtungen zum Umsetzen des Dringlichkeitswerts, bei dem es sich um einen gemeinsamen Datenwert im verteilten Computer­ system handelt, in einen örtlichen Prioritätswert, bei dem es sich um einen Datenwert handelt, wie er jedem Computer zu eigen ist und umgekehrt. Bei diesem Ausführungsbeispiel sind die Prioritätswert-Umsetzeinrichtungen 144, 145 mit Priori­ tätswert-Entsprechungstabellen 150, 151 versehen, die die Entsprechung zwischen dem Dringlichkeitswert (UR) und dem örtlichen Prioritätswert (PRI) in jedem Computer angeben. Aus Fig. 1 ist erkennbar, daß der Dringlichkeitswert im Com­ puter 100 dem Prioritätswert 0 oder 1 entspricht, und daß der Dringlichkeitswert 1 den Prioritätswerten 2-4 ent­ spricht, wohingegen im Computer 101, der schlechteres Funk­ tionsvermögen als der Computer 100 hat, der Dringlichkeits­ wert dem Prioritätswert 0 entspricht, während der Dringlich­ keitswert 1 dem Prioritätswert 1 entspricht. Auf diese Weise ist im Computer 101 demselben Dringlichkeitswert ein höherer Prioritätswert zugeordnet als im Computer 100. Dies stellt sicher, daß ein Programm mit derselben Dringlichkeit in den beiden Computern 100, 101 mit verschiedenen Funktionsvermö­ gen im wesentlichen mit derselben Geschwindigkeit ausgeführt werden kann. Die Inhalte der Prioritätswert-Entsprechungsta­ bellen 150, 151 können abhängig von den Auslastungswerten der jeweiligen Computer so modifiziert werden, daß derselbe Dringlichkeitswert in einem stark ausgelasteten Computer ei­ nem höheren Prioritätswert entspricht als in einem schwach ausgelasteten Computer. Die Prioritätswert-Umsetzeinrich­ tungen 144, 145 benutzen die jeweiligen Prioritätswert-Ent­ sprechungstabellen 150, 151, um einen vorgegebenen Dring­ lichkeitswert in einen entsprechenden Prioritätswert für die zugeordneten Computer 100, 101 umzusetzen, und um einen Prioritätswert in einen entsprechenden Dringlichkeitswert umzusetzen.
Während die Prioritätswert-Entsprechungstabellen 150, 151 auf Grundlage der in Fig. 1 dargestellten Feldstrukturen er­ zeugt werden können, kann ein Dringlichkeitswert mehreren Prioritätswerten entsprechen, so daß die Umsetzung von einem Dringlichkeitswert in einen Prioritätswert oder mehrere nicht auf wirkungsvolle Weise ausgeführt werden kann. Fig. 2 zeigt ein Beispiel für eine in der Sprache C geschriebene Datenstruktur für die Prioritätswert-Entsprechungstabelle 150, die dazu dient, die Umsetzung zwischen Dringlichkeits­ werten und Prioritätswerten wirkungsvoll auszuführen. Um die Umsetzung zwischen Dringlichkeitswerten und Prioritätswerten zu erleichtern, besteht die Prioritätswert-Entsprechungsta­ belle aus einer Kombination zweier Felder. In dieser Priori­ tätswert-Entsprechungstabelle 150 kann, da ein Prioritäts­ wert in eindeutiger Weise in einen entsprechenden Dringlich­ keitswert umgesetzt werden kann, ein Feld 170 verwendet wer­ den. Da jedoch ein Dringlichkeitswert in mehrere entspre­ chende Prioritätswerte umgesetzt werden kann, ist zum Ab­ speichern des kleinsten Prioritätswerts und des größten Prioritätswerts für jeden Dringlichkeitswert eine andere Da­ tenstruktur verwendet (Feld 171). Ein Wert, wie er von jedem Feldelement angegeben wird, ist in einer Datenstruktur 172 dargestellt. Wenn diese Datenstruktur verwendet wird, kann die Umsetzung zwischen einem Dringlichkeitswert u und einem Prioritätswert p auf die folgende Weise erfolgen:
  • (1) Umsetzung von einem Prioritätswert in einen Dringlich­ keitswert: u-to_urgency [p].
  • (2) Umsetzung von einem Dringlichkeitswert in einem Priori­ tätswert: p-to_ any integer value between priority [u]
    .start and topriority [u]. end
Bei diesem Ausführungsbeispiel ist die Beziehung zwischen einem Dringlichkeitswert und einem Prioritätswert auf eine Einfach-Mehrfach-Beziehung fixiert. Daher kann, während die Umsetzung von einem Prioritätswert in einen Dringlichkeits­ wert durch ein einfaches Feld realisiert ist, die Entspre­ chung zwischen einem Dringlichkeitswert und einem Priori­ tätswert in einer Einfach-Mehrfach-Beziehung oder einer Mehrfach-Mehrfach-Beziehung wiedergegeben sein, wenn der Be­ reich der Dringlichkeitswerte größer ist als der bei diesem Ausführungsbeispiel dargestellte Bereich. Wenn eine Mehr­ fach-Mehrfach-Beziehung verwendet wird, muß das Feld 170 in eine ähnliche Struktur umgewandelt werden, wie sie das Feld 171 aufweist. Bei einer Einfach-Mehrfach-Beziehung kann eine Prioritätswert-Entsprechungstabelle für diesen Fall dadurch realisiert werden, daß das Feld 170 durch das Feld 171 er­ setzt wird. Es ist zu beachten, daß zum Ändern des Bereichs der Prioritätswerte oder des Bereichs der Dringlichkeitswer­ te die Anzahlen der Elemente in den Feldern 170, 171 verän­ dert werden müssen.
Während beim in den Fig. 1 und 2 dargestellten Beispiel die Prioritätswert-Entsprechungstabellen 150, 151 dazu verwendet werden, einen Dringlichkeitswert in einen Prioritätswert um­ zusetzen, und umgekehrt, kann die Umsetzung auch ohne Ver­ wendung derartiger Prioritätswert-Entsprechungstabellen aus­ geführt werden. Fig. 3 zeigt den Inhalt einer Prioritäts­ wert-Umsetzeinrichtung 144, die keine Prioritätswert-Ent­ sprechungstabelle verwendet. Der Ablauf ist in der Sprache C geschrieben. Ein Block 180 entspricht einem Umsetzablauf von einem Dringlichkeitswert in einen Prioritätswert, und ein Block 181 entspricht einem Umsetzablauf von einem Priori­ tätswert in einen Dringlichkeitswert. Während dieses Ausfüh­ rungsbeispiel so ausgewählt ist, daß optimale Gleichung eine solche verwendet wird, die ausdrückt, daß ein Prioritätswert proportional zum Quadrat eines Dringlichkeitswerts ist, ist es auch möglich, empirisch eine optimale Beziehung für jeden Computer im verteilten Computersystem herzuleiten und die hergeleitete Beziehung in Form einer Gleichung erster Ord­ nung oder einer Gleichung höherer Ordnung wiederzugeben. Dieses Ausführungsbeispiel verwendet das Computerfunktions­ vermögen pro Einheitsauslastung als Proportionalitätskoeffi­ zient. Auch ist es bei diesem Ausführungsbeispiel geschickt, daß eine Auslastung durch eine Anzahl von Programmen in der Prioritätsschlange (die Anzahl ausführbarer Programme) und das Computerfunktionsvermögen, d. h. das CPU(zentrale Verar­ beitungseinheit)-Funktionsvermögen in der Einheit von 10 MIPS (1 MIPS repräsentiert das Funktionsvermögen einer CPU, die dazu in der Lage ist, eine Million Anweisungen pro Se­ kunde auszuführen) repräsentiert ist. Unter Verwendung die­ ses Umsetzablaufs- kann ein niedrigerer Prioritätsrang (ein höherer Prioritätswert) für denselben Dringlichkeitswert eingestellt werden, wenn das CPU-Funktionsvermögen pro Pro­ gramm höher ist, während ein höherer Prioritätsrang (ein kleinerer Prioritätswert) für denselben Dringlichkeitswert eingestellt werden kann, wenn das CPU-Funktionsvermögen pro Programm kleiner ist.
Die Prioritätsrang-Änderungseinrichtungen 146, 147 in Fig. 1 ändern jeweils den Prioritätsrang jedes Programms abhängig von einem örtlichen Prioritätsschema im zugehörigen Computer 100, 101, wie durch die Prioritätsrang-Umsetzeinrichtungen 144 bzw. 145 berechnet. Z.B. verfügt in Fig. 1 ein Programm J (Benutzerprogramm 133) über einen Dringlichkeitswert 1 und einen Prioritätswert 4. Wenn angenommen wird, daß sich der Dringlichkeitswert dieses Programms J von 1 auf 0 ändert, setzt die Prioritätswert-Umsetzeinrichtung 144 den geänder­ ten Dringlichkeitswert in einen entsprechenden Prioritäts­ wert um, um den neuen Prioritätswert 0 (oder 1) zu erhalten. Die Prioritätswert-Änderungseinrichtung 146 verwendet diesen Wert, um den Prioritätswert des Benutzerprogramms auf 0 zu ändern. Gleichzeitig wird eine Programmstruktur 163 für das Programm J in die Schlange für den Wert 0 verlegt.
Die Prioritätswert-Umsetzeinrichtungen 144, 145 sowie die Prioritätswert-Änderungseinrichtungen 146, 147 sind beide Dienstprogramme, die in Zusammenwirkung mit einem Teil der jeweiligen Betriebssysteme oder allen arbeiten. Um diese Ab­ läufe, wie solche Dienstprogramme, aufzubauen, ist es erfor­ derlich, eine solche Form zu verwenden, daß die Prioritäts­ rang-Änderungseinrichtungen 146, 147 die jeweiligen Be­ triebssysteme dazu auffordern, den Prioritätswert eines Pro­ gramms zu ändern. Jedes der aufgeforderten Betriebssysteme ändert dann den Prioritätswert eines Programms und verlegt die Programmstruktur auf eine Schlange für den geänderten Prioritätswert.
Nachfolgend wird ein Verfahren zum Anfordern von Verarbei­ tung für Computer gestützt auf die Dringlichkeit erläutert, wobei der Prioritätswert-Umsetzablauf und der Prioritäts­ wert-Änderungsablauf verwendet werden, wie sie bei diesem Ausführungsbeispiel beschrieben sind. Um eine Verarbeitung zwischen Computern in einem verteilten Computer-Echtzeitsy­ stem anzufordern, kann die Systemarchitektur dadurch verein­ facht werden, daß ein Dringlichkeitswert angegeben wird, wie er für eine spezielle Verarbeitung gewünscht ist. Um diese Vorgehensweise zu verwenden, ermöglicht es die Erfindung, einem anfordernden Programm, einen Dringlichkeitswert zu spezifizieren, wenn es eine Verarbeitung anfordert. Fig. 4 zeigt ein Beispiel für ein Verfahren zum Spezifizieren eines Dringlichkeitswerts, geschrieben in der Sprache C, wobei ein Block 190 ein Verfahren zum Spezifizieren eines Dringlich­ keitswerts im ersten Argument einer Verarbeitungsanforderung repräsentiert, während ein Block 191 ein Verfahren zum Spe­ zifizieren eines Dringlichkeitswerts im letzten Argument ei­ ner Verarbeitungsanforderung repräsentiert. Übrigens muß das anfordernde Programm nicht direkt angeben, wie ein Dring­ lichkeitswert zu spezifizieren ist, sondern statt dessen können ein Compiler oder Übersetzer dazu verwendet werden, eine Übersetzung in die Formen vorzunehmen, wie sie durch die Blöcke 190, 191 repräsentiert sind.
Fig. 5 zeigt schematisch einen Verarbeitungsablauf zum Aus­ geben einer Verarbeitungsanforderung unter Verwendung des oben angegebenen Spezifizierverfahrens für den Dringlich­ keitswert. Elemente 100, 101, 110, 130-136, 140-147, 150-151 sowie 160-161 in Fig. 5 stimmen mit Elementen über­ ein, wie sie in Fig. 1 mit denselben Bezugszahlen gekenn­ zeichnet sind. Eine Veranschaulichung der Computer 102, 103 und Einzelheiten innerhalb der Computer sind in Fig. 5 weg­ gelassen. Dieses Ausführungsbeispiel zeigt einen Ablauf, wie er ausgeführt wird, wenn ein Benutzerprogramm 133 eine Ver­ arbeitungsanforderung an ein anderes Benutzerprogramm 136 ausgibt. Verbindungen, wie sie durch Pfeile 200-206 reprä­ sentiert sind, beschreiben den Ablauf der Verarbeitungs­ schritte. In Fig. 5 ist angenommen, daß Daten, die jeweils an einen eine Verbindung kennzeichnenden Pfeil geschrieben sind, wichtige Daten angeben, wie sie über diese Verbindung übertragen werden. Das Benutzerprogramm 133 hat den Priori­ tätswert 4 (Programmstruktur 163) in der Prioritätsschlange 140. Zunächst fordert das Benutzerprogramm 133 eine Umset­ zung von seinem Prioritätswert (4) in einen entsprechenden Dringlichkeitswert durch die Prioritätswert-Umsetzeinrich­ tung 144 auf (Verbindung 200). In Fig. 5 liefert die Priori­ tätswert-Umsetzeinrichtung 144, da der Prioritätswert (PRI) 4 im Computer 100 dem Dringlichkeitswert (UR) 1 entspricht, als Umsetzergebnis den Dringlichkeitswert 1 an das Benutzer­ programm 133 zurück (Verbindung 201). Dann fordert das Be­ nutzerprogramm 133 das Benutzerprogramm 136 im Computer 101 dazu auf, eine Verarbeitung unter Verwendung des empfangenen Dringlichkeitswerts 1 gemäß der Dringlichkeitswert-Spezifi­ zierform 190 oder 191 auszuführen (Verbindung 202). Der Com­ puter 101 muß, wenn er die Information zum Spezifizieren des Dringlichkeitswerts 1 empfängt, diesen Dringlichkeitswerts 1 in sein örtliches Prioritätsschema umsetzen und das Benut­ zerprogramm 136 mit demjenigen Prioritätswert ausführen, der sich aus der Umsetzung ergibt. Das Benutzerprogramm 136 for­ dert die Prioritätswert-Änderungseinrichtung 147 dazu auf, den spezifizierten Dringlichkeitswert 1 in einen entspre­ chenden Prioritätswert umzusetzen (Verbindung 203). Die Prioritätswert-Änderungseinrichtung 147 fordert die Priori­ tätswert-Umsetzeinrichtung 145 dazu auf, den Dringlichkeits­ wert 1 in einen entsprechenden Prioritätswert im Computer 101 umzusetzen (Verbindung 204). In Fig. 5 entspricht der Dring­ lichkeitswert 1 im Computer 101 dem Prioritätswert 1. Die Prioritätswert-Umsetzeinrichtung 145 versorgt die Priori­ täts-Änderungseinrichtung 147 mit dem Prioritätswert 1 als Umsetzergebnis, um darüber zu informieren, daß das Benutzer­ programm 136 mit dem Prioritätswert 1 ausgeführt werden muß (Verbindung 205). Schließlich verlegt die Prioritätswert-Än­ derungseinrichtung 147 eine Programmstruktur 166 (entspre­ chend dem Benutzerprogramm 136), das nun mit einer Schlange für den Prioritätswert 4 verbunden ist, auf eine Schlange für den Prioritätswert 1 innerhalb der Prioritätsschlange 141 (Verbindung 206).
Auf diese Weise können die örtlichen Prioritätswerte, wie sie einem anfordernden Programm und einem angeforderten Pro­ gramm, die in verschiedenen Computern liegen, zugehörige sind, gleichmäßig mittels des Dringlichkeitswerts verwaltet werden, der das gemeinsame Konzept im gesamten verteilten Computersystem ist. Wenn das eine Verarbeitung anfordernde Programm vorab seinen eigenen Dringlichkeitswert erkannt hat, ist keine Umsetzung vom örtlichen Prioritätswert im Computer auf den gemeinsamen Dringlichkeitswert erforderlich (Verbindungen 200, 201). Es ist auch möglich, eine Verarbei­ tungsanforderung mit einem Dringlichkeitswert auszugeben, der sich vom eigenen Dringlichkeitswert unterscheidet, und zwar einfach dadurch, daß direkt ein gewünschter Dringlich­ keitswert spezifiziert wird.
Während die in Fig. 1 dargestellten Prioritätswert-Entspre­ chungstabellen 150, 151 jeweils Zuordnungen angesichts des Funktionsvermögens der zugehörigen Computer 100 oder 101 vornehmen, hängt die Zeit für eine vollständige Verarbeitung tatsächlich von der Auslastung jedes Computers ab. Daher mo­ difiziert dieses Ausführungsbeispiel die Prioritätswert-Ent­ sprechungstabellen 150, 151 jedesmal dann, wenn die Ausla­ stung eines zugehörigen Computers verändert wird. Fig. 6 zeigt einen Verarbeitungsablauf 210 zum Verändern des In­ halts einer Prioritätswert-Entsprechungstabelle.
Bei diesem Ausführungsbeispiel wird der Inhalt einer Priori­ tätswert-Entsprechungstabelle modifiziert, wenn die Ausla­ stung eines Computers (die Anzahl ausführbarer Programme) um einen vorgegebenen Wert erhöht oder verringert wird. Der Un­ terschied der Auslastung gemäß der vorigen Prioritätswert- Entsprechungstabelle und gemäß der modifizierten Prioritäts­ wert-Entsprechungstabelle wird als "gesamte Auslastungsände­ rung" bezeichnet. Wenn sich die Auslastung ändert, wird die aktuelle Auslastungsänderung zur Gesamtauslastungsänderung addiert (Schritt 211). Dann wird ermittelt, ob die sich er­ gebende Gesamtauslastungsänderung größer als ein vorgegebe­ ner positiver Wert (Schritt 212) oder kleiner als ein vorge­ gebener negativer Wert (Schritt 213) wird. Wenn die Gesamt­ auslastungsänderung größer als der vorgegebene positive Wert ist, bedeutet dies, daß die Auslastung um den vorgegebenen Wert zugenommen hat, so daß eine Auslastungsgrenze in der Prioritätswert-Entsprechungstabelle nach oben verschoben wird (Schritt 214). Umgekehrt bedeutet es, wenn die Gesamt­ auslastungsänderung kleiner als der negative vorgegebene Wert ist, daß die Auslastung um den vorgegebenen Wert abge­ nommen hat, wodurch die Dringlichkeitsgrenze in der Priori­ tätswert-Entsprechungstabelle nach unten verschoben wird (Schritt 215). Wenn die Inhalte der Prioritätswert-Entspre­ chungstabellen verändert werden, wird die Gesamtauslastungs­ änderung in einem abschließenden Schritt auf null gesetzt (Schritt 216). Dann wird die Gesamtauslastungsänderung er­ neut ausgehend von null aufsummiert.
Die Bedeutung, wie sie dem Verschieben der Dringlichkeits­ grenze in der Prioritätswert-Entsprechungstabelle nach oben oder unten im Schritt 214 bzw. im Schritt 213 innewohnt, wird unter Bezugnahme auf Fig. 7 erläutert. Wenn ein Anstieg der Auslastung eine Verschiebung der Dringlichkeitsgrenze in der Prioritätswert-Entsprechungstabelle 150 nach oben her­ vorruft, wird eine modifizierte Prioritätswert-Entspre­ chungstabelle 220 hergeleitet. Aus der Tabelle 220 ist es erkennbar, daß einem Programm mit demselben Dringlichkeits­ wert ein höherer Prioritätswert zugeordnet werden kann, als es in der Prioritätswert-Entsprechungstabelle 150 vor der Veränderung der Fall war. Umgekehrt wird dann, wenn eine Verringerung der Auslastung eine Verschiebung der Dringlich­ keitsgrenze nach unten hervorruft, eine modifizierte Priori­ tätswert-Entsprechungstabelle 221 hergeleitet, wodurch einem Programm mit demselben Dringlichkeitswert ein niedrigerer Prioritätswert zugeordnet wird. Dadurch, daß die Dringlich­ keitsgrenze auf diese Weise nach oben oder unten verschoben wird, kann selbst dann, wenn ein Programm mit demselben Dringlichkeitswert durch Computer mit demselben Funktions­ vermögen (oder vom selben Computer) zu verarbeiten ist, das Programm mit höherem Prioritätswert ausgeführt werden, wenn der Computer stark ausgelastet ist, und mit niedrigerem Prioritätswert, wenn der Computer schwach ausgelastet ist. Auf diese Weise kann eine gleichmäßige Prioritätsverwaltung erzielt werden, wobei ferner Auslastungsänderungen in jedem Computer im verteilten Computersystem berücksichtigt werden.
Während bei diesem Ausführungsbeispiel die Dringlichkeits­ grenze um einen Prioritätswert nach oben oder unten ver­ schoben wird, kann das Ausmaß der Verschiebung abhängig vom Ausmaß der Auslastungsänderung verändert werden.
Nachfolgend wird ein Ablauf zum Verschieben der Dringlich­ keitsgrenze nach oben oder unten erläutert, wenn die Priori­ tätswert-Entsprechungstabelle verwendet wird, wie sie durch die in Fig. 2 dargestellten Datenstrukturen 170 und 171 de­ finiert ist. Fig. 8 zeigt Beispiele für den Ablauf, ge­ schrieben in der Sprache C. Ein Block 230 repräsentiert den Ablauf zum Verschieben der Dringlichkeitsgrenze nach oben. Da "to_riority [u].end" und "to_riority [u+1].start" in der Datenstruktur 171 die untere Dringlichkeitsgrenze für den Dringlichkeitswert u angeben, werden diese Parameter verringert, um die Dringlichkeitsgrenze nach oben zu ver­ schieben (Aussagen 240, 241). Die Prioritätswert-Entspre­ chungstabelle beinhaltet einen Bereich, in dem sich der Dringlichkeitswert, wie vom Prioritätswert aus gesehen, we­ gen der Verschiebung der Dringlichkeitsgrenze ändert. Z.B. ändert sich in Fig. 7 der dem Prioritätswert 1 entsprechende Dringlichkeitswert von 0 auf 1, und zwar wegen der Verschie­ bung der Dringlichkeitsgrenze nach oben. Aus diesem Grund muß der Inhalt des Felds 170 zum Umsetzen des Prioritäts­ werts in den Dringlichkeitswert abhängig von der Änderung des Dringlichkeitswerts modifiziert werden. Wenn die Dring­ lichkeitsgrenze nach oben geschoben wird, ist "to_riority [u+1].start" der Bereich, in dem sich der Dringlichkeits­ werts ändert, wie er vom Prioritätswert aus gesehen wird. Daher wird der Wert von "to_urgency [to_priority [u+1]. start]" zur Korrektur erhöht (Aussage 242).
Es ist hier zu beachten, daß eine Änderung der Prioritäts­ wert-Entsprechungstabelle zu einer Änderung des Dringlich­ keitswerts führen kann, wie er für ein Programm eingestellt ist, das bereits in der Prioritätsschlange vorliegt. Z.B. bewirkt in Fig. 7 ein nach oben Verschieben der Dringlich­ keitsgrenze eine Änderung des Dringlichkeitswerts eines Pro­ gramms mit dem Dringlichkeitswert 0 und dem Prioritätswert 1 von 0 auf 1. Im Ergebnis hat dieses Programm den Dringlich­ keitswert 1 und den Prioritätswert 1 als Attribute. Bei die­ sem Ausführungsbeispiel kann, da dieses Programm so korri­ giert wird, daß es den Dringlichkeitswert 0 aufweist, ein in der später beschriebenen Fig. 9 dargestellter Ablauf inner­ halb der Prioritätswert-Änderungseinrichtungen 146, 147 ver­ wendet werden. Der Ablauf von Fig. 9 arbeitet so, daß er den Prioritätswert eines Programms ändert, dessen Dringlich­ keitswert aufgrund einer Änderung der Prioritätswert-Ent­ sprechungstabelle geändert wird, so daß das Programm densel­ ben Dringlichkeitswert beibehält, den es vor dem Ändern der Prioritätswert-Entsprechungstabelle hatte. Bei oben genann­ ten Beispiel wird dann, wenn der Prioritätswert aller Pro­ gramme mit dem Prioritätswert 1 um 1 verringert wird, so daß diese Programme den Prioritätswert 0 haben, der Dringlich­ keitswert dieser Programme auf den Wert (Dringlichkeitswert 0) korrigiert, den sie vor der Änderung der Prioritätswert-Entsprechungstabelle hatten. Eine Aussage 243 ist eine Funk­ tion zum Aufrufen des in Fig. 9 dargestellten Verarbeitungs­ ablaufs aus den Prioritätswert-Umsetzeinrichtungen 144, 145. In der Aussage 243 ist angenommen, daß der Name der in Fig. 9 dargestellten Funktion "change_all_priority" ist und daß zu spezifizierende Argumente "to_riority [u+1].start" sind, wobei es sich um einen Bereich handelt, in dem sich die Ent­ sprechung zwischen dem Dringlichkeitswert und dem Priori­ tätswert geändert hat, mit einem Anstieg des Prioritätswerts (es ist zu beachten, daß in einer Aussage 243 das Inkrement des Prioritätswerts -1 ist, so daß eine Verringerung des Prioritätswerts vorgegeben ist).
Fig. 9 zeigt unter den Funktionen, die in den Prioritäts­ wert-Änderungseinrichtungen 146, 147 vorliegen, einen Verar­ beitungsablauf 250 zum Ändern des Prioritätswerts aller Pro­ gramme mit einem speziellen Prioritätswert auf einen anderen Wert. Zunächst ruft der Ablauf 250 eine einem speziellen Prioritätswert entsprechende Schlange aus der Prioritäts­ schlange 140 oder 141 ab (Schritt 251) und untersucht dann, ob die Schlange leer ist oder nicht (Schritt 252). Wenn die Schlange nicht leer ist, wird die Programmstruktur in der Schlange abgerufen (Schritt 253) und der Prioritätswert der Programme wird um einen vorgegebenen Wert inkrementiert (Schritt 254). Wenn der angegebene Wert negativ ist, wird der Prioritätswert verringert. Es ist zu beachten, daß bei diesem Beispiel ein verringerter Prioritätswert einen höhe­ ren Prioritätsrang bedeutet. Dann wird die abgerufene Pro­ grammstruktur an eine Schlange verlegt, die dem Prioritäts­ wert entspricht, der um den vorgegebenen Wert erhöht ist (Schritt 255). Wenn ein negativer Wert addiert wird, ver­ ringert sich der entsprechende Prioritätswert. So wird die von der Aussage 243 angeforderte Prioritätswertänderung aus­ geführt, wodurch der Prioritätswert von Programmen so geän­ dert werden kann, daß derselbe Dringlichkeitswert aufrecht­ erhalten bleibt.
Ähnlich wie im vorstehend genannten Fall repräsentiert ein Block 231 in Fig. 8 einen Ablauf zum Verschieben der Dring­ lichkeitsgrenze nach unten. Diese Verschiebung nach unten wird dadurch erhöht, daß "to_riority [u].end" und "to_prio­ rity [u+1].start" in der Datenstruktur 171 erhöht werden (Aussagen 244, 245). Wenn die Dringlichkeitsgrenze nach un­ ten verschoben wird, ist ein Bereich, in dem der Dringlich­ keitswert sich so ändert, wie vom Prioritätswert aus gese­ hen, "to_priority [u].end". Daher wird der Wert von "to_ur­ gency [to_priority [u].end]" zur Korrektur herabgesetzt (Aussage 246). Der Prioritätswert von Programmen kann durch eine Aussage 247 geändert werden, wie im Fall des Ablaufs 230. In diesem Fall werden "to_priority [u].end", wobei es sich um einen Bereich handelt, in dem sich die Entsprechung zwischen dem Dringlichkeitswert und dem Prioritätswert geän­ dert hat, und das Inkrement für den Prioritätswert (= 1) als Argumente spezifiziert.
Unter Bezugnahme auf die Fig. 1-9 wurden die Konfigura­ tion, der Betrieb und Abläufe beim ersten Ausführungsbei­ spiel beschrieben. Das erste Ausführungsbeispiel verwendet das Konzept der Dringlichkeit, um es einem verteilten Compu­ tersystem zu ermöglichen, örtliche Prioritätsschemata mehre­ rer Computer gleichmäßig zu verwalten, die sich hinsichtlich des Funktionsvermögens, der Auslastung und des Typs vonein­ ander unterscheiden. Wenn der Dringlichkeitswert für diese Computer vorgegeben wird, ist es zu erwarten, daß eine ange­ forderte Verarbeitung mit im wesentlichen derselben Ge­ schwindigkeit in jedem dieser Computer abgeschlossen wird. Auch ist es möglich, da der Dringlichkeitswert unter Berück­ sichtigung des Funktionsvermögens und der Auslastung von Computern in einen Prioritätswert umgesetzt wird, einen Um­ kehreffekt zu vermeiden, bei dem eine Verarbeitung mit nied­ rigerem Dringlichkeitswert vor einer Verarbeitung mit höhe­ rein Dringlichkeitswert abgeschlossen wird, und zwar selbst dann, wenn sie auf verschiedenen Computern abgearbeitet wer­ den. Zusammengefaßt gesagt, gewährleistet das erste Ausfüh­ rungsbeispiel dank des Konzepts der Dringlichkeit eine strengere Einhaltung von Echtzeiteigenschaften in einem ver­ teilten Computersystem.
Ferner kann bei diesem Ausführungsbeispiel, da die Inhalte der Prioritätswert-Entsprechungstabellen und der Prioritäts­ schlangen modifiziert werden können (wie in Verbindung mit den Fig. 6-9) beschrieben, das Prioritätsschema abhängig von sich dynamisch ändernden Auslastungen jeweiliger Compu­ ter verwaltet werden.
Ferner kann zusätzlich zu den oben genannten zwei Hauptef­ fekten dann, wenn eine Verarbeitung bei zwei oder mehr Com­ putern angefordert wird, der Dringlichkeitswert für die Ver­ arbeitung abhängig von der Wichtigkeit spezifiziert werden. Außerdem ist es nicht erforderlich, das Funktionsvermögen, die Auslastung und den Typ zusammenwirkender Computer zu kennen, um den Dringlichkeitswert für eine Verarbeitung an­ zugeben.
Während beim ersten Ausführungsbeispiel die Auslastung eines Computers durch die Anzahl ausführbarer Programme repräsen­ tiert ist, kann die Auslastung durch die Summe der Verarbei­ tungsmengen ausführbarer Programme und die vorausgesagte Verarbeitungszeit repräsentiert sein. Der letztgenannte Weg führt zu genaueren Auslastungsberechnungen für die jeweili­ gen Computer, wodurch strenger eingehaltene Echtzeiteigen­ schaften gewährleistet werden. Ferner kann, während der Prioritätswert unter Berücksichtigung sowohl der Auslastung als auch des Funktionsvermögens jedes Computers bestimmt wird, die Bestimmung nur gestützt auf eine dieser Angaben erfolgen. Insbesondere dann, wenn ein verteiltes Computersy­ stem aus jeweils denselben Computern besteht, muß nur die Auslastung berücksichtigt werden. Auf diese Weise kann die Umsetzung zwischen Dringlichkeitswerten und Prioritätswerten auf wirkungsvolle Weise ausgeführt werden.
Nachfolgend wird die Konfiguration eines verteilten Compu­ tersystems gemäß einem zweiten Ausführungsbeispiel der Er­ findung unter Bezugnahme auf Fig. 10 erläutert. Das in Fig. 10 dargestellte zweite Ausführungsbeispiel zeichnet sich durch eine Prioritätswert-Umsetzeinrichtung 260 zum Verwal­ ten der Prioritätswerte aller Computer in einem verteilten Computersystem aus. Die Elemente 100, 101, 110, 130-136, 140-143, 146, 147 sowie 160-166 sind mit denen iden­ tisch, die in Fig. 1 mit denselben Bezugszahlen bezeichnet sind. In Fig. 10 sind Veranschaulichungen der Computer 102, 103 und Einzelheiten innerhalb der Computer weggelassen. Die Prioritätswert-Umsetzeinrichtung 260 verfügt über eine Prio­ ritätswert-Entsprechungstabelle 270 zum Angeben der Entspre­ chung zwischen Prioritätswerten und Dringlichkeitswerten für alle Computer. Die Datenstruktur der Prioritätswert-Entspre­ chungstabelle 270 ist dergestalt, daß die in Fig. 2 darge­ stellten Datenstrukturen 170, 171 für die Anzahl von Compu­ tern im verteilten Computersystem vorbereitet sind. Daher werden Modifizierungen an der Prioritätswert-Entsprechungs­ tabelle 270 und entsprechende Änderungen der Prioritätswerte von Programmen mit denselben Abläufen ausgeführt, wie sie unter Bezugnahme auf die Fig. 6-9 erläutert wurden.
Fig. 10 beinhaltet auch eine Veranschaulichung eines Kon­ zepts eines Verarbeitungsablaufs zum Anfordern einer Verar­ beitung mit spezifiziertem Dringlichkeitswert. Bei diesem Ausführungsbeispiel ist angenommen, daß der Verarbeitungsab­ lauf Schritte repräsentiert, wie sie ausgeführt werden, wenn ein Benutzerprogramm 133 im Computer 100 eine Verarbeitungs­ anforderung an ein Benutzerprogramm 136 im Computer 101 aus­ gibt, wie es bei Fig. 5 der Fall ist. Zunächst fordert das Benutzerprogramm 133 die Prioritätswert-Umsetzeinrichtung 260 dazu auf, den Prioritätswert in einen entsprechenden Dringlichkeitswert umzusetzen (Verbindung 280). Wenn das Be­ nutzerprogramm 133 und die Prioritätswert-Umsetzeinrichtung 260 in voneinander verschiedenen Computern vorhanden sind, ist die Verbindung 280 eine solche zwischen verschiedenen Computern. Da die Prioritätswert-Entsprechungstabelle 270 anzeigt, daß der Prioritätswert 4 im Computer 100 dem Dring­ lichkeitswert 1 entspricht, liefert die Prioritätswert-Um­ setzeinrichtung 260 den Dringlichkeitswert 1 an das Benut­ zerprogramm 133 zurück (Verbindung 281). Das Benutzerpro­ gramm 133 gibt als nächstes eine Verarbeitungsanforderung an das Benutzerprogramm 136 aus, wobei es den empfangenen Dringlichkeitswert 1 verwendet (Verbindung 282). Der Compu­ ter 101 setzt dann, wenn er die Information zum Spezifizie­ ren des Dringlichkeitswerts 1 empfängt, diesen Dringlich­ keitswert 1 im Computer 101 in einen örtlichen Prioritäts­ wert um, und er weist das Benutzerprogramm 136 an, die ange­ forderte Verarbeitung mit dem hergeleiteten Prioritätswert auszuführen. Das Benutzerprogramm 136 fordert die Priori­ tätswert-Änderungseinrichtung 147 dazu auf, den spezifizier­ ten Dringlichkeitswert 1 in einen entsprechenden Prioritäts­ wert zu ändern (Verbindung 283). Die Prioritätswert-Ände­ rungseinrichtung 147 fordert die Prioritätswert-Umsetzein­ richtung 260 dazu auf, den spezifizierten Dringlichkeitswert 1 in einen entsprechenden Prioritätswert umzusetzen (Verbin­ dung 284). Bei diesem Ausführungsbeispiel entspricht der Dringlichkeitswert 1 im Computer 101 dem Prioritätswert 1. Die Prioritätswert-Umsetzeinrichtung 260 liefert den Priori­ tätswert 1 als Umsetzungsergebnis an die Prioritätswert-Än­ derungseinrichtung 147 zurück, um darüber zu informieren, daß das Benutzerprogramm 136 mit dem Prioritätswert 1 ausge­ führt werden muß (Verbindung 285). Da das Benutzerprogramm 136 und die Prioritätswert-Umsetzeinrichtung 260 in vonein­ ander verschiedenen Computern liegen, sind die Verbindungen 284, 285 solche zwischen verschiedenen Computern. Schließ­ lich verlegt die Prioritätswert-Änderungseinrichtung 147 ei­ ne Programmstruktur 166 in einer Prioritätsschlange 141 in eine Schlange für den Prioritätswert 1 (Verbindung 286).
Es ist zu beachten, daß dann, wenn das Verarbeitungsanfor­ derungsprogramm zuvor seinen eigenen Dringlichkeitswert er­ kannt hat, eine Umsetzung vom örtlichen Prioritätswert im Computer, in dem das Programm liegt, auf einen gemeinsamen Dringlichkeitswert (Verbindungen 280, 281) nicht erforder­ lich ist, wie im Fall von Fig. 5. Es ist auch möglich, daß ein Programm eine Verarbeitungsanforderung mit einem Dring­ lichkeitswert ausgibt, der sich vom eigenen Dringlichkeits­ wert unterscheidet, und zwar einfach durch direktes Spezifi­ zieren eines speziellen Dringlichkeitswerts.
Das vorstehend erläuterte zweite Ausführungsbeispiel ent­ spricht der Prioritätswert-Umsetzeinrichtung beim ersten Ausführungsbeispiel, wie es in Verbindung mit den Fig. 1-9 beschrieben wurde, mit einer gemeinsamen Anordnung in einem einzelnen Computer, weswegen der Vorteil besteht, daß die Prioritätswert-Entsprechungstabelle extrem einfach verwaltet werden kann, zusätzlich zu den Wirkungen, die beim ersten Ausführungsbeispiel vorliegen. Die Konfiguration des zweiten Ausführungsbeispiels ist für ein Konzept geeignet, bei dem ein Computer mit hohem Funktionsvermögen und hoher Zuverläs­ sigkeit in einem verteilten Computersystem vorhanden ist, um das gesamte System zu verwalten, so daß die Verarbeitungs­ einrichtungen, die mit der Prioritätswertverwaltung in Be­ ziehung stehen, gemeinsam in diesem Computer liegen.
Nachfolgend wird ein drittes Ausführungsbeispiel der Erfin­ dung beschrieben. Innerhalb eines verteilten Computersystems ist die Aufteilung derselben Menge an Programmen auf jewei­ lige Computer zum gleichen Auslasten derselben auch von Nut­ zen, um Echtzeiteigenschafte 99999 00070 552 001000280000000200012000285919988800040 0002019513922 00004 99880n sicherzustellen. Wenn jedoch die gleiche Anzahl von Programmen auf alle zur Verfügung stehenden Computer verteilt wird, kann nicht gesagt werden, daß die Computermittel wirkungsvoll genutzt sind, und zwar wenn eilige Programme in einem Computer konzentriert sind und einfache Programme als Ergebnis der Auslastungsvertei­ lung in einem anderen Computer konzentriert sind. Auch führt die Konzentration eiliger Programme in einem Computer zu ei­ ner Verzögerung der Verarbeitung im Computer, wodurch keine Echtzeiteigenschaften sichergestellt werden können. Die Er­ findung erzielt jedoch eine Auslastungsverteilung abhängig von der Wichtigkeit jedes Programms, und zwar unter Verwen­ dung der Dringlichkeit. Fig. 1 zeigt den Aufbau eines ver­ teilten Computersystems gemäß einem dritten Ausführungsbei­ spiel zum Ausführen einer solchen Auslastungsverteilung. Die Elemente 100-103, 110, 130-136, 140-143, 146, 147 so­ wie 160-166 in Fig. 11 sind mit denjenigen Elementen iden­ tisch, die in Fig. 1 mit denselben Bezugszahlen gekennzeich­ net sind, während eine Prioritätswert-Umsetzeinrichtung 260 und eine Prioritätswert-Entsprechungstabelle 270 mit den in Fig. 10 dargestellten identisch sind. Die Betriebsabläufe in diesen Elementen in Fig. 11 sind ebenfalls ähnlich zu denen der Gegenstücke in den Fig. 1 und 10. Ein Benutzerprogramm 137 wie auch Benutzerprogramme 130-136 liegen in der Hauptspeichereinheit eines Computers 101, so daß das Benut­ zerprogramm 137 durch eine Programmstruktur 167 in einer Prioritätsschlange 140 verwaltet wird.
Programmausführungs- und Verschiebeeinrichtungen 290, 291, die dazu dienen, ein Programm zu starten bzw. ein Programm vom zugehörigen Computer zu einem anderen zu verschieben, sind normalerweise als Funktionen der Betriebssysteme der jeweiligen Computer vorhanden. Der Start eines Programms beinhaltet das Erzeugen einer Programmstruktur für das neu auszuführende Programm und das Einschreiben der Programm­ struktur in die Prioritätsschlange 140 oder 141, wodurch das Programm in einen ausführbaren Zustand gebracht wird. Das Verschieben eines Programms beinhaltet das Verlegen eines Programms in einem ausführbaren Zustand in einem Computer in einen anderen Computer und das Überführen des verlegten Programms in ausführbaren Zustand im Zielcomputer. Diese Funktion wird auch als "Prozeßverlegung" bezeichnet, die häufig als Funktion eines verteilten Betriebssystems vor­ handen ist.
Ein Computerinformationsbereich 300 besteht aus einer Compu­ terauslastung-Informationstabelle 302 und einer Computer­ funktionsvermögen-Informationstabelle 304. Die Computeraus­ lastung-Informationstabelle 302 beinhaltet Auslastungswerte für jeweilige Computer, d. h. die Anzahl von Programmen, wie sie von den jeweiligen Computern für jeden Dringlichkeits­ wert auszuführen sind. Z.B. ist es aus Fig. 11 erkennbar, daß gemäß der aktuellen Auslastung der Computer 100 drei Programme mit dem Dringlichkeitswert 0, acht Programme mit dem Dringlichkeitswert 1, sieben Programme mit dem Dring­ lichkeitswert 2 usw. beinhaltet, während gemäß der aktuellen Auslastung der Computer 101 ein Programm mit dem Dringlich­ keitswert 0, ein Programm mit dem Dringlichkeitswert 1, zwei Programme mit dem Dringlichkeitswert 2 usw. beinhaltet. Die Computerfunktionsvermögen-Informationstabelle 304 speichert Angaben zu den Funktionsvermögen der jeweiligen Computer. Bei diesem Ausführungsbeispiel ist das Funktionsvermögen durch einen Zahlenwert gekennzeichnet, wobei z. B. 10 MIPS dem Wert 1 entsprechen. Das Funktionsvermögens des Computers 100 ist 10, und das Funktionsvermögen des Computers 101 ist gemäß dieser Wertezuordnung 3. Die Programmausführungsein­ richtung 209 und die Programmverschiebeeinrichtung 291 geben nach dem Starten oder Verschieben eines Programms Änderungen wieder, wie sie wegen ihrer Abläufe möglicherweise für die Computerauslastung-Informationstabelle 302 vorliegen. Da­ durch kann die Computerauslastung-Informationstabelle 302 jederzeit den Auslastungszustand des gesamten verteilten Computersystems korrekt angeben.
Eine Programmverschiebung-Bestimmungseinrichtung 292 be­ stimmt aus der Computerauslastung-Informationstabelle 302 im Computerinformationsbereich 300, ob die jeweiligen Computer abhängig von ihren Funktionsvermögen gleich ausgelastet sind. Wenn die Auslastung nicht gleichmäßig verteilt ist, bestimmt die Einrichtung 292, ein Programm zu verschieben, um gleiche Verteilung der Auslastung zu erzielen. Bei diesem Ausführungsbeispiel ist angenommen, daß die Programmver­ schiebe-Bestimmungseinrichtung 292 periodisch, also mit re­ gelmäßigen Intervallen, gestartet wird. Eine Computeraus­ wahleinrichtung 294 bestimmt, welcher Computer der Ausfüh­ rung eines neu angeforderten Programms zugeordnet werden soll und welcher Computer als Ziel für ein zu verschiebendes Programm auszuwählen ist, was unter Bezugnahme auf die Com­ puterauslastung-Informationstabelle 302 und die Computer­ funktionsvermögen-Informationstabelle 304 im Computerinfor­ mationsbereich 300 erfolgt.
Der Betrieb dieses Ausführungsbeispiels wird unter Bezugnah­ me auf die Fig. 11-15 beschrieben. Zunächst wird der Vor­ gang erläutert, wenn ein Programm neu gestartet wird. Wenn ein Benutzer einen Befehl zum Spezifizieren eines Dateina­ mens eines ausführbaren Programms und dessen Dringlichkeits­ wert eingibt, analysiert das Betriebssystem den Befehl, und es fordert die Programmausführungseinrichtung 290 oder die Programmverschiebeeinrichtung 291 im Betriebssystem dazu auf, das Programm zu starten, wodurch das Starten des Pro­ gramms ermöglicht ist. Hier wird der Fall erläutert, daß ein Befehl zum Starten eines Programms mit dem Dringlichkeits­ wert 1 in den Computer 100 eingegeben wird und die Programm­ ausführungs- und Verschiebeeinrichtung 290 darauf anspre­ chend einen Vorgang ausführt, wie er dem Start eines Pro­ gramms zugeordnet ist.
Unter Bezugnahme auf das Flußdiagramm der Fig. 12 wird ein Verarbeitungsablauf 310 zum Starten eines Programms erläu­ tert. Zunächst fordert die Programmausführungs- und Ver­ schiebeeinrichtung 290 die Computerauswahleinrichtung 294 dazu auf, einen Auslastung/Funktionsvermögen-Wert im Be­ reich des Dringlichkeitswerts 0 bis zum Wert auszurechnen, wie er für das zu startende Programm vorgegeben ist, und zwar für alle Computer im verteilten Computersystem (Schritt 311). Der Auslastung/Funktionsvermögen-Wert wird dadurch berechnet, daß der Wert für die Auslastung eines Computers durch den Wert für dessen Funktionsvermögen geteilt wird. Bei diesem Ausführungsbeispiel wird die Anzahl der in der Prioritätsschlange in einem Computer eingetragenen aus führ­ baren Programme als Auslastungswert für den Computer verwen­ det. Die Berechnung wird dadurch ausgeführt, daß die in der Computerauslastung-Informationstabelle 302 und der Computer­ funktionsvermögen-Informationstabelle 304 im Computerinfor­ mationsbereich 300 abgespeicherten Werte ausgelesen werden. Fig. 13 zeigt die Auslastungsinformation, die Auslastungs­ werte und die Auslastung/Funktionsvermögen-Werte für die jeweiligen Computer, die sich in dem in Fig. 11 dargestell­ ten Zustand befinden. Die Computerauslastung-Informations­ tabelle 302 gibt die Anzahl ausführbarer Programme für jeden Dringlichkeitswert an. Die Auslastungswerttabelle 306 gibt die Anzahl ausführbarer Programme in jedem Bereich vom Dringlichkeitswert 0 bis zu einem speziellen Dringlichkeits­ wert (1, 2, 3, . . . 31) an, und die Auslastungs/Funkionsver­ mögen-Wertetabelle 308 speichert Auslastung/Funktionsvermö­ gen-Werte ab, die dadurch gewonnen wurden, daß die Ausla­ stungswerte durch die jeweiligen Werte für das Computerfunk­ tionsvermögen geteilt wurden. Da die Erörterung nun für ei­ nen Fall abläuft, bei dem ein neu zu startendes Programm den Dringlichkeitswert 1 hat, wird der Auslastung/Funktionsver­ mögen-Wert für den Bereich 0-1 der Dringlichkeitswerte zu 1,10 für den Computer 100 und zu 0,67 für den Computer 101 berechnet.
Es wird erneut auf Fig. 12 Bezug genommen, gemäß der die Computerauswahleinrichtung 294 als nächstes denjenigen Com­ puter mit dem kleinsten Auslastung/Funktionsvermögen-Wert als Computer auswählt, der der Ausführung des zu startenden Programms zugeordnet wird (Schritt 312). Obwohl in Fig. 13 die Auslastung/Funktionsvermögen-Werte für mit 102 und hö­ heren Bezugszahlen gekennzeichnete Computer weggelassen ist, sei angenommen, daß der Auslastung/Funktionsvermögen-Wert für den Computer 101, der 0,67 ist, der kleinste Wert ist, weswegen dieser Computer 101 ausgewählt wird. Schließlich führt die Programmausführungs- und Verschiebeeinrichtung 290 einen Vorgang aus, der den ausgewählten Computer dazu an­ weist, das Programm zu starten (Schritt 313). Dieser Vorgang erfolgt auf solche Weise, daß die Programmausführungs- und Verschiebeeinrichtung des Computers, der mit dem Programm­ start begonnen hat, die Programmausführungs- und Verschiebe­ einrichtung des ausgewählten Computers dazu auffordert, das Programm in ausführbaren Zustand zu bringen. Bei diesem Bei­ spiel fordert die Programmausführungs- und Verschiebeein­ richtung 291 des Computers 100 die Programmausführungs- und Verschiebeeinrichtung 191 im Computer 101 dazu auf, das Pro­ gramm in ausführbaren Zustand zu bringen.
Nachfolgend erfolgt eine Erläuterung hinsichtlich des Be­ triebs zum Verschieben eines ausführbaren Programms. Bei diesem Ausführungsbeispiel wird die Programmverschiebe-Be­ stimmungseinrichtung 292 periodisch gestartet, um zu über­ prüfen, ob die Auslastung gleichmäßig auf die jeweiligen Computer abhängig von ihren Funktionsvermögen verteilt ist. Wenn die Verteilung nicht gleichmäßig erfolgt ist, bestimmt die Programmverschiebe-Bestimmungseinrichtung 292 die Ver­ schiebung eines Programms, um zu einer gleichmäßigen Vertei­ lung der Auslastung zu kommen, und dann fordert sie die Pro­ grammausführungs- und Verschiebeeinrichtung 290 dazu auf, ein Programm zu verschieben. Die Programmausführungs- und Verschiebeeinrichtung 290 fordert ihrerseits die Computer­ auswahleinrichtung 294 dazu auf, einen Zielcomputer auszu­ wählen, und sie führt einen Vorgang aus, der der Verschie­ bung eines Programms zugeordnet ist, und zwar in Zusammen­ wirkung mit der Programmausführungs- und Verschiebeeinrich­ tung des ausgewählten Zielcomputers. Bei diesem Ausführungs­ beispiel wird der oben genannte Auslastung/Funktionsvermö­ gen-Wert dazu verwendet, zu bestimmen, ob die Auslastungen der jeweiligen Computer unter Berücksichtigung ihrer Funk­ tionsvermögen gleich verteilt sind.
Unter Bezugnahme auf das Flußdiagramm von Fig. 14 wird ein Verarbeitungsablauf 320 zum Verschieben eines Programms er­ läutert. Zunächst setzt die Programmverschiebe-Bestimmungs­ einrichtung 292 eine Variable n, die den Bereich für den Dringlichkeitswert kennzeichnet, auf den Wert 0 (Schritt 321). Dann werden die Auslastung/Funktionsvermögen-Werte im Bereich der Dringlichkeitswerte 0-n für die jeweiligen Computer berechnet (Schritt 322). Wie oben beschrieben, sind die Auslastung/Funktionsvermögen-Werte, wie sie für den in Fig. 11 dargestellten Zustand berechnet werden, diejenigen, die als Auslastung/Funktionsvermögen-Werte in der Tabelle 308 in Fig. 11 dargestellt sind. Danach wird die Differenz D zwischen dem größten Auslastung/Funktionsvermögen-Wert und dem kleinsten Auslastung/Funktionsvermögen-Wert für alle Computer innerhalb des spezifizierten Bereichs der Dring­ lichkeitswerte berechnet (Verarbeitung 323). Obwohl die Aus­ lastung/Funktionsvermögen-Werte für die mit der Bezugszahl 102 und höheren Bezugszahlen gekennzeichneten Computer in Fig. 13 weggelassen sind, wird angenommen, daß der Last/Funktionsvermögen-Wert für den Computer 101, der 0,33 ist, der größte ist, und daß der Last/Funktionsvermögen-Wert für den Computer 100, der 0,30 ist, der kleinste ist, wenn n den Wert 0 hat, und demgemäß wird die Differenz D zu 0,03 be­ rechnet. Dann wird ermittelt, ob dieser Differenzwert D ei­ nen Schwellenwert Dt überschreitet (Schritt 324). Bei diesem Ausführungsbeispiel ist angenommen, daß der Schwellenwert Dt auf 0,3 gesetzt ist. Wenn der Differenzwert D den Schwellen­ wert Dt übersteigt, geht der Ablauf zu einem Schritt 325 weiter, andernfalls zu einem Schritt 328. Da bei diesem Bei­ spiel die Differenz D den Schwellenwert Dt nicht übersteigt, wenn n null ist, geht der Ablauf zum Schritt 328 weiter, in dem n um eins inkrementiert wird. Danach wird ermittelt, ob n den Wert 31 übersteigt (Schritt 329). Der Ablauf wird be­ endet, wenn n den Wert 31 überschreitet, oder er springt auf den Schritt 322 zurück, wenn dies nicht der Fall ist.
Da n nun auf eins gesetzt ist, kehrt der Ablauf zum Schritt 322 zurück, in dem die Auslastung/Funktionsvermögen-Werte für die jeweiligen Computer berechnet werden, und dann wird wieder der Differenzwert D im Schritt 323 berechnet. Obwohl die Auslastung/Funktionsvermögen-Werte der mit 102 und den anschließenden Bezugszahlen gekennzeichneten Computer in Fig. 13 weggelassen sind, ist angenommen, daß der Ausla­ stung/Funktionsvermögen-Wert des Computers 100 mit 1,10 der größte Wert ist und der Auslastung/Funktionsvermögen-Wert des Computers 101 von 0,67 der kleinste ist, wenn n den Wert eins hat, weswegen die Differenz D zu 0,34 berechnet wird. Daher überschreitet die Differenz D den Schwellenwert Dt, wenn n den Wert eins hat. Wenn die Differenz D den Schwel­ lenwert Dt überschreitet, entspricht dies der Ermittlung, daß die Auslastung nicht gleichmäßig verteilt ist, so daß ein zu verschiebendes Programm bestimmt wird (Schritt 325).
Bei diesem Ausführungsbeispiel wird das als letztes aus zu­ führende Programm, d. h. dasjenige, das in der Prioritäts­ schlange als letztes steht, aus den ausführbaren Programmen für den Dringlichkeitswert n im Computer mit dem größten Auslastung-Funktionsvermögen-Wert ausgewählt. Wie es in Fig. 11 dargestellt ist, wird dieses Programm K zur Verschiebung ausgewählt, da der dem Dringlichkeitswert 1 des Computers 100 entsprechende Prioritätswertbereich 2-4 ist und das als letztes auszuführende Programm das Programm K ist (Pro­ grammstruktur 167).
Wenn das zu verschiebende Programm bestimmt ist, fordert die Programmverschiebe-Bestimmungseinrichtung 292 die Programm­ ausführungs- und Verschiebeeinrichtung des Computers, der das zu verschiebende Programm enthält, dazu auf, den Vorgang der Verschiebung des ausgewählten Programms auszuführen. Bei diesem Beispiel führt die Programmausführungs- und Verschie­ beeinrichtung 290 des Computers 100 den Programmverschiebe­ vorgang aus. Zunächst fordert die Programmausführungs- und Verschiebeeinrichtung 290 die Computerauswahleinrichtung 294 dazu auf, einen Zielcomputer auszuwählen, an den das Pro­ gramm zu verschieben ist (Schritt 326 in Fig. 14). Ein als Ziel ausgewählter Computer ist bei diesem Ausführungsbei­ spiel derjenige Computer mit dem kleinsten Auslastung/Funk­ tionsvermögen-Wert. Daher wird der Computer 101 mit dem kleinsten Auslastung/Funktionsvermögen-Wert, wenn n den Wert eins hat, als Ziel für das Programm ausgewählt.
Wenn das Ziel bestimmt ist, führt die Programmausführungs- und Verschiebeeinrichtung den Programmverschiebevorgang aus (Schritt 327). Bei diesem Ausführungsbeispiel führt die Pro­ grammausführungs- und Verschiebeeinrichtung 290 des Compu­ ters 100 den Programmverschiebevorgang in Zusammenwirkung mit der Programmausführungs- und Verschiebeeinrichtung 291 des Computers 101 aus, der das Ziel für das Programm K ist.
Normalerweise ist die Programmausführungs- und Verschiebe­ einrichtung durch das Betriebssystem gebildet. Um ein Pro­ gramm zu verschieben, ist der folgende Vorgang erforderlich, um das Programm ausführbar zu machen, wenn der Zielcomputer 101 über keine ausführbare Datei für das zu verschiebende Programm verfügt. Vom Computer 100 wird eine ausführbare Da­ tei auf den Computer 101 verlegt, die Programmstruktur des verschobenen Programms K im Computer 100 wird aus der Prio­ ritätsschlange entnommen, und im Zielcomputer 101 wird eine Programmstruktur erzeugt und zur Prioritätsschlange hinzuge­ fügt. Nachdem das Programm verschoben ist, spiegelt sich der veränderte Auslastungszustand des Computers in der Computer­ auslastung-Informationstabelle 302 wider. Bei diesem Ausfüh­ rungsbeispiel wird die Computerauslastung-Informationstabel­ le 302 modifiziert, wonach die Anzahl ausführbarer Programme mit dem Dringlichkeitswert 1 für den Computer 100 sieben ist, dagegen zwei für den Computer 101, wie in Fig. 15 dar­ gestellt.
Nachdem das Programm wie oben angegeben verschoben ist, kehrt der Ablauf zum Schritt 322 zurück, um erneut die Aus­ lastung/Funktionsvermögen-Werte für die jeweiligen Computer zu berechnen. In diesem Fall werden die berechneten Ausla­ stungswerte und Auslastung/Funktionsvermögen-Werte so geän­ dert, wie es in den Tabellen 306 bzw. 308 in Fig. 15 darge­ stellt ist. Obwohl in Fig. 15 die berechneten Werte für die mit 102 und anschließenden Bezugszahlen gekennzeichneten Computer weggelassen sind, wird der Programmverschiebevor­ gang wie oben angegeben wiederholt, wenn der Differenzwert D immer noch den Schwellenwert Dt übersteigt, wenn n den Wert eins hat. Wenn der Differenzwert D so groß ist wie der Schwellenwert Dt, oder kleiner ist, geht der Ablauf zum Schritt 328 weiter.
Durch Wiederholen der vorstehend genannten Vorgänge, bis n den Wert 31 (den niedrigsten Dringlichkeitsrang) überschrei­ tet, wird eine Anzahl von Programmen verschoben, um eine gleichmäßige Verteilung der Auslastung für alle Dringlich­ keitswerte zu erzielen, d. h., um die Auslastung auf alle Computer abhängig von ihren Funktionsvermögen gleich zu ver­ teilen.
Während die vorstehend genannte Programmverschiebung eine solche ist, die von der Programmverschiebe-Bestimmungsein­ richtung für die Auslastungsverteilung gestartet wird, kann diese Programmverschiebung auch abhängig von einem vom Be­ nutzer eingegebenen Befehl ausgeführt werden. In diesem Fall wird der Dringlichkeitswert für ein zu verschiebendes Pro­ gramm auf n gesetzt und es werden die Schritte 326, 327 in Fig. 14 ausgeführt, wodurch das Programm auf den am gering­ sten ausgelasteten Computer verschoben werden kann.
Es wurde nun das verteilte Computersystem gemäß dem dritten Ausführungsbeispiel der Erfindung beschrieben. Dieses Aus­ führungsbeispiel ist dahingehend vorteilhaft, daß allen Com­ putern abhängig von ihren Funktionsvermögen Benutzerprogram­ me in gleicher Weise zugeordnet werden können, um die Ausla­ stung im gesamten verteilten Computersystem auf gleiche Wei­ se zu verteilen, so daß die Computermittel wirkungsvoll ge­ nutzt werden. Da das System dieses Ausführungsbeispiel die Gleichverteilung der Auslastung unter Berücksichtigung so­ wohl der Auslastungswerte als auch der Funktionsvermögen der jeweiligen Computer bewertet, kann die Auslastungsverteilung selbst dann klar abgeschätzt werden, wenn Differenzen zwi­ schen den Funktionsvermögen verschiedener Computer vorlie­ gen.
Auch können bei diesem Ausführungsbeispiel Benutzerprogramme gleichmäßig Computern abhängig von deren jeweiligen Funk­ tionsvermögen für jeden Dringlichkeitswert von Programmen zugeordnet werden, so daß Echtzeitverarbeitung mit gleichmä­ ßiger Dringlichkeit im gesamten verteilten Computersystem aufrechterhalten werden kann.
Insbesondere ist es möglich, da die Auslastungsverteilung unter Berücksichtigung des Dringlichkeitswerts für jedes Programm ausgeführt wird, zu verhindern, daß dringlich aus­ zuführende Programme auf einen Computer konzentriert werden, wodurch Echtzeiteigenschaften strenger eingehalten werden.
Ferner wird gemäß diesem Ausführungsbeispiel die Verwaltung der Auslastung im gesamten verteilten Computersystem durch einen einzelnen Computer auf konzentrierte Weise ausgeführt, so daß Bestimmungen für ein zu startendes Programm, die An­ gabe des Ziels für ein zu verschiebendes Programm usw. wir­ kungsvoll ausgeführt werden können, ohne daß Informations­ austausch mit anderen Computern erfolgt.
Unter Bezugnahme auf Fig. 16 wird nachfolgend ein viertes Ausführungsbeispiel der Erfindung beschrieben. Dieses Aus­ führungsbeispiel unterscheidet sich vom dritten Ausführungs­ beispiel dahingehend, daß Information hinsichtlich des Funk­ tionsvermögens und die Auslastung jedes Computers im Compu­ ter selbst aufbewahrt wird. Fig. 16 zeigt die Konfiguration eines verteilten Computersystems gemäß diesem Ausführungs­ beispiel. Elemente 100, 101, 110, 130-136, 140-147, 150, 151 sowie 160-166 in Fig. 16 sind identisch mit denjenigen Elementen in Fig. 1, die dort mit denselben Bezugszahlen ge­ kennzeichnet sind, wobei die entsprechenden Elemente ähnli­ che Vorgänge ausführen. Die Computer 102, 103 und Einzelhei­ ten innerhalb der Computer sind in Fig. 16 weggelassen. Fer­ ner sind die Elemente 137, 167, 290 und 291 in Fig. 16 iden­ tisch mit denjenigen Elementen, die in Fig. 11 mit denselben Bezugszahlen gekennzeichnet sind, wobei die entsprechenden Elemente ähnliche Vorgänge ausführen.
Computerinformationsbereiche 330, 331 beinhalten Computer­ auslastung-Informationstabellen 332 bzw. 333 sowie Computer­ funktionsvermögen-Informationstabellen 334 bzw. 335. Pro­ grammverschiebe-Bestimmungseinrichtungen 296, 297 bestimmen über wechselseitigen Informationsaustausch zwischen den Com­ putern, ob die Auslastungen der jeweiligen Computer abhängig von ihren Funktionsvermögen gleich verteilt sind. Wenn die Auslastung eines Computers, der eine Programmverschiebe-Be­ stimmungseinrichtung enthält, größer ist als die Auslastung anderer Computer, nimmt die Programmverschiebe-Bestimmungs­ einrichtung eine Bestimmung zum Verschieben eines Programms in den zugehörigen Computer vor, um zu gleichmäßiger Ausla­ stungsverteilung zu führen. Genauer gesagt, führen die Pro­ grammverschiebe-Bestimmungseinrichtungen 296, 297 diesen Vorgang unter Bezugnahme auf die Computerauslastung-Informa­ tionstabellen 332, 333 in den Computerinformationsbereichen 330 bzw. 331 aus. Wenn ein auszuführendes Programm neu ange­ fordert wird, bestimmen die Computerauswahleinrichtungen 298, 299 über wechselseitigen Informationsaustausch zwischen den Computern, welcher Computer der Ausführung des Programms zugeordnet wird. Auch dann, wenn ein Programm von einem Com­ puter zu einem anderen zu verschieben ist, bestimmen die Computerauswahleinrichtungen 298, 299, ebenfalls durch wech­ selseitigen Informationsaustausch zwischen den Computern, an welchen Computer das Programm zu verschieben ist. Die Compu­ terauswahleinrichtungen 298, 299 nehmen diese Bestimmungen unter Bezugnahme auf die Computerauslastung-Informationsta­ bellen 332, 333 und die Computerfunktionsvermögen-Informa­ tionstabellen 334, 335 in den Computerinformationsbereichen 330 bzw. 331 vor.
Bei diesem Ausführungsbeispiel stimmen sowohl der Vorgang zum neuen Starten eines Programms als auch der Vorgang zum Verschieben eines Programms im wesentlichen mit denjenigen des dritten Ausführungsbeispiels überein, wie sie in Verbin­ dung mit den Fig. 11-15 beschrieben wurden. Jedoch unter­ scheidet sich dieses Ausführungsbeispiel vom dritten Ausfüh­ rungsbeispiel im folgenden Punkt. Beim dritten Ausführungs­ beispiel werden die Auslastung/Funktionsvermögen-Werte für alle Computer im System durch die Programmverschiebe-Bestim­ mungseinrichtung 292 oder die Computerauswahleinrichtung 294 im einzelnen Computer 100 berechnet. Bei diesem Ausführungs­ beispiel werden dagegen die Auslastung/Funktionsvermögen-Werte der jeweiligen Computer 100, 101 durch die Programm­ verschiebe-Bestimmungseinrichtungen 296, 297 oder die Compu­ terauswahleinrichtungen 298, 299 in den jeweiligen Computern 100, 101 berechnet, und eine Computerauswahleinrichtung in einem Computer, der ein Programm startet, oder eine Progamm­ verschiebe-Bestimmungseinrichtung in einem Computer, der ein Programm verschiebt, sammelt die berechneten Auslastung/Funktionsvermögen-Werte, um das Programm zu bestimmen, das zu starten ist, oder um ein Ziel zu bestimmen, an das ein Programm zu verschieben ist, und zwar unter Bezugnahme auf die so gesammelten Auslastung/Funktionsvermögen-Werte.
Zusätzlich zu den Vorteilen der gleichmäßigen Auslastungs­ verteilung und der gewährleisteten Echtzeiteigenschaften, wie sie beim dritten Ausführungsbeispiel vorliegen, hat die­ ses Ausführungsbeispiel die folgenden Vorteile. Da die Aus­ lastungsverwaltung gleichmäßig auf die Computer verteilt ist, so daß dann, wenn ein Computer ein Programm startet oder verschiebt, die Computerauslastungsinformation nur in diesem Computer und in einem Computer verändert werden muß, in dem das gestartete Programm liegt, oder in einem Compu­ ter, an den das Programm verschoben wird, werden zunächst wirkungsvoll Zustandsänderungen der Computerauslastungsin­ formation wiedergegeben. Außerdem ist die Erweiterbarkeit des Systems verbessert, da die Computerinformationstabelle selbst dann nicht modifiziert werden muß, wenn ein Computer im verteilten Computersystem weggenommen wird oder ein neuer Computer hinzugefügt wird.
Es existieren Verschiedene Alternativen hinsichtlich des dritten und vierten Ausführungsbeispiels. Erstens kann, wäh­ rend bei diesen Ausführungsbeispielen die Auslastungsinfor­ mation, die Anzahl ausführbarer Programme anzeigt, zusammen mit der Dringlichkeit abgespeichert und ausgewertet wird, die als Kriterium zum Starten oder Verschieben eines Pro­ gramms verwendet wird, der örtliche Prioritätswert in jedem Computer abgespeichert werden und anstelle der Dringlichkeit als Kriterium ausgewertet werden. Durch diese Alternative muß jeder Computer bei der Verarbeitung nur den Prioritäts­ wert berücksichtigen, so daß die Umsetzung zwischen dem Prioritätswert und dem Dringlichkeitswert weggelassen wer­ den kann, wodurch eine wirkungsvolle Verwaltung erzielt wird. Auch in diesem Fall können die Prioritätswert-Umsetz­ einrichtung 260, die die Entsprechungsbeziehung zwischen Dringlichkeitskeiten und Prioritätswerten verwaltet, oder die Prioritätswert-Umsetzeinrichtungen 144, 145 mit einer Funktion zum Modifizieren der Entsprechungsbeziehung abhän­ gig von den Auslastungen der jeweiligen Computer versehen sein, wie für das erste Ausführungsbeispiel in Verbindung mit den Fig. 6-9 dargelegt, wodurch der Dringlichkeits- oder Prioritätswert abhängig von den Auslastungen der jewei­ ligen Computer eingestellt werden kann.
Während beim dritten und vierten Ausführungsbeispiel der Auslastungswert für einen Computer durch die Anzahl ausführ­ barer Programme wiedergegeben ist, kann der Auslastungswert auch durch die Summe von Verarbeitungsumfängen oder Voraus­ gesagten Verarbeitungszeiten für ausführbare Programme wie­ dergegeben sein. Der letztere Weg ist dahingehend von Vor­ teil, daß die Auslastungen jeweiliger Computer genauer abge­ schätzt sind, so daß eine vollständig gleiche Auslastungs­ verteilung erzielt werden kann.
Während im verteilten Computersystem gemäß dem dritten und vierten Ausführungsbeispiel ein Computer bestimmt wird, der ein Programm startet, oder auf den ein Programm verschoben wird, wobei sowohl die Auslastung als auch das Funktionsver­ mögen der jeweiligen Computer berücksichtigt wird, kann die Bestimmung nur unter Berücksichtigung einer dieser zwei Pa­ rameter erfolgen. Insbesondere in einem verteilten Computer­ system, bei dem die mehreren Computer vom selben Typ sind, muß nur die Auslastung der jeweiligen Computer berücksich­ tigt werden. Auf diese Weise kann die Bestimmung einfacher erfolgen, wodurch der Wirkungsgrad verbessert ist.
Ferner kann, während beim verteilten Computersystem gemäß dem dritten oder vierten Ausführungsbeispiel der Ausla­ stungswert eines Computers auf Grundlage der Anzahl ausführ­ barer Programme bewertet wird, wobei ein Dringlichkeitswert verwendet wird, der von null bis zum Dringlichkeitswert geht, wie er für das zu startende oder zu verschiebende Pro­ gramm vergeben ist, diese Auswertung auf Grundlage der An­ zahl ausführbarer Programme erfolgen, die denselben Dring­ lichkeitswert haben wie ein zu startendes oder zu verschie­ bendes Programm. Diese Auswertung ist dahingehend vorteil­ haft, daß die zum Berechnen des Auslastungswerts erforderli­ che Zeit verringert ist, so daß ein wirkungsvollerer Betrieb erzielbar ist.
Im verteilten Computersystem können Verarbeitungsanforderun­ gen auf solche Weise verteilt werden, daß mehrere Programme, die denselben Vorgang beinhalten, gleichzeitig auf mehreren Programmen ausgeführt werden. Herkömmlicherweise wird zum Verteilen von Verarbeitungsanforderungen ein Leerlaufpro­ gramm (ein Programm, das keinen Vorgang ausführt) aus meh­ reren Programmen ausgewählt, die denselben Vorgang ausfüh­ ren, und eine Verarbeitungsanforderung wird an dieses ausge­ wählte Programm ausgegeben. Wenn jedoch ein derartiges Pro­ grammauswahlverfahren in einem verteilten Computersystem mit Echtzeitverarbeitung realisiert wird, wird nicht immer ein Programm mit hohem Prioritätswert ausgewählt, oder es ist unbestimmt, ob der Betrieb mit einer Geschwindigkeit abge­ schlossen wird, wie sie von der anfordernden Partei er­ wünscht ist. Fig. 17 zeigt ein fünftes Ausführungsbeispiel der Erfindung zum Auswählen eines Programms mit einem Prio­ ritätswert, wie von einer anfordernden Partei gewünscht, aus mehreren gleichen Programmen, wobei dafür gesorgt wird, daß das ausgewählte Programm die angeforderte Verarbeitung aus­ führt. Dieses Ausführungsbeispiel schafft ein System zum gleichzeitigen Realisieren von Echtzeiteigenschaften zum Auswählen eines Programms, das mit einer gewünschten Ge­ schwindigkeit arbeitet, und eine gewünschte Gleichverteilung der Auslastung. Dieses Ausführungsbeispiel ist durch die vorstehend genannte Prioritätswert-Umsetzeinrichtung 260 und eine Programmauswahleinrichtung 410 realisiert, zum Bestim­ men eine Zielprogramms, an das eine Verarbeitungsanforderung auszugeben ist, wozu das Umsetzungsergebnis von der Priori­ tätswert-Umsetzeinrichtung 260 verwendet wird.
In Fig. 17 sind Elemente 100-103, 110 sowie 140-143 mit denjenigen Elementen identisch, die in Fig. 1 mit denselben Bezugszahlen gekennzeichnet sind. Einzelheiten zur Hardware der Computer 100, 101 sind weggelassen. Die Prioritätswert- Umsetzeinrichtung 260 und die Prioritätswert-Entsprechungs­ tabelle 270 verwenden denselben Ablauf und dieselbe Daten­ struktur, wie sie von ihren Gegenstücken in Fig. 10 verwen­ det werden. Die Benutzerprogramme 430-442 liegen in den Computern 100, 101. Unter ihnen werden die Benutzerprogramme 440-442 nicht von der Programmauswahleinrichtung 410 ver­ waltet. Zu Programmen, die nicht der Verwaltung durch die Programmauswahleinrichtung 410 unterliegen, gehören ein ein­ zigartiges Programm im verteilten Computersystem, ein Pro­ gramm, das für sich arbeitet, ohne eine Anforderungsanfrage zu empfangen usw. Jedes Benutzerprogramm erhält einen Prio­ ritätswert und es wird in Schlangen für jeweilige Priori­ tätswerte in Prioritätsschlangen 140, 141 verwaltet. Blöcke 450, 451, 454-458 sowie 460-462 repräsentierten Beispie­ le von Programmstrukturen für die jeweiligen Anwenderpro­ gramme, und sie verfügen über Information zu den Anwender­ programmen 430, 431, 434-438 bzw. 440-442. Programm­ strukturen, wie sie den Benutzerprogrammen 432, 433, 439 entsprechen, sind weggelassen. Bei der Erfindung werden meh­ rere Programme, die denselben Vorgang ausführen, gleichzei­ tig in mehreren Computern ausgeführt, und es wird ein Pro­ gramm, für das Verarbeitung angefordert wurde, abhängig vom Dringlichkeitswert jedes Programms bestimmt, wenn eine Ver­ arbeitungsanforderung ausgegeben wird. In Fig. 17 ist ange­ nommen, daß die Benutzerprogramme 431-433 Programme sind, die denselben Vorgang ausführen (Programmgruppe B), während die Benutzerprogramme 435, 436 (Programmgruppe D) sowie die Benutzerprogramme 438, 439 (Programmgruppe F) entsprechend Programme sind, die denselben Vorgang ausführen.
Die Programmauswahleinrichtung 410 verwaltet die Computer, auf denen diese Programme laufen, sowie die Prioritätswerte der Programme, um ein Programm mit optimalem Prioritätswert auszuwählen. Eine Programmort-Datenbank 420 ist als Verwal­ tungs-Datenstruktur vorhanden, die dazu verwendet wird, ein optimales Programm auszuwählen. Die Programmort-Datenbank 420 verwaltet Programmort-Informationsbereiche 470-479, von denen jeder dazu dient, die Kennung eines Computers ab­ zuspeichern, wobei auf diesen Computern Programme laufen, die denselben Vorgang ausführen, und sie speichern auch den Prioritätswert des jeweiligen Programms ab. Ein alternatives Verwaltungsverfahren, bei dem Information wie eine Kommuni­ kationsadresse für ein Programm usw. in den Programmort-In­ formationsbereichen abgespeichert sind, kann verwendet wer­ den, um eine Verarbeitungsanforderung zu vereinfachen. Unter den Programmort-Informationsbereichen 470-479 sind dieje­ nigen, die Information zu Programmen, die denselben Vorgang ausführen, zusammengefaßt, und sie werden in der Form einer Programmliste verwaltet, wie 421-426. Z.B. speichern die Programmort-Informationsbereiche 471-473 Ortsinformation zu Programmen, die denselben Vorgang ausführen (Programm­ gruppe B), so daß sie gemeinsam als Programmliste 422 abge­ speichert sind. Übrigens können, da die Programmgruppen A, C, E nur jeweils ein Programm beinhalten, diese Gruppen ohne ihre Programmlisten in der Programmort-Datenbank 420 verwal­ tet werden. Wenn der Prioritätswert irgendeines in der Pro­ grammauswahleinrichtung 410 verzeichneten Programms in ir­ gendeinem Computer geändert wird, wenn ein Programm aus ei­ nem bestimmten Computer gelöscht wird oder wenn ein zu regi­ strierendes Programm neu gestartet wird, wird diese Pro­ grammauswahleinrichtung 410 über die Kennung des Computers, der diesem Programm zugeordnet ist, und den Prioritätswert des Programms informiert, um den Inhalt der Programmort-Da­ tenbank 420 zu modifizieren.
Nachfolgend erfolgt eine Erläuterung für ein Verfahren zum Auswählen eines Verarbeitungsanforderungsziels auf Grundlage des Prioritätswerts unter Verwendung der Prioritätswert-Um­ setzeinrichtung 260 und der Programmauswahleinrichtung 410. Fig. 18 zeigt einen beispielhaften Ablauf für ein Programm­ auswahlverfahren. Bei diesem Ausführungsbeispiel ist ange­ nommen, daß ein Benutzerprogramm 440 ein Programm in der Programmgruppe D (Benutzerprogramm 435 oder 436) anfordert, das den Dringlichkeitswert 0 spezifiziert. Zunächst fragt das Benutzerprogramm 440 aus der Programmauswahleinrichtung 410 den Ort des Programms in der Programmgruppe D ab, das dem Dringlichkeitswert 0 entspricht (Verbindung 480). Da die Programmauswahleinrichtung 410 einen Computer, in dem jedes Programm läuft, und den Prioritätswert des Programms er­ kennt, jedoch nicht den Dringlichkeitswert des Programms, wird der spezifizierte Dringlichkeitswert 0 in unveränderter Weise an die Prioritätswert-Umsetzeinrichtung 260 weiterge­ geben (Verbindung 481). Im Ergebnis wird eine Prioritäts­ wertliste 490 entsprechend dem Dringlichkeitswert 0 an die Programmauswahleinrichtung 410 gegeben (Verbindung 482). Der Inhalt der Prioritätswertliste zeigt den Bereich örtlicher Prioritätswerte in jedem Computer, wie sie dem spezifizier­ ten Dringlichkeitswert entsprechen. Bei diesem Ausführungs­ beispiel wird die Programmauswahleinrichtung 410 mit einer Prioritätswertliste versorgt, die anzeigt, daß den Dring­ lichkeitswert 0 im Computer 100 die Prioritätswerte 0-1 entsprechen, und daß im Computer 101 der Prioritätswert 0 dazu gehört, was über die Verbindung 482 erfolgt. Die Pro­ grammauswahleinrichtung 410 vergleicht den Inhalt der Pro­ grammort-Datenbank 420 mit dem Inhalt der Prioritätswertli­ ste 490, um ein Programm zu bestimmen, an das eine Verarbei­ tungsanforderung ausgegeben wird. Bei dem in Fig. 18 darge­ stellten Beispiel handelt es sich nur um Programmortinforma­ tion 476 (entsprechend dem Benutzerprogramm 436), die dem Prioritätswert entspricht, wie er durch die Prioritätswert­ liste 490 in der Programmliste 424 für die Programmgruppe D spezifiziert ist. Die Programmauswahleinrichtung 410 be­ stimmt daher, daß das im Computer 101 liegende Benutzerpro­ gramm 436 das Ziel ist, an das die Verarbeitungsanforderung ausgegeben wird, und sie informiert das Benutzerprogramm 440 über diesem Bestimmungsergebnis (Verbindung 483). Das Benut­ zerprogramm 440 gibt eine Verarbeitungsanforderung an das Benutzerprogramm 436 aus, das über die Verbindung 483 dar­ über informiert wurde (Verbindung 484). Alternativ ist es möglich, ein Kommunikations-Zwischenschaltungsverfahren zu verwenden, bei dem die Programmauswahleinrichtung 410 Infor­ mation 480 vom Benutzerprogramm 440 direkt an das Benutzer­ programm 436 überträgt (Verbindung 485).
Fig. 19 zeigt ein Beispiel für einen Verarbeitungsablauf 500 durch die Programmauswahleinrichtung 410 zum Vergleichen der Programmlisten 421-426 mit der Prioritätswertliste 490 zum Auffinden eines Programms mit einem Prioritätswert, der dem spezifizierten Prioritätswertebereich entspricht. Zunächst greift die Programmauswahleinrichtung 410 auf den ersten Programmort-Informationsbereich zu, wie er durch die spezi­ fizierte Programmliste angegeben wird (Schritt 501). Wenn der Programmort-Informationsbereich leer ist (falls dies der Fall ist, wird dies in einem Schritt 502 ermittelt), erkennt die Programmauswahleinrichtung 410, das kein Programm vor­ handen ist, das einen Prioritätswert im spezifizierten Prio­ ritätswertebereich aufweist, und sie informiert das die die Verarbeitung anfordernde Programm über diese Tatsache (Schritt 503). Wenn der Programmort-Informationsbereich, auf den zugegriffen wurde, nicht leer ist, wird aus der Priori­ tätswertliste 490 ein Eintrag abgerufen, der mit dem Priori­ tätswert eines Computers übereinstimmt, wie im Programmort- Informationsbereich abgespeichert (Schritt 504). Wenn der im Programmort-Informationsbereich abgespeicherte Prioritäts­ wert im Prioritätswertebereich enthalten ist, wie im Schritt 504 abgerufen (falls dies der Fall ist, wird es in einem Schritt 505 ermittelt), informiert die Programmauswahlein­ richtung 410 das die Verarbeitung anfordernde Programm über ein Programm, das einen Prioritätswert innerhalb des Priori­ tätswertebereichs aufweist (Schritt 506). Wenn im Schritt 505 bestimmt wird, daß der Prioritätswert des Programms au­ ßerhalb des spezifizierten Bereichs liegt, greift die Pro­ grammauswahleinrichtung 410 auf den nächsten Programmort-In­ formationsbereich in der Programmliste zu (Schritt 507) und wiederholt dieselben Abläufe ab dem Schritt 502. Unter Ver­ wendung des Verarbeitungsablaufs 500 wird, bei dem in Fig. 18 dargestellten Beispiel, die erste Programmortinformation in einem Bereich 475 der Programmliste 424 für die Programm­ gruppe D zunächst mit der Prioritätswertliste 490 vergli­ chen, und dann wird die zweite Programmortinformation in ei­ nem Bereich 476 mit der Prioritätswertliste 490 verglichen. Da der im Programmort-Informationsbereich 476 abgespeicherte Prioritätswert in dem durch die Prioritätswertliste 490 spe­ zifizierten Bereich liegt, wird dieser ausgewählt und über das die Verarbeitung anfordernde Programm informiert.
Beim fünften Ausführungsbeispiel der Erfindung können mehre­ re Programme mit verschiedenen Prioritätswerten, die densel­ ben Vorgang ausführen, verteilt in mehreren Computern im verteilten Computersystem angeordnet werden, wodurch eine Auslastungsverteilung erzielt wird, d. h. eine Verteilung von Verarbeitungsanforderungen abhängig von der Dringlichkeit. Insbesondere ist eine Wirkung dieses Ausführungsbeispiels zu erwarten, da sich sogar Verarbeitungsanforderungen für den­ selben Inhalt der Verarbeitung häufig voneinander hinsicht­ lich der Dringlichkeit unterscheiden, und zwar abhängig vom anfordernden Programm.
Ferner kann gemäß dem fünften Ausführungsbeispiel durch ein Vorabeinstellen verschiedener Prioritätswerte für mehrere Programme, die denselben Vorgang ausführen, derselbe Verar­ beitungsinhalt mit verschiedenen Dringlichkeitswerten ange­ fordert werden, ohne daß die Prioritätswert-Änderungsein­ richtung verwendet wird, wodurch Echtzeiteigenschaften im selben Ausmaß wie beim ersten Ausführungsbeispiel sicherge­ stellt sind.
Fig. 20 zeigt ein sechstes Ausführungsbeispiel der Erfin­ dung, das ein verteiltes Computersystem zeigt, das eine Kom­ bination aus Prioritätswert-Umsetzeinrichtungen 144, 145, die verteilt in jedem Computer liegen, und eine Programmaus­ wahleinrichtung 510 zeigt, die Kennungen der Computer spei­ chert, auf denen Programme, die denselben Vorgang ausführen, laufen, und die auch die Dringlichkeitswerte der Programme speichert, um ein Programmanforderungsziel zu bestimmen. In den Fig. 20 sind die Elemente 100-103, 110, 140-145, 150 und 155 identisch mit denjenigen Elementen, die in Fig. 1 mit denselben Bezugszahlen gekennzeichnet sind. Einzelheiten zur Hardware der Computer sind weggelassen. Auch haben die Benutzerprogramme 430-442 und die Programmstrukturen 450-462 dieselben Inhalte wie in Fig. 17. Programmstrukturen, die den Benutzerprogrammen 432, 433, 439 entsprechen, sind weggelassen.
Eine Programmauswahleinrichtung 510 verwaltet Computer, auf denen die oben genannten Programme laufen, und sie verwaltet die Dringlichkeitswerte der Programme und bestimmt ein Pro­ gramm mit optimalem Dringlichkeitswert. Eine Programmort-Da­ tenbank 520 ist als Datenstruktur zur Verwaltung vorhanden, die dazu verwendet wird, ein optimales Programm auszuwählen. Die Programmort-Datenbank 520 verwaltet Programmort-Informa­ tionsbereiche 530-539, jeweils zum Einspeichern der Ken­ nung von Computern, auf denen jeweils Programme laufen, die denselben Vorgang ausführen, und sie speichern den Dring­ lichkeitswert für das Programm. Aus den Programmort-Informa­ tionsbereichen 530-539 werden diejenigen in der Form von Programmlisten 421-426 zusammengefaßt und verwaltet, die Information zu Programmen speichern, die denselben Vorgang ausführen. Während die Programmort-Informationsbereiche 470-479 in Fig. 17 jeweils die Kennung eines Computers, auf dem ein Programm läuft und den Prioritätswert des Programms speichern, speichern die Programmort-Informationsbereiche 530-539 in Fig. 20 jeweils die Kennung eines Computers, auf dem ein Programm läuft, sowie den Dringlichkeitswert des Programms, anstelle des Prioritätsrangs. Ein alternatives Verwaltungsverfahren, das Information wie Kommunikations­ adressen zu einem Programm usw. in den Programmort-Informa­ tionsbereichen speichert, kann verwendet werden, um eine Verarbeitungsanforderung zu vereinfachen. Wenn der Dring­ lichkeitswert irgendeines in der Programmauswahleinrichtung 510 registrierten Programms in irgendeinem Computer verän­ dert wird, wenn ein Programm aus einem zugehörigen Computer gelöscht wird oder ein zu registrierendes Programm neu ge­ startet wird, wird die Programmauswahleinrichtung 510 über die Kennung eines Computers, auf dem das betreffende Pro­ gramm läuft, und den Dringlichkeitswert des Programms infor­ miert, um den Inhalt der Programmlisten zu modifizieren. Auch dann, wenn sich die Entsprechungsbeziehung zwischen dem Prioritätswert und dem Dringlichkeitswert an irgendeinem Computer ändert, informieren die Prioritätswert-Umsetzein­ richtungen 144, 145 die Programmauswahleinrichtung 510 über Änderungen der entsprechenden Beziehungen, um derartige Än­ derungen in den Dringlichkeitswerten widerzuspiegeln, wie sie in den Programmort-Informationsbereichen 520-529 abge­ speichert sind.
Fig. 20 veranschaulicht auch einen Verarbeitungsablauf zum Auswählen eines Verarbeitungsanforderungsziels auf Grundlage der Dringlichkeit, unter Verwendung der Prioritätswert-Um­ setzeinrichtungen 144, 145 und der Programmauswahleinrich­ tung 510. Bei diesem Ausführungsbeispiel ist angenommen, daß ein Benutzerprogramm 440 eine Verarbeitungsanforderung an ein Programm in der Programmgruppe D (Benutzerprogramm 435 oder 436) ausgibt, wie im Fall von Fig. 18. Zunächst fragt das Benutzerprogramm 440 die Programmauswahleinrichtung 510 hinsichtlich des Orts eines Programms in der Programmgruppe D ab, das dem Dringlichkeitswert 0 entspricht (Verbindung 540). Da die Programmauswahleinrichtung 510 einen Computer, auf dem jedes Programm läuft, und den Dringlichkeitswerts des Programms erkennt, kann sie dann, wenn sie befragt wird, den Ort eines Programms herausfinden, das den Bedingungen genügt, daß es zur Programmgruppe D genügt und den Dring­ lichkeitswert 0 hat. Bei diesem Ausführungsbeispiel genügt nur die Programmortinformation 536 (entsprechend dem Benut­ zerprogramm 436) den obigen Bedingungen unter den zwei Pro­ grammen, die zur Programmgruppe D gehören. Die Programmaus­ wahleinrichtung 410 bestimmt daher, daß das im Computer 101 liegende Benutzerprogramm 436 das Ziel ist, an das die Ver­ arbeitungsanforderung geliefert wird, und sie informiert das Benutzerprogramm 440 über dieses Bestimmungsergebnis (Ver­ bindung 541). Das Benutzerprogramm 440 gibt eine Verarbei­ tungsanforderung an das Benutzerprogramm 436 aus, das dar­ über über die Verbindung 541 informiert wird (Verbindung 542). Alternativ ist es auch möglich, ein Kommunikations- Zwischenschaltungsverfahren zu verwenden, bei dem die Pro­ grammauswahleinrichtung 510 Information 540 vom Benutzerpro­ gramm 440 direkt an das Benutzerprogramm 436 überträgt (Ver­ bindung 543).
Im verteilten Computersystem gemäß dem sechsten Ausführungs­ beispiel der Erfindung kann, zusätzlich zu den Wirkungen des fünften Ausführungsbeispiels, die Wirkung erzielt werden, daß die Programmauswahl schneller als beim fünften Ausfüh­ rungsbeispiel abgeschlossen wird, da die Programmauswahlein­ richtung 510 die Prioritätswert-Umsetzeinrichtungen 144, 145 nicht dazu anweisen muß, einen Dringlichkeitswert in einen entsprechenden Prioritätswert umzusetzen. Da jedoch die Pro­ grammort-Informationsbereiche 530, 539 jeweils den Dring­ lichkeitswert eines zugeordneten Programms speichern, kann es eine Änderungen der Entsprechungsbeziehung zwischen einem Dringlichkeitswert und einem Prioritätswert wegen einer ver­ änderten Auslastung eines bestimmten Computers, erforderlich machen, die Dringlichkeitswerte in den entsprechenden Pro­ grammort-Informationsbereichen entsprechend zu ändern. Aus diesem Grund ist das System des fünften Ausführungsbeispiels von Vorteil, wenn die Auslastungen der Computer zeitlich stark schwanken.
Abweichend von den beim fünften und sechsten Ausführungsbei­ spiel veranschaulichten Systemen ist es auch möglich, ein verteiltes Computersystem aufzubauen, das eine Kombination aus der Programmauswahleinrichtung 510 und der Prioritäts­ wert-Umsetzeinrichtung 260 oder eine Kombination aus der Programmauswahleinrichtung 410 und den Prioritätswert-Um­ setzeinrichtungen 144, 145 enthält. Es ist jedoch zu beach­ ten, daß, da die in den Fig. 17, 18, 20 dargestellten Syste­ me keinen Fall annehmen, bei dem Programme unter Änderung ihrer Prioritätswerte ausgeführt werden, die Prioritätswert- Änderungseinrichtungen 146, 147 nicht beschrieben sind. Je­ doch können diese Systeme so modifiziert werden, daß sie diese Ablaufeinrichtungen zusätzlich beinhalten, damit die Prioritätswerte von Programmen verändert werden können.
In einem verteilten Computersystem mit mehreren Programmen, die denselben Vorgang ausführen, kann, wenn eine Verarbei­ tungsanforderung an ein Programm ausgegeben wird, das gerade eine Verarbeitung ausführt, eine neu angeforderte Verarbei­ tung an eines der mehreren Programme verlegt werden, die denselben Vorgang ausführen, wodurch die jeweiligen Program­ me wirkungsvoll genutzt werden können, und die neu angefor­ derte Verarbeitung wird prompt ausgeführt, was zu einer Ver­ besserung der Echtzeiteigenschaften führt. Ein siebtes Ausführungsbeispiel der Erfindung zum Ausführen einer sol­ chen Verlegung einer Verarbeitungsanforderung wird nachfol­ gend unter Bezugnahme auf Fig. 21 beschrieben. Fig. 21 zeigt ein verteiltes Rechnersystem mit der Funktion des Verlegens einer Verarbeitungsanforderung, die neu an ein Programm aus­ gegeben wird, die bereits ein anderes Programm ausführt, das denselben Vorgang wie das ursprünglich angeforderte Programm ausführt. In Fig. 21 stimmen die Elemente 100-103, 110 so­ wie 140-143 mit denjenigen Elementen überein, die in Fig. mit denselben Bezugszahlen gekennzeichnet sind. Details zur Hardware der Computer 100, 101 sind weggelassen. Eine Prioritätswert-Umsetzeinrichtung 260 und eine Prioritäts­ wert-Entsprechungstabelle 270 verwenden dieselben Abläufe und Datenstrukturen wie sie bei den Gegenstücken in Fig. 10 verwendet sind. Die Elemente 410, 420-426, 430-442 sowie 450-462 zeigen denselben Inhalt wie in Fig. 17. Auch sind Programmstrukturen weggelassen, die den Benutzerprogrammen 432, 433 und 439 entsprechen.
Bei diesem Ausführungsbeispiel ist jedes Programm intern mit einer Verarbeitungsverlegeeinrichtung 550 und einer Schlange 551 versehen, damit eine Verarbeitungsanforderung auf ein anderes Programm verlegt werden kann. Die Schlange 551 ist ein Puffer zum Einspeichern von Verarbeitungsanforderungen der Reihe nach, wie sie an ein zugehöriges Programm ausgege­ ben werden. Die Verarbeitungsverlegeeinrichtung 550 über­ wacht die Verarbeitungsanforderung, wie sie an der Schlange 551 antreffen, während das zugehörige Programm eine angefor­ derte Verarbeitung ausführt. Diese Verarbeitungsverlegeein­ richtung 550 ermöglicht es, daß Verarbeitungsanforderungen auf Programme verteilt werden können, damit die Belastung aller Computer im System gleich verteilt ist. Ein Informa­ tionsfluß 560-565 veranschaulicht, wie eine Verarbeitungs­ anforderung durch die Verarbeitungsverlegeeinrichtung auf ein anderes Programm verlegt wird. Dabei ist als Beispiel ein Prozeß veranschaulicht, bei dem ein Benutzerprogramm 440 eine Verarbeitungsanforderung mit dem Dringlichkeitswert 1 an ein Benutzerprogramm 438 (ein Programm in einer Programm­ gruppe F) ausgibt (Verbindung 560) und diese Verarbeitungs­ anforderung auf ein anderes Programm verlegt wird. Wenn Ver­ arbeitungsanforderungen das Benutzerprogramm 438 erreichen, das eine Verarbeitung ausführt, werden diese Verarbeitungs­ anforderungen in die Schlange 551 eingespeichert. Blöcke 552, 553 repräsentieren die eintreffenden Verarbeitungsan­ forderungen. Wenn die Verarbeitungsverlegeeinrichtung 550 eine neue Verarbeitungsanforderung 553 empfängt, befragt sie die Programmauswahlenrichtung 410, ob ein anderes Programm mit dem Dringlichkeitswert 1, das die Verarbeitungsanforde­ rung 553 akzeptieren soll, in der Programmgruppe F vorhanden ist (Verbindung 561). Die Programmauswahleinrichtung 410 in­ formiert die Prioritätswert-Umsetzeinrichtung 260 über den Dringlichkeitswert 1 (Verbindung 562) und empfängt eine Prioritätswertliste 491, die den Bereich von Prioritätswer­ ten angibt, die dem Dringlichkeitswert 1 entsprechen (Ver­ bindung 563). In Fig. 21 sind den Computern 101, 102 ent­ sprechende Daten aus der Prioritätswertliste 491 weggelas­ sen. Durch Vergleichen der Prioritätswertliste 491 mit einer Programmliste 426 für die Programmgruppe F erfolgt eine Aus­ wahl hinsichtlich Programmortinformation für ein Programm, das dem angeforderten Dringlichkeitswert genügt. Dabei ver­ meidet die Programmauswahleinrichtung 410 die Auswahl von Programmortinformation, die das Benutzerprogramm 438 selbst repräsentiert. Bei dem in Fig. 21 dargestellten Beispiel, wird, da die Programmortinformation 479 (entsprechend dem Benutzerprogramm 439) im Bereich der Prioritätswerte enthal­ ten ist, wie sie durch die Prioritätswertliste 491 angegeben werden, der Ort des Benutzerprogramms 439, der der Ortsin­ formation entspricht, der Verarbeitungsverlegeeinrichtung 550 mitgeteilt (Verbindung 564). Die Verarbeitungsverlege­ einrichtung 550 fordert beim Empfang dieser Ortsinformation das Benutzerprogramm 439 dazu auf, die neu eintreffende Ver­ arbeitung 553 auszuführen (Verbindung 565).
Beim siebten Ausführungsbeispiel der Erfindung sind die Ver­ arbeitungsverlegeeinrichtung 550 und die Schlange 551 in je­ dem Programm vorhanden. Alternativ können sie getrennt vom Programm vorliegen, um als Ablauf und als Datenstruktur zu dienen, die gemeinsam von mehreren Programmen verwendet wer­ den können. Auch dieses Ausführungsbeispiel besteht aus dem verteilten Computersystem von Fig. 17, das eine Kombination aus der Programmauswahleinrichtung 410 und der Prioritäts­ wert-Umsetzeinrichtung 260 sowie der zusätzlichen Verarbei­ tungsverlegeeinrichtung 550 beinhaltet. Zusätzlich zu dieser Konfiguration kann auch noch die Verarbeitungsverlegeein­ richtung 550 im verteilten Computersystem von Fig. 20 vor­ handen sein, das eine Kombination aus der Programmauswahl­ einrichtung 510 und der Prioritätswert-Umsetzeinrichtungen 144, 145 enthält, um für eine ähnliche Funktion zu sorgen.
Das verteilte Computersystem des siebten Ausführungsbei­ spiels ermöglicht es, Verarbeitungsanforderungen, wie sie an einzelne Programme ausgegeben werden, auf andere Program­ me zu verlegen, die denselben Dringlichkeitswert wie die ur­ sprünglich angeforderten Programme haben, so daß Verarbei­ tungsanforderungen auf mehrere Programme verteilt werden können, ohne daß eine große Anzahl von Verarbeitungsanfor­ derungen auf ein spezielles Programm konzentriert wird. Fer­ ner kann eine neu angeforderte Verarbeitung ausgeführt wer­ den, ohne daß auf den Abschluß einer aktuell ausgeführten Verarbeitung gewartet werden muß, wodurch die Echtzeiteigen­ schaften weiter verbessert sind.
Für das siebte Ausführungsbeispiel sind alternative Konfigu­ rationen möglich. Während das System des siebten Ausfüh­ rungsbeispiels eine Verarbeitung, die von einem Programm neu angefordert wird, während dieses eine andere Verarbeitung ausführt, diese Verarbeitung auf ein anderes Programm ver­ legt, kann ein Programm, das die Ausführung einer neuen Ver­ arbeitung übernehmen soll, mit einem höheren Dringlichkeits­ wert versehen werden, anstatt daß die neu angeforderte Ver­ arbeitung verlegt wird, damit das Programm dazu in der Lage ist, die in Ausführung befindliche Verarbeitung und die neu angeforderte Verarbeitung schnell abzuschließen. Anders ge­ sagt, gibt dieses System einem Programm, das mehrere Verar­ beitungsanforderungen erhalten hat, abhängig von der Anzahl der Anforderungen einen höheren Dringlichkeitswert, so daß die erwünschten Echtzeiteigenschaften in vollem Umfang für die mehrere Verarbeitungsanforderungen sichergestellt sind. Es ist zu beachten, daß, damit dieses System verwendet wer­ den kann, die Prioritätswert-Änderungseinrichtungen 146, 147 in jedem Computer vorhanden sein müssen, damit der Priori­ tätswert jedes Programms geändert werden kann.
(B) System, das eine Verarbeitungszeitgrenze verwendet
Die insoweit in Verbindung mit den Fig. 1-21 beschriebenen Ausführungsbeispiele beinhalten Verfahren, die die Dring­ lichkeit als gemeinsames Konzept in das verteilte Computer­ system einführen, um örtliche Prioritätswerte auf gleichmä­ ßige Weise in den jeweiligen Computern unter Verwendung des Dringlichkeitswerts zu verwalten. Wenn ein Dringlichkeits­ wert in einen absoluten Zahlenwert umgesetzt wird, kann für die gleichmäßige Verwaltung eine Verarbeitungszeitgrenze verwendet werden. Die Verarbeitungszeitgrenze kann dann, wenn sie verwendet wird nicht direkt in einen Prioritäts­ wert umgesetzt werden. Es kann an verschiedene Situationen gedacht werden. Z.B. muß, obwohl die Verarbeitungszeitgrenze lang ist, eine große Menge an Verarbeitungen ausgeführt wer­ den; obwohl die Verarbeitungszeitgrenze kurz ist, muß nur eine kleine Menge an Verarbeitungen ausgeführt werden usw. Daher muß der Prioritätswert abhängig von der Zeitgrenze und der Verarbeitungsmenge bestimmt werden. Fig. 22 zeigt ein achtes Ausführungsbeispiel eines verteilten Computersystems zum gleichmäßigen Verwalten von Prioritätswerten unter Ver­ wendung eines Satzes aus einer Zeitgrenze und einer Verar­ beitungsmenge.
In Fig. 22 sind Elemente 100, 101, 110, 130-136, 142, 143, 146 und 147 identisch mit denjenigen Elementen, die in Fig. 1 mit denselben Bezugszahlen gekennzeichnet sind. Details zur Hardware der Computer 100, 101 wie auch der Computer 102, 103 sind weggelassen. Blöcke 570, 571 repräsentieren Prioritätsschlangen, die Programmschlangen bilden, wie sie für jeweilige Prioritätswerte in den jeweiligen Computern 100, 101 erstellt sind, um die Ausführungsreihenfolge zu verwalten. Eine Prioritätsschlange besteht aus Programm­ strukturen, wofür Beispiele als 590-596 dargestellt sind. Die Programmstrukturen 590-596 beinhalten jeweils Verar­ beitungsmengedaten 600 als Teil der Datenstruktur. Jede Pro­ grammstruktur ist mit einem Datenwert zur Verarbeitungsmenge versehen, wie sie von einem zugehörigen Programm auszuführen ist, um die Umsetzung von einem Satz aus einer Zeitgrenze und einer Verarbeitungsmenge in einen Prioritätswert zu un­ terstützen. Zu Werten, die als Verarbeitungsmenge abgespei­ chert werden, können die folgenden gehören:
  • (1) die Anzahl von Anweisungen, die in einem Programm auszu­ führen sind;
  • (2) die Programmgröße; und
  • (3) die Verarbeitungsmenge eines Programms, wie es das vori­ ge Mal ausgeführt wurde (tatsächliche Verarbeitungszeit des Programms, das früher ausgeführt wurde/Computerfunktionsver­ mögen).
Diese Werte werden alle durch die Einheit von 1.000 Anwei­ sungen (pro Sekunde) oder dergleichen repräsentiert. In der Praxis ist das Wünschenswerteste der drei Beispiele das Bei­ spiel (1), nämlich die Anzahl von Anweisungen, die in einem Programm auszuführen sind, jedoch ist es ziemlich schwierig, diese Anzahl von Anweisungen zu zählen. Daher werden die statische Größe eines Programms und die Verarbeitungsmenge bei der vorigen Ausführung des Programms gemessen und als Verarbeitungsmenge-Datenwert 600 abgespeichert. Um für eine gute Annäherung and die Anzahl von Anweisungen, die in einem Programm auszuführen sind, zu sorgen, wird die Programmgröße als Anfangswert für den Verarbeitungsmenge-Datenwert 600 eingespeichert, und der Datenwert 600 wird mit einem Wert für die Verarbeitungsmenge aktualisiert, wie er bei jeder Programmausführung aufgezeichnet wird.
Prioritätswert-Umsetzeinrichtungen 572, 573 entsprechen Vor­ gängen zum Umsetzen eines Satzes aus einer Zeitgrenze und einer Verarbeitungsmenge in einen örtlichen Prioritätswert in den zugehörigen Computern 100 bzw. 101. Bei diesem Aus­ führungsbeispiel beinhalten die Prioritätswert-Umsetzein­ richtungen 572, 573 Prioritätswert-Entsprechungstabellen 580, 581, die die Übereinstimmung zwischen einer Zeitgrenze pro Einheitsverarbeitungsmenge und einem Prioritätswert (PRI) angeben. Die Zeitgrenze pro Einheitsverarbeitungsmenge kann dadurch berechnet werden, daß die für ein Programm ver­ gebene Zeitgrenze mittels der Verarbeitungsmenge für das Programm normiert wird. Bei diesem Ausführungsbeispiel gibt die Prioritätswert-Entsprechungstabelle 580 an, daß der Com­ puter 100 ein Programm mit dem Prioritätswert 0 in 0,017 Millisekunden pro Einheitsverarbeitungsmenge ausführen kann, dagegen ein Programm mit dem Prioritätswert 225 in 22,77 Millisekunden pro Einheitsverarbeitungsmenge. Die Priori­ tätswert-Entsprechungstabelle 581 gibt andererseits an, daß ein Computer 101 mit geringerem Funktionsvermögen länger braucht, um die Einheitsverarbeitungsmenge abzuarbeiten, und zwar, selbst wenn diese denselben Prioritätswert hat. Wegen des geringeren Funktionsvermögens führt der Computer 101 z. B. ein Programm mit einem Prioritätswert 0 in 0,034 Milli­ sekunden pro Einheitsverarbeitungsmenge aus, was länger als diejenige Zeit ist, die der Computer 100 benötigt, um eine Einheitsverarbeitungsmenge eines Programms mit dem Priori­ tätswert 0 abzuarbeiten. Die Inhalte der Prioritätswert-Ent­ sprechungstabellen 580, 581 werden abhängig von Änderungen der Belastung in solcher Weise modifiziert, daß dieselbe Zeitgrenze einem höheren Prioritätswert bei einem stärker ausgelasteten Computer entspricht. Die Prioritätswert-Um­ setzeinrichtungen 572, 573 verwenden die Prioritätswert-Ent­ sprechungstabellen 580, 581, um einen Satz aus einer Zeit­ grenze und einer Verarbeitungsmenge in einen zugehörigen Prioritätswert umzusetzen, und umgekehrt.
Die Prioritätswert-Entsprechungstabellen 580, 581 können durch die in Fig. 22 realisierte Feldstruktur ohne jede Än­ derung realisiert sein. Die Struktur kann in der Sprache C beschrieben sein, wie mit 610 in Fig. 23 dargestellt. Wenn das Feld durch die Aussage 610 erzeugt wird, sind, obwohl eine Umsetzung von einem Prioritätswert in eine entsprechen­ de Zeitgrenze pro Einheitsverarbeitungsmenge leicht ausge­ führt werden kann, Techniken wie eine Binärsuche erforder­ lich, um eine Umsetzung von einer Zeitgrenze in einen ent­ sprechenden Prioritätswert umzunehmen, da die Zeitgrenze ein kontinuierlicher Wert ist (als Gleitpunktzahl ausgedrückt). Binärsuche ist z. B. in "Information Processing Handbook" be­ schrieben, herausgegeben vom Institute of Information Pro­ cessing Engineers, Ohm-sha, S. 58. Bei diesem Ausführungs­ beispiel ist es erforderlich, für eine Zeitgrenze "Zeit­ grenze" einen Prioritätswert p zu vergeben, der der folgen­ den Bedingung genügt:
to_time[p] <= timelimit < to_time[p+1].
Daher wird ein Algorithmus auf Grundlage einer Binärsuche so modifiziert, daß eine Suche abhängig von dem in Fig. 24 dar­ gestellten Ablauf 620 erfolgt. Der Ablauf 620 ist in der Sprache C geschrieben, und eine Umsetzung von einer Zeit­ grenze auf einen entsprechenden Prioritätswert kann dadurch bewerkstelligt werden, daß der Ablauf 620 so aufgerufen wird, daß die Zeitgrenze pro Einheitsverarbeitungsmenge als Argument angegeben ist. Verfahren zur Umsetzung zwischen der Zeitgrenze pro Einheitsverarbeitungsmenge und einem Priori­ tätswert können wie folgt zusammengefaßt werden:
  • (1) Umsetzung von einem Prioritätswert in eine Zeitgrenze: timelimit-to_time[p]
  • (2) Umsetzung von einer Zeitgrenze in einen Prioritätswert: p-to_priority (timelimit).
Eine Verarbeitungsanforderung kann dann zurückgewiesen wer­ den, wenn ein Computer selbst dann die Zeitgrenze nicht er­ füllt, wenn er die Verarbeitung mit höchster Priorität aus­ führt.
Bei den in den Fig. 22-24 dargestellten Beispielen werden die Prioritätswert-Entsprechungstabellen 580, 581 dazu ver­ wendet, einen Satz aus einer Zeitgrenze und einer Verarbei­ tungsmenge in einen entsprechenden Prioritätswert umzuset­ zen, und umgekehrt. Alternativ können die Tabellen durch Gleichungen ersetzt werden, wie im Fall der Verwendung des Dringlichkeitswerts (siehe Fig. 3).
Nachfolgend erfolgt eine Erläuterung dafür, wie eine Verar­ beitungsanforderung von einem Computer an einen anderen un­ ter Verwendung der Prioritätswert-Umsetzeinrichtungen 572, 573 und der Prioritätswert-Änderungseinrichtungen 146, 147, wie in diesem Ausführungsbeispiel zum Spezifizieren einer Zeitgrenze dargestellt, ausgegeben wird. Auf ähnliche Weise wie bei den Informationsübertragungen zum Spezifizieren des Dringlichkeitswerts kann ein in Echtzeit arbeitendes ver­ teiltes Computersystem einfacher dann aufgebaut werden, wenn Informationsübertragung mit einer spezifizierten Verarbei­ tungszeitgrenze erfolgt. Bei diesem Ausführungsbeispiel kann daher ein Anforderungsprogramm eine Zeitgrenze spezifizie­ ren, wenn eine Verarbeitungsanforderung ausgegeben wird. Fig. 25 veranschaulicht ein Zeitgrenze-Spezifizierverfahren gemäß der Erfindung, das in der Sprache C geschrieben ist. Eine Aussage 630 repräsentiert ein Verfahren zum Spezifizie­ ren einer Zeitgrenze als erstes Argument in einer Verarbei­ tungsanforderung und eine Aussage 631 repräsentiert ein Ver­ fahren zum Spezifizieren einer Zeitgrenze als letztes Argu­ ment in einer Verarbeitungsanforderung. Während ein Satz aus einer Zeitgrenze und einer Verarbeitungsmenge bestimmt wer­ den müssen, um einen entsprechenden Prioritätswert festzule­ gen, wie oben beschrieben, muß die Zeitgrenze nur bei Ausge­ ben einer Verarbeitungsanforderung spezifiziert werden, da die Verarbeitungsmenge dadurch bestimmt werden kann, daß auf den Verarbeitungsmenge-Datenwert 600 in der Programmstruktur im angeforderten Computer Bezug genommen wird.
Fig. 26 zeigt schematisch einen Verarbeitungsablauf zum Aus­ geben einer Verarbeitungsanforderung unter Verwendung des oben genannten Zeitgrenze-Spezifizierverfahrens. Elemente 100, 101, 110, 130-136, 142, 143, 146 und 147 in Fig. 26 sind mit solchen Elementen identisch, die in Fig. 1 mit denselben Bezugszahlen gekennzeichnet sind. Die Computer 102, 103 und Einzelheiten innerhalb derselben sind weggelas­ sen. Auch sind die Elemente 570-573, 580, 581, 590-596, 600 in Fig. 26 identisch mit Elementen, die in Fig. 22 mit denselben Bezugszahlen gekennzeichnet sind. Bei diesem Aus­ führungsbeispiel zeigt der Ablauf in Fig. 26, daß ein Benut­ zerprogramm 133 eine Verarbeitungsanforderung an ein Benut­ zerprogramm 136 ausgibt. Wenn es das Benutzerprogramm 133 wünscht, der vom Benutzerprogramm 136 auszuführenden Verar­ beitung eine bestimmte Zeitgrenze aufzuerlegen, führt das Benutzerprogramm 136 eine die Zeitgrenze spezifizierende In­ formationsübertragung 630 oder 631 vor (Verbindung 640). In Fig. 26 ist angenommen, daß eine Zeitgrenze von 5 Millise­ kunden spezifiziert ist. Der Computer 101 muß, wenn er In­ formation zum Spezifizieren der Zeitgrenze empfängt, diese Zeitgrenze in einen örtlichen Prioritätswert in ihm Umsetzen und das Benutzerprogramm abhängig vom Prioritätswert ausfüh­ ren, wie er sich aus der Umsetzung ergibt. Das Benutzerpro­ gramm 136 fordert die Prioritätswert-Änderungseinrichtung 147 dazu auf, die spezifizierte Zeitgrenze von 5 Millisekun­ den in einen entsprechenden Prioritätswert umzusetzen (Ver­ bindung 641). Die Prioritätswert-Änderungseinrichtung 147 fordert die Prioritätswert-Umsetzeinrichtung 573 dazu auf, die Zeitgrenze in einen entsprechenden Prioritätswert umzu­ setzen (Verbindung 642). Die Prioritätswert-Umsetzeinrich­ tung 573 ruft den Verarbeitungsmenge-Datenwert 600 aus einer 5 dem Benutzerprogramm 136 zugehörigen Programmstruktur 596 ab (Schritt 643) und bestimmt aus der abgerufenen Verarbei­ tungsmenge und der spezifizierten Zeitgrenze einen Priori­ tätswert. Die Verarbeitungsmenge ist für das Benutzerpro­ gramm 136 zu 64.000 Anweisungen angenommen. Dann werden aus der Zeitgrenze von fünf Millisekunden und der Verarbeitungs­ menge von 64.000 Anweisungen 0,78 Millisekunden als Zeit­ grenze pro Einheitsverarbeitungsmenge berechnet (Berechnung 644). Unter Bezugnahme auf die Prioritätswert-Entsprechungs­ tabelle 581 ergibt sich, daß der Prioritätswert, der dem 5 Wert entspricht, wie er sich durch die Berechnung 644 ergab, eins ist. Die Prioritätswert-Umsetzeinrichtung 573 infor­ miert die Prioritätswert-Änderungseinrichtung 147 über den Prioritätswert 1 als Umsetzungsergebnis, um anzugeben, daß das Benutzerprogramm 136 mit dem Prioritätswert 1 ausgeführt werden muß (Verbindung 645). Schließlich verlegt die Priori­ tätswert-Änderungseinrichtung 147 die Programmstruktur 536 in einer Prioritätsschlange 571 auf eine Schlange für den Prioritätswert 1 (Verbindung 646).
Auf die vorstehend genannte Weise können die Prioritätswerte der Programme, die in verschiedenen Computern liegen, gleichmäßig auf Grundlage des gemeinsamen Konzepts der Zeit­ grenze verwaltet werden. Übrigens ist es auch möglich, wie im Fall eines verteilten Computersystems unter Verwendung von Dringlichkeitswerten, daß das Benutzerprogramm 133 die Prioritätswert-Umsetzeinrichtung 572 dazu anweist, die Zeit­ grenze aus dem eigenen Prioritätswert 4 und der Verarbei­ tungsmenge zu berechnen, und es die Verarbeitungsanforderung 640 mit dieser spezifizierten Zeitgrenze ausgibt.
Ähnlich wie beim verteilten Rechnersystem, das Dringlich­ keitswerte verwendet, um die örtlichen Prioritätswerte in den jeweils zugehörigen Computern zu verwalten, kann der In­ halt der Prioritätswert-Entsprechungstabelle abhängig von Änderungen der Auslastung auch dann verändert werden, wenn für eine solche Verwaltung die Zeitgrenze verwendet wird. Die folgenden zwei Vorgehensweisen werden beispielhaft als Verfahren zum Umändern einer Entsprechungstabelle zwischen einer Zeitgrenze und einem Prioritätswert erläutert:
  • (1) Vorgehensweise, gemäß der die Zeitgrenze in der Priori­ tätswert-Entsprechungstabelle proportional zur sich verän­ dernden Auslastung verändert wird; und
  • (2) Vorgehensweise, gemäß der die Zeitgrenze in der Priori­ tätswert-Entsprechungstabelle unter Verwendung der Differenz zwischen einer tatsächlichen Ausführungszeit und der Zeit­ grenze verändert wird.
Fig. 27 zeigt einen Ablauf für die erste vorgehensweise 650 zum Modifizieren der Prioritätswert-Entsprechungstabelle. Der Auslastungswert zum Zeitpunkt, zu dem die Prioritäts­ wert-Entsprechungstabelle das letztemal modifiziert wurde, wird als voriger Auslastungswert bezeichnet, und ein an­ schließender Änderungswert der Auslastung wird als Gesamt­ auslastungsänderung bezeichnet. Wenn sich die Auslastung än­ dert, wird die aktuelle Auslastungsänderung zur Gesamtaus­ lastungsänderung addiert (Schritt 651) und es wird ermit­ telt, ob die sich ergebende Gesamtauslastungsänderung einem vorgegebenen Wert entspricht, oder größer ist als dieser, und zwar unabhängig von der Änderungsrichtung (d. h., es wird ermittelt, ob der Absolutwert der Gesamtauslastungsänderung dem vorgegebenen Wert entspricht oder größer ist) (Schritt 652). Wenn die Gesamtauslastungsänderung dem vorgegebenen Wert entspricht oder größer ist, wird die Zeitgrenze in der Prioritätswert-Entsprechungstabelle abhängig vom Verhältnis aus dem vorigen Belastungswert und dem aktuellen Belastungs­ wert korrigiert (Schritt 653). Wenn der Inhalt der Priori­ tätswert-Entsprechungstabelle modifiziert ist, wird die Ge­ samtauslastungsänderung auf null gesetzt, und der vorige Auslastungswert wird auf den aktuellen Auslastungswert ge­ setzt, was als abschließender Schritt erfolgt (Schritt 654), woraufhin die Messung der Auslastungsänderung wieder aufge­ nommen wird.
Fig. 28 zeigt Tabellen zum Erläutern von Bedeutungen bei der Modifizierung der Prioritätswert-Entsprechungstabelle ab­ hängig vom Verhältnis des vorigen Auslastungswerts zum ak­ tuellen Auslastungswert, wie im Schritt 653 in Fig. 27 aus­ geführt. Dabei ist angenommen, daß die Prioritätswert-Ent­ sprechungstabelle 580 Daten enthält, die auf Grundlage eines Lastwerts 50 berechnet wurden (d. h., daß die Anzahl ausführ­ barer Programme 50 ist), und die Prioritätswert-Entspre­ chungstabelle wird jedesmal dann modifiziert, wenn der Aus­ lastungswert um zehn erhöht oder verringert ist. Wenn die Auslastung um zehn erhöht ist, wird die Prioritätswert-Ent­ sprechungstabelle so modifiziert, wie es in einer Tabelle 660 dargestellt ist. Genauer gesagt, wird jeder Zeitgrenze­ wert in der Tabelle 660 dadurch hergeleitet, daß der Zeit­ grenzewert in der ursprünglichen Tabelle 580 mit dem Ver­ hältnis aus dem vorigen Auslastungswert 50 zum geänderten Auslastungswert 60 multipliziert wird. Auf ähnliche Weise kann dann, wenn der Auslastungswert um zehn verringert ist, eine Prioritätswert-Entsprechungstabelle 661 dadurch erzeugt werden, daß jeder Zeitgrenzewert in der ursprünglichen Ta­ belle 580 mit dem Verhältnis aus dem vorigen Auslastungswert 50 zum veränderten Auslastungswert 40 multipliziert wird. Auf diese Weise kann die demselben Prioritätswert entspre­ chende Zeitgrenze dann verlängert werden, wenn die Ausla­ stung größer ist (eine längere Zeit ist erforderlich, um die Verarbeitung abzuschließen), wohingegen eine Verkürzung mög­ lich ist, wenn die Auslastung kleiner ist (die Verarbeitung wird in kürzerer Zeit abgeschlossen).
Nachfolgend wird die zweite Vorgehensweise zum Modifizieren der Prioritätswert-Entsprechungstabelle unter erneuter Be­ zugnahme auf Fig. 26 erläutert. Bei der zweiten Vorgehens­ weise empfängt die Prioritätswert-Umsetzungseinrichtung 573 nach dem Ausführen des Programms 136 mit dem auf eins geän­ derten Prioritätswert die tatsächliche Ausführungszeit für das Benutzerprogramm 136 (Verbindung 647). Bei dem in Fig. 26 dargestellten Beispiel ist angenommen, daß die tatsächli­ che Verarbeitungszeit 3,47 Millisekunden beträgt. Dann wird die Ausführungszeit pro Einheitsverarbeitungszeit zu 0,54 Millisekunden berechnet (3,46/4 = 0,54) (Berechnung 648). Dieser Wert wird unmittelbar als dem Prioritätswert 1 ent­ sprechende Zeitgrenze abgespeichert, um die Prioritätswert- Entsprechungstabelle 581 zu korrigieren (Schritt 649). Es ist zu beachten, daß zum tatsächlichen Korrigieren der Prio­ ritätswert-Entsprechungstabelle ein vorgegebener Wert (z. B. 0,1 Millisekunden) zum berechneten Wert addiert werden kann, d. h. 0,54 Millisekunden, um für Sicherheit zu sorgen.
Vorstehend wurde das verteilte Computersystem gemäß dem ach­ ten Ausführungsbeispiel zum gleichmäßigen Verwalten örtli­ cher Prioritätswerte, wie sie in den jeweils zugehörigen Computern festgelegt sind, beschrieben. Bei diesem Ausfüh­ rungsbeispiel ist das Konzept einer Zeitgrenze verwendet, um gleichmäßige Verwaltung der örtlichen Prioritätswerte in den mehreren Computern im verteilten Computersystem zu ermögli­ chen, die sich voneinander hinsichtlich des Funktionsvermö­ gens, der Auslastung und des Typs unterscheiden. Da die Zeitgrenze in jedem Computer abhängig vom Funktionsvermögen und der Auslastung desselben dadurch in einen entsprechenden Prioritätswert umgesetzt wird, daß nur eine Verarbeitungsan­ forderung mit spezifizierter Zeitgrenze ausgegeben wird, ist es möglich, ein in Echtzeit arbeitendes verteiltes Computer­ system auf einfache Weise aufzubauen.
Ferner kann gemäß diesem Ausführungsbeispiel, da ein Pro­ gramm von einem Computer ausgeführt wird, nachdem die Zeit­ grenze und die Verarbeitungsmenge hierfür in einen entspre­ chenden Prioritätswert im Computer abhängig vom Funktions­ vermögen und der Auslastung des Computers umgesetzt wurden, eine neu angeforderte Verarbeitung mit relativ kurzer Zeit­ grenze vor einer zuvor zugeordneten Verarbeitung mit langer Zeitgrenze ausgeführt werden, was es ermöglicht, Echtzeit­ verarbeitung strenger einzuhalten, während die Vorteile meh­ rerer Computer wirkungsvoll genutzt werden.
Ferner kann bei diesem Ausführungsbeispiel der Inhalt der Prioritätswert-Entsprechungstabelle so verändert werden, daß der Prioritätswert in jedem Computer abhängig von dynami­ schen Auslastungsänderungen verwaltet werden kann.
Ferner kann bei diesem Ausführungsbeispiel die Zeitgrenze abhängig von der Bedeutung einer Verarbeitung spezifiziert werden, wenn eine Verarbeitungsanforderung von einem Compu­ ter auf einen anderen verlegt wird. Außerdem ist es zum Spe­ zifizieren der Zeitgrenze nicht erforderlich, das Funktions­ vermögen, die Auslastung und den Typ eines Computers zu ken­ nen, an den eine Anforderung geht.
Während das System dieses Ausführungsbeispiels die Ausla­ stung eines Computers durch die Anzahl ausführbarer Program­ me repräsentiert, kann die Auslastung durch die Summe von Verarbeitungsmengen oder der vorausgesagten Verarbeitungs­ zeit ausführbarer Programme repräsentiert werden. Der letz­ tere Weg ist dahingehend von Vorteil, daß die Auslastungen jeweiliger Computer genauer abgeschätzt sind, so daß Echt­ zeiteigenschaften strenger eingehalten werden können. Wäh­ rend das Systems dieses Ausführungsbeispiels den Prioritäts­ wert unter Berücksichtigung sowohl des Funktionsvermögens als auch der Auslastung jedes Computers bestimmt, kann nur einer dieser Parameter bei der Bestimmung des Prioritäts­ werts berücksichtigt werden. Insbesondere bei einem verteil­ ten Computersystem, das nur Computer desselben Typs enthält, muß nur die Auslastung berücksichtigt werden, wodurch der Wirkungsgrad der Umsetzung zwischen Zeitgrenzen und Priori­ tätswerten verbessert ist.
Um die örtlichen Prioritätswerte von Computern gleichmäßig zu verwalten, die zu einem verteilten Computersystem gehö­ ren, wobei das Konzept der Zeitgrenze verwendet wird, ermög­ licht eine Berücksichtigung der Verbindungszeit zwischen Computern eine genauere Prioritätsverwaltung. Fig. 29 zeigt ein neuntes Ausführungsbeispiel der Erfindung, das die Ver­ bindungszeit zwischen Computern bei der Prioritätsverwaltung berücksichtigt. Die Elemente 100, 101, 110, 130-136, 142, 143, 146 und 147 in Fig. 29 sind identisch mit den Elemen­ ten, die in Fig. 1 mit denselben Bezugszahlen gekennzeichnet sind. Die Computer 102, 103 sowie Einzelheiten innerhalb derselben sind weggelassen. Die Elemente 570-573, 580, 581, 590-596 sowie 600 in Fig. 29 sind identisch mit den­ jenigen Elementen, die in Fig. 22 mit denselben Bezugszahlen gekennzeichnet sind. Auch sind der Ablauf der Umsetzung zwi­ schen einer Zeitgrenze und einem Prioritätswert innerhalb der Verbindungen 641, 642 sowie 645-646 identisch mit den­ jenigen, die in Fig. 26 dargestellt sind.
Das System dieses Ausführungsbeispiels ist mit Verbindungs­ zeit-Voraussageeinrichtungen 670, 671 versehen, um die Ver­ bindungszeit zwischen Computern vorauszusagen. Die Verbin­ dungszeit-Voraussageeinrichtungen 670, 671 arbeiten unab­ hängig von den Prioritätswert-Umsetzeinrichtungen 572, 573, den Prioritätswert-Änderungseinrichtungen 146, 147 usw. Die Verbindungszeit-Voraussageeinrichtungen 670, 671 verfügen intern über Verbindungszeittabellen 680, 681, so daß sie dann, wenn eine Computerkennung vorgegeben wird, aus den Verbindungszeittabellen 680 bzw. 681 die Verbindungszeit zwischen dem zugehörigen Computer und demjenigen Computer ausgeben, für den die Kennung eingegeben wurde. Um die Ver­ bindungszeittabellen 680, 681 zu errichten, kann beispiels­ weise eines der zwei folgenden Verfahren verwendet werden:
  • (1) beim Aktivieren eines Computers nimmt dieser Verbindung mit allen restlichen Computern auf, um die Ausführungszeit für die Verbindung abzuspeichern; oder
  • (2) die Verbindungstabelle wird erst dann errichtet, wenn eine Verbindungszeitvoraussage angefordert wird. Wenn dies das erste Mal erfolgt, nimmt der Computer Verbindung mit dem angeforderten Computer auf, um dann die Ausführungszeit für die Verbindung abzuspeichern.
Fig. 29 veranschaulicht auch einen Ablauf für Informations­ austausch zum Ausgeben einer Verarbeitungsanforderung unter Verwendung der Verbindungszeit-Voraussageeinrichtungen 670, 671. Ähnlich wie Fig. 26 zeigt Fig. 29 ein Beispiel, bei dem ein Benutzerprogramm 133 ein anderes Benutzerprogramm 136 dazu auf fordert, eine Verarbeitung innerhalb einer spezifi­ zierten Zeitgrenze auszuführen. Es sei angenommen, daß das Benutzerprogramm 133 der vom Benutzerprogramm 136 auszufüh­ renden Verarbeitung eine Zeitgrenze von 8,14 Millisekunden auferlegen möchte. Zu diesem Zweck führt das Benutzerpro­ gramm 133 einen Informationsaustausch 690 aus, um die Zeit­ grenze in der durch 630 oder 631 in Fig. 25 dargestellten Form zu spezifizieren. Diese Zeitgrenze wird als solche an­ gesehen, die die Zeit beinhaltet, die für Kommunikation zwi­ schen den Computern erforderlich ist, gesehen vom Benutzer­ programm 133 aus. Genauer gesagt, wird die Zeitgrenze, wie sie vom Benutzerprogramm 136 aus zu sehen ist, dadurch her­ geleitet, daß die Zeit, wie sie für die Verbindung zwischen den Computern erforderlich ist, von der Zeitgrenze von 8,14 Millisekunden abgezogen wird. Das Benutzerprogramm 136 be­ fragt die Verbindungszeit-Voraussageeinrichtung 671 hin­ sichtlich der Verbindungszeit zum Computer 100 (Verbindung 691). Daraufhin nimmt die Verbindungszeit-Voraussageeinrich­ tung 671 auf die Verbindungszeittabelle 681 Bezug und lie­ fert die Verbindungszeit zum spezifizierten Computer 100 an das Benutzerprogramm 136 zurück (Verbindung 692). Bei den beispielhaften Zahlenwerten in Fig. 29 beträgt die Verbin­ dungszeit zum Computer 100 1,57 Millisekunden. Das Benutzer­ programm 136 kann die auferlegte Zeitgrenze dadurch heraus­ finden, daß es die Verbindungszeit von der spezifizierten Zeitgrenze abzieht. Bei diesem Beispiel werden 5 Millise­ kunden als Zeitgrenze für das Benutzerprogramm 136 dadurch erhalten, daß die Verbindungszeit (1,57 × 2 = 3,14 Millise­ kunden) (zum Aussenden einer Verarbeitungsanforderung und zum Rückliefern des Ergebnisses ist dieselbe Verbindungszeit erforderlich) von 8,14 Millisekunden abgezogen wird. Die an­ schließenden Schritte sind denen in Fig. 26 ähnlich.
Beim vorstehend beschriebenen Verarbeitungsablauf wird die endgültige Zeitgrenze durch das die Verarbeitung anfordernde Programm berechnet, das die Verbindungszeit von der spezifi­ zierten Zeitgrenze abzieht. Alternativ kann das die Verar­ beitung anfordernde Programm aus der Verbindungszeit-Voraus­ sageeinrichtung 870 eine Verbindungszeit abfragen, um diese vorab von der spezifizierten Zeitgrenze abzuziehen.
Beim vorstehend beschriebenen neunten Ausführungsbeispiel kann die beim achten Ausführungsbeispiel verwendete Zeit­ grenze genauer in einen Prioritätswert umgesetzt werden. Dies ist insbesondere dann von Wirkung, wenn die Verbin­ dungszeit zwischen Computern zu lang ist, als daß sie ver­ nachlässigt werden könnte.
Bei den Systemen gemäß dem achten und neunten Ausführungs­ beispiel sind die Prioritätswert-Umsetzeinrichtungen 572, 573 gesondert in den jeweiligen Computern vorhanden. Alter­ nativ kann eine Prioritätswert-Umsetzeinrichtung gemeinsam in einem einzelnen Computer vorhanden sein, wie in Fig. 10 dargestellt.
Nachfolgend wird ein verteiltes Computersystem gemäß einem zehnten Ausführungsbeispiel der Erfindung zum Ausführen ei­ ner Auslastungsverteilung abhängig von der Wichtigkeit jedes Programms gegeben. Beim zehnten Ausführungsbeispiel wird die Auslastungsverteilung auf Grundlage einer Zeitgrenze vorge­ nommen, um eine Situation zu vermeiden, bei der Programme mit kurzen Zeitgrenzen in einem einzelnen Computer konzen­ triert werden. Fig. 30 zeigt die Konfiguration des verteil­ ten Computersystems gemäß dem zehnten Ausführungsbeispiel Die Elemente 100, 101, 110, 130-136, 142, 143, 146 und 147 in Fig. 30 sind identisch mit denjenigen Elementen, die in Fig. 1 mit denselben Bezugszahlen gekennzeichnet sind. Die Computer 102, 103 sowie Einzelheiten innerhalb derselben sind weggelassen. Auch sind die Elemente 137, 290, 291 in Fig. 30 identisch mit denjenigen, die in Fig. 16 mit densel­ ben Bezugszahlen gekennzeichnet sind, und entsprechende Ele­ mente führen ähnliche Vorgänge aus. Prioritätsschlangen 570, 571, Prioritätswert-Umsetzeinrichtungen 572, 573, Priori­ tätswert-Entsprechungstabellen 580, 581, Programmstrukturen 590-596 sowie der Verarbeitungsmenge-Datenwert 600 in Fig. 30 sind identisch- mit den entsprechenden Einheiten in Fig. 22. Ein Benutzerprogramm 137 wird durch eine Programmstruk­ tur 597 verwaltet.
Computerinformationsbereiche 330, 331 beinhalten Computer­ auslastung-Informationstabellen 370 bzw. 371 sowie Computer­ funktionsvermögen-Informationstabellen 334 bzw. 335. Die Computerauslastung-Informationstabellen 370, 371 beinhalten Auslastungswerte für jeweilige Computer für jede Zeitgrenze pro Einheitsverarbeitungsmenge. Während bei diesem Ausfüh­ rungsbeispiel Begrenzer für die Zeitgrenze pro Einheitsver­ arbeitungsmenge in der Computerauslastungsinformation nicht mit regelmäßigen Intervallen vorhanden sind, können sie mit regelmäßigen Intervallen vorliegen, um die Auslastungsver­ teilung zu vereinfachen.
Unter Bezugnahme auf die Fig. 30-34 wird nun der Betrieb des Systems gemäß diesem Ausführungsbeispiel beschrieben. Zunächst wird erläutert, wie ein neues Programm gestartet wird. Wenn der Benutzer einen Befehl eingibt, der eine aus­ führbare Datei eines Programms zusammen mit einer Zeitgrenze spezifiziert, analysiert das Betriebssystem den Befehl und fordert die jeweiligen Programmausführungs- und Programmver­ schiebeeinrichtungen 290, 291 in den Betriebssystemen dazu auf, das Programm zu starten, wodurch dieses tatsächlich ge­ startet werden kann. Bei diesem Beispiel ist angenommen, daß der Computer 100 einen Befehl zum Starten eines Programms mit einer auf 50 Millisekunden eingestellten Zeitgrenze emp­ fängt, und daß die Programmausführungs- und Programmver­ schiebeeinrichtung 290 daraufhin denjenigen Vorgang aus­ führt, wie er zum Starten eines Programms gehört. Die fol­ gende Beschreibung läuft gemäß diesem Szenarium ab.
Zunächst wird unter Bezugnahme auf Fig. 31 ein Verarbei­ tungsablauf 340 für einen Programmstart erläutert. Die Pro­ grammausführungs- und Verschiebeeinrichtung 290 fordert eine Computerauswahleinrichtung 298 dazu auf, zu bestimmen, mit welchem Zeitgrenzebereich ein neu zu startendes Programm in­ nerhalb der Computerauslastungsinformation enthalten ist (Schritt 341). Wenn z. B. angenommen wird, daß die Verarbei­ tungsmenge eines Programms zu 128.000 Anweisungen abge­ schätzt ist, wird die Zeitgrenze pro Einheitsverarbeitungs­ menge zu 0,39 Millisekunden (50/128 = 0,39) berechnet. In den Computerauslastung-Informationstabellen 370, 371 fallen die 0,39 Millisekunden in den Zeitgrenzebereich 0,05-1,00. Danach werden die Computerauswahleinrichtungen 298, 299 dazu aufgefordert, die Auslastungs/Funktionsvermögen-Werte im Bereich der Zeitgrenze pro Einheitsverarbeitungsmenge von 0 Millisekunden bis zu dem im Schritt 341 bestimmten Bereich zu berechnen (Schritt 342). Die Berechnung wird dadurch aus­ geführt, daß ein Auslesen aus den Computerauslastung-Infor­ mationstabellen 370, 371 und den Computerfunktionsvermögen- Informationstabellen 334, 335 erfolgt, wie in Fig. 30 darge­ stellt. Die Fig. 32 stellt Tabellen dar, die die Ausla­ stungsinformation, den Auslastungswert, den Auslastungs/Funktionsvermögen-Wert jedes Computers beinhalten, in den Zustand versetzt, wie in Fig. 30 dargestellt. Die Computer­ auslastung-Informationstabellen 370, 371 geben jeweils die Anzahl ausführbarer Programme für die zugehörigen Computer 100, 101 für jeden Bereich der Zeitgrenze pro Einheitsverar­ beitungsmenge an, während die Zahlen der ausführbaren Pro­ gramme in den jeweiligen Zeitgrenzebereichen von 0 Millise­ kunden bis zu speziellen Zeitgrenzewerten (0-0,05; 0-1,00; 0-3,00; 0-9,00; . . ., 0-200) für die jeweiligen Computer 100, 101 in den Auslastungswerttabellen 380, 381 abgespeichert sind. Die Anzahl der ausführbaren Programme wird durch das jeweilige Computerfunktionsvermögen (Informa­ tion) geteilt, um die Auslastungs/Funktionsvermögen-Werte herzuleiten, wie sie in den Tabellen 382, 383 abgespeichert sind. Da das hier betrachtete Programm neu gestartet wird, ist ihm eine Zeitgrenze von 0,39 Millisekunden auferlegt, und der Auslastungs/Funktionsvermögen-Wert, wie er dem mini­ malen Zeitgrenzebereich 0-1 Millisekunde entspricht, der 0,39 Millisekunden enthält, wird für den Computer 100 zu 1,10 und für den Computer 101 zu 0,67 berechnet.
Danach kommunizieren die Computerauswahleinrichtungen 298, 299 miteinander, um den Computer mit dem kleinsten Ausla­ stungs/Funktionsvermögen-Wert als denjenigen Computer aus­ zuwählen, dem die Ausführen des zu startenden Programms zu­ geordnet wird (Schritt 343). Unter Bezugnahme auf Fig. 32, aus der Tabellen für die mit 102 und den anschließenden Be­ zugszahlen bezeichneten Computer weggelassen sind, wird un­ ter der Annahme des Auslastungs/Funktionsvermögen-Werts von 0,67 für den Computer 101 als kleinster Wert dieser Computer 101 ausgewählt. Schließlich führt die Programmausführungs- und Programmverschiebeeinrichtung den Vorgang zum Starten des Programms durch den ausgewählten Computer aus (Schritt 344). Dieser Vorgang wird in solcher Weise erzielt, daß die Programmausführungs- und Programmverschiebeeinrichtung des Computers, der den Programmstartablauf gestartet hat, die Programmausführungs- und Programmverschiebeeinrichtung des ausgewählten Computers dazu auffordert, das Programm in einen ausführbaren Zustand zu überführen. Bei diesem Bei­ spiel kommuniziert die Programmausführungs- und Programmver­ schiebeeinrichtung 290 des Computers 100 mit der Programm­ ausführungs- und Programmverschiebeeinrichtung 291 des Com­ puters 101, um diese dazu aufzufordern, das Programm in einen ausführbaren Zustand zu bringen.
Anschließend wird ein Verarbeitungsablauf zum Verschieben eines ausführbaren Programms erläutert. Bei diesem Ausfüh­ rungsbeispiel werden die Programmverschiebe-Bestimmungsein­ richtungen 296, 297 periodisch so gestartet, daß sie mitein­ ander kommunizieren, um die Auslastungen der ihnen jeweils zugeordneten Computer klarzustellen. Die Programmverschiebe- Bestimmungseinrichtungen 296, 297 bestimmen, wenn sie her­ ausfinden, daß die Auslastungen der jeweiligen Computer un­ ter Berücksichtigung ihrer Funktionsvermögen nicht gleich­ mäßig verteilt sind, daß ein Programm in solcher Weise ver­ schoben wird, daß die jeweiligen Computer gleich ausgelastet sind, und sie fordern die Programmausführungs- und Programm­ verschiebeeinrichtungen 290, 291 dazu auf, ein Programm zu verschieben. Diese Programmausführungs- und Programmver­ schiebeeinrichtungen 290, 291 fordern ihrerseits die Compu­ terauswahleinrichtungen 298, 299 dazu auf, einen Zielcompu­ ter zu bestimmen und einen 46308 00070 552 001000280000000200012000285914619700040 0002019513922 00004 46189 Vorgang auszuführen, wie er der Verschiebung eines Programms zugeordnet ist, und zwar in Zu­ sammenwirkung mit der Programmausführungs- und Programmver­ schiebeeinrichtung des Zielcomputers. Bei diesem Ausfüh­ rungsbeispiel werden die obengenannten Auslastungs/Funk­ tionsvermögen-Werte dazu verwendet, zu ermitteln, ob die Auslastungen der jeweiligen Computer angesichts ihrer Funk­ tionsvermögen gleich verteilt sind.
Unter Bezugnahme auf Fig. 33 wird ein Verarbeitungsablauf 350 zum Verschieben eines Programms erläutert. Zunächst setzt die Programmverschiebe-Bestimmungseinrichtung eine einen Zeitgrenzebereich repräsentierende Variable auf 0,05 Millisekunden (Schritt 351). Dieser Wert dient als Obergren­ ze eines Bereichs, in dem die Zeitgrenze pro Einheitsverar­ beitungsmenge den kleinsten Wert innerhalb der Computeraus­ lastungsinformation 370-371 hat. Dann wird der Ausla­ stungs/Funktionsvermögen-Wert für jeden Computer im Zeit­ grenzebereich von 0 bis t Millisekunden berechnet (Schritt 352). Wie oben beschrieben, sind die für die in Fig. 30 ver­ anschaulichten Zustände berechneten Auslastungs/Funktions- Vermögen-Werte für die Computer 100, 101 diejenigen, die in den Tabellen 382, 383 aufgelistet sind. Danach wird die Dif­ ferenz D zwischen dem größten Auslastungs/Funktionsvermögen- Wert und dem kleinsten Auslastungs/Funktionsvermögen-Wert unter den Auslastungs/Funktionsvermögen-Werten, wie sie für alle Computer berechnet wurden, bestimmt (Schritt 353). Ob­ wohl die Information zu den mit 102 und mit höheren Bezugs­ zahlen gekennzeichneten Computer aus Fig. 32 weggelassen ist, sei angenommen, daß der Auslastungs/Funktionsvermögen- Wert von 0,33 für den Computer 101 der größte Wert und der Auslastungs/Funktionsvermögen-Wert von 0,30 für den Computer 100 der kleinste Wert ist, wenn t 0,05 Millisekunden ist; die Differenz D ist dann zu 0,03 berechnet. Dann wird unter­ sucht, ob dieser Wert der Differenz D einen Schwellenwert Dt überschreitet (Schritt 354). Bei diesem Ausführungsbeispiel ist angenommen, daß der Schwellenwert Dt auf 0,3 eingestellt ist. Wenn die Differenz D den Schwellenwert Dt überschrei­ tet, geht der Ablauf zu einem Schritt 355 über, andernfalls zu einem Schritt 358. Da bei diesem Beispiel die Differenz D den Schwellenwert Dt nicht überschreitet, wenn n den Wert 0 hat, geht der Ablauf zum Schritt 358 weiter, wo ermittelt wird, ob der Wert von t der Maximalwert im Zeitgrenzebereich ist (der Maximalwert beträgt beim in Fig. 30 veranschaulich­ ten Beispiel 200 Millisekunden). Wenn der Wert t der Maxi­ malwert im Zeitgrenzebereich ist, endet der Ablauf. Falls nicht, geht der Ablauf zu einem Schritt 359 weiter, in dem die Obergrenze des nächsten Zeitgrenzebereichs in die Va­ riable t eingesetzt wird. Bei diesem Beispiel geht, da t nun auf 0,05 Millisekunden eingestellt ist, der Ablauf zum Schritt 359 über, in dem t auf eine Millisekunden gesetzt wird.
Dann springt der Ablauf zum Schritt 352 zurück, um die Aus­ lastungs/Funktionsvermögen-Werte für die jeweiligen Computer zu berechnen, und dann wird zum Schritt 353 weitergegangen, in dem die Differenz D berechnet wird. Obwohl die Informa­ tion für die mit 102 und höheren Bezugszahlen gekennzeichne­ ten Computer in Fig. 32 weggelassen ist, sei angenommen, daß der Auslastungs/Funktionsvermögen-Wert von 1,10 für den Com­ puter 100 der größte und der Auslastungs/Funktionsvermögen- Wert von 0,67 für den Computer 101 der kleinste Wert ist, wenn t eine Millisekunde ist; dann wird die Differenz D zu 0,43 berechnet. Wenn t eine Millisekunde ist, überschreitet demgemäß die Differenz D den Schwellenwert Dt. Wenn dies der Fall ist, wird erkannt, daß die Computer nicht gleichmäßig ausgelastet sind, wodurch ein zu verschiebendes Programm ausgewählt wird (Schritt 355). Bei diesem Ausführungsbei­ spiel ist angenommen, daß aus den ausführbaren Programmen, die der Zeitgrenze pro Einheitsverarbeitungsmenge von t Mil­ lisekunden oder weniger entsprechen, zu diesem Zweck dasje­ nige Programm ausgewählt wird, das das letzte in der Priori­ tätsschlange ist. Wie in Fig. 30 dargestellt, sind die Prio­ ritätswerte, die dem Zeitgrenzebereich von 0,05 bis 1 Milli­ sekunde des Computers 100 entsprechen, die Werte 2-4, und das Programm K ist als dasjenige vorgesehen, das als näch­ stes innerhalb der Prioritätsschlange auszuführen ist (Pro­ grammstruktur 597). So wird das Programm K als zu verschie­ bendes Programm ausgewählt.
Wenn das zu verschiebende Programm einmal bestimmt ist, for­ dert die Programmverschiebe-Bestimmungseinrichtung des Com­ puters, in dem das zu verschiebende Programm liegt, die zu­ gehörige Programmausführungs- und Programmverschiebeeinrich­ tung dazu auf, den Vorgang auszuführen, wie er zu einer Pro­ grammverschiebung gehört. Bei diesem Beispiel ist die Pro­ grammausführungs- und Programmverschiebungseinrichtung 290 des Computers 100 mit diesem Vorgang beauftragt. Sie fordert die Computerauswahleinrichtung 298 dazu auf, einen Zielcom­ puter auszuwählen, an den das ausgewählte Programm zu ver­ schieben ist (Schritt 356). Die Computerauswahleinrichtung 298 kommuniziert mit den Computerauswahleinrichtungen in den anderen Computern, um den Zielcomputer zu bestimmen. Bei diesem Ausführungsbeispiel ist angenommen, daß der Computer mit dem kleinsten Auslastungs/Funktionsvermögen-Wert als Zielcomputer ausgewählt wird. Daher wird bei diesem Beispiel der Computer 101, der den kleinsten Auslastungs/Funktions­ vermögen-Wert hat, wenn t eine Millisekunde ist, als Ziel­ computer ausgewählt.
Wenn das Ziel einmal bestimmt ist, führt die Programmausfüh­ rungs- und Programmverschiebeeinrichtung den Programmver­ schiebevorgang aus (Schritt 357). Bei diesem Beispiel führt die Programmausführungs- und Verschiebeeinrichtung 290 des Computers 100 die Programmverschiebeeinrichtung in Überein­ stimmung mit der Programmausführungs- und Programmverschie­ beeinrichtung 291 des Zielcomputers 101 aus. Nachdem das Programm auf den Computer 101 verschoben wurde, wird der durch diesen Verschiebevorgang verbesserte Auslastungszu­ stand in den Computerauslastung-Informationstabellen 370, 371 wiedergegeben, wie in Fig. 34 dargestellt. Wie es aus einem Vergleich der Fig. 33 mit Fig. 34 erkennbar ist, ist in den Computerauslastung-Informationstabellen 370, 371 die Anzahl ausführbarer Programme im Bereich der Zeitgrenze pro Einheitsverarbeitungsmenge von 0,05 bis 1 Millisekunde von acht auf sieben für den Computer 100 verringert, dagegen von eins auf zwei für den Computer 101 erhöht.
Nachdem das Programm wie vorstehend beschrieben verschoben wurde, kehrt der Ablauf erneut zum Schritt 352 zurück, um die Auslastungs/Funktionsvermögen-Werte für die jeweiligen Computer zu berechnen. Für diesen Fall sind die berechneten Auslastungswerte und Auslastungs/Funktionsvermögen-Werte diejenigen, wie sie in den Tabellen 380, 381, 382, 383 in Fig. 34 dargestellt sind. Obwohl die Information für die mit 102 und den folgenden Bezugszahlen bezeichneten Computer aus Fig. 34 weggelassen ist, gilt, daß die Differenz D immer noch den Schwellenwert Dt übersteigt, wenn t eine Milli­ sekunde ist, weswegen erneut ein Programmverschiebevorgang ausgeführt wird, wie vorstehend beschrieben wurde. Wenn die Differenz D den Wert Dt hat oder kleiner ist, geht der Ablauf zum Schritt 358 weiter.
Durch Wiederholen des vorstehend genannten Verarbeitungs­ ablaufs, wie er in Fig. 33 dargestellt ist, bis der Maximal­ wert des Zeitgrenzebereichs auf den Wert t gesetzt ist, wird Programmverschiebung ausgeführt, um gleichmäßige Ausla­ stungsverteilung für die zum verteilten Computersystem ge­ hörigen Computer abhängig von deren Funktionsvermögen zu erzielen, was für alle Zeitgrenzebereiche erfolgt.
Es wurde das System gemäß dem zehnten Ausführungsbeispiel der Erfindung beschrieben. Dieses System des zehnten Ausfüh­ rungsbeispiels hat den Vorteil, daß die Auslastung im Sy­ stem, d. h. durch diese auszuführende Benutzerprogramme, gleichmäßig auf alle zum System gehörenden Computer abhängig von deren jeweiligem Funktionsvermögen verteilt werden kann, so daß die Computermittel wirkungsvoll genutzt werden kön­ nen. Ferner beeinflussen Schwankungen der Funktionsvermögen der Computer eine gleichmäßige Bewertung der Auslastung nicht, da die Gleichmäßigkeit der Auslastungsverteilung un­ ter Berücksichtigung sowohl der Auslastungswerte als auch der Funktionsvermögen der jeweiligen Computer bewertet wird.
Auch ist das System dieses Ausführungsbeispiels dahingehend von Vorteil, daß Benutzerprogramme gleichmäßig auf Computer abhängig von deren jeweiligen Funktionsvermögen für jeden Zeitgrenzebereich verteilt werden können, so daß Echtzeit- Verarbeitung auf Grundlage einer gleichmäßigen Zeitgrenze im gesamten verteilten Computersystem erzielt werden kann. Ins­ besondere ist es möglich, da die Auslastung im gesamten Sy­ stem unter Berücksichtigung der jeweiligen Programme aufer­ legten Zeitgrenzen verteilt wird, zu verhindern, daß eine Anzahl von Programmen mit kurzer Zeitgrenze auf einen ein­ zelnen Computer konzentriert wird, wodurch eine strengere Einhaltung von Echtzeiteigenschaften gewährleistet ist.
Während das in den Fig. 30-34 dargestellte System über Prioritätswert-Umsetzeinrichtungen 572, 573, Computerauswahleinrichtungen 298, 299 und Computerinformationsbereiche 330, 331 verfügt, die verteilt in den jeweiligen Computern 100, 101 angeordnet sind, können diese Einrichtungen für eine konzentrierte Verwaltung in einem einzelnen Computer angeordnet sein.
Das unter Bezugnahme auf die Fig. 17-21 beschriebene Sy­ stem ist ein solches, daß mehrere Programme, die denselben Vorgang ausführen, auf mehreren Computern ausgeführt werden, wodurch eine Verarbeitungsanforderung ausgegeben wird, die einen Dringlichkeitswert spezifiziert, um aus den denselben Vorgang ausführenden Programmen ein solches auszuwählen, das den Prioritätswert aufweist, wie er vom anfordernden Pro­ gramm gewünscht wird. Es wird nun ein elftes Ausführungsbei­ spiel der Erfindung erläutert, das dazu dient, diese Pro­ grammauswahl unter Verwendung der Zeitgrenze statt der Dringlichkeit auszuführen. Fig. 35 zeigt ein verteiltes Com­ putersystem gemäß dem elften Ausführungsbeispiel, das die Funktion hat, daß es Verarbeitungsanforderungen unter Ver­ wendung der Zeitgrenze verteilt. Genauer gesagt, verwendet das System von Fig. 35 die Zeitgrenze anstelle der Dring­ lichkeit, wie sie vom System von Fig. 17 verwendet wird. In Fig. 35 sind die Elemente 100-103, 110 sowie 140-143 identisch mit denjenigen Elementen, die in Fig. 1 mit den­ selben Bezugszahlen gekennzeichnet sind. Einzelheiten zur Hardware der Computer 100, 101 sind weggelassen. Die Elemen­ te 430-443, 450, 451, 454-458, 460-462 sowie 470-479 in Fig. 35 sind identisch mit denjenigen Elementen, die in Fig. 17 mit denselben Bezugszahlen gekennzeichnet sind. Eine Prioritätswert-Umsetzeinrichtung 720 und eine Prioritäts­ wert-Entsprechungstabelle 730 sind dergestalt, daß die Prio­ ritätswert-Umsetzeinrichtungen 572, 573 und die Prioritäts­ wert-Entsprechungstabellen 580, 581 in Fig. 22 so modifi­ ziert sind, daß sie einen einzigen Ablauf und eine einzige Tabelle bilden, damit die Verwaltung mit diesem einzigen Ablauf und der einzigen Datenstruktur möglich ist. Die Prio­ ritätswert-Umsetzeinrichtung 720 kann für jeden Computer einen örtlichen Prioritätswert erstellen, der einer spezifi­ zierten Zeitgrenze entspricht, und zwar unter Verwendung der in Fig. 24 dargestellten Umsetzeinrichtung 620.
Eine Programmauswahleinrichtung 700 wählt ein Programm aus, wie es für einen anfragenden Computer optimal ist, der eine Zeitgrenze vorgibt. Eine Programmort-Datenbank 710 ist als Verwaltungsdatenstruktur für diese Auswahl vorhanden. Die Programmort-Datenbank 710 verwaltet Programmort-Informa­ tionstabellen 470-479 zum Einspeichern von Kennungen von Computern, auf denen Programme, die denselben Vorgang aus­ führen, laufen, und sie speichern die Prioritätswerte der Programme. Die Programmort-Informationstabellen 470-479 werden als Programmlisten 711-716 für jeweilige Sätze von Programmen, die denselben Vorgang ausführen, verwaltet. Bei diesem Ausführungsbeispiel ist angenommen, daß die Programm­ listen 711-716 selbst den Verarbeitungsmenge-Datenwert 600, wie er in Fig. 22 dargestellt ist, für die zugehörigen Programme speichert. Auf diese Weise kann eine Zeitgrenze pro Einheitsverarbeitungsmenge aus einer spezifizierten Zeitgrenze und einem Verarbeitungsmenge-Datenwert 600, wie von einer Programmliste 711-716 spezifiziert, hergeleitet werden. Alternativ kann der Verarbeitungsmenge-Datenwert 600 in der Programmstruktur abgespeichert sein, so daß die Prio­ ritätswert-Umsetzeinrichtung 720 den Verarbeitungsmenge­ Datenwert 600 liest, um eine Zeitgrenze pro Einheitsverar­ beitungsmenge herzuleiten, wie im Fall des in Fig. 22 darge­ stellten Systems. Wenn die Prioritätswerte der in der Pro­ grammauswahleinrichtung 700 registrierten Programme in irgendeinem Computer verändert werden, wenn ein Programm aus einem zugehörigen Computer gelöscht wird oder wenn ein zu registrierendes Programm neu gestartet wird, wird die Pro­ grammauswahleinrichtung 700 über die Kennung des Computers informiert, auf dem das betreffende Programm läuft, wie auch über den Dringlichkeitswert des Programms, um den Inhalt der Programmort-Datenbank 710 zu modifizieren.
Nachfolgend erfolgt eine Erläuterung für ein Verfahren zum Auswählen eines Zielprogramms, an das eine Verarbeitungs­ anforderung geliefert wird, abhängig von der Zeitgrenze, un­ ter Verwendung der Prioritätswert-Umsetzeinrichtung 720 und der Programmauswahleinrichtung 700. Fig. 36 zeigt ein Bei­ spiel für den Programmablauf zum Auswählen eines Programms. Bei diesem Ausführungsbeispiel ist angenommen, daß ein Be­ nutzerprogramm 440 eine Verarbeitungsanforderung an ein Pro­ gramm in einer Programmgruppe D ausgibt (Benutzerprogramm 435 oder 436). Das Benutzerprogramm 440 befragt zunächst die Programmauswahleinrichtung 700 über den Ort eines Programms, das zur Programmgruppe D gehört und das einer Zeitgrenze von fünf Millisekunden genügt (Verbindung 750). Die Programmaus­ wahleinrichtung 700 ruft den Verarbeitungsmenge-Datenwert 600 für das Programm in der Gruppe D aus der Programmliste 714 ab (Schritt 751). Hier sei angenommen, daß die Verarbei­ tungsmenge des Programms in der Gruppe D 12.000 Anweisungen ist. Aus der vorgegebenen Zeitgrenze und dem Verarbeitungs­ menge-Datenwert 600 wird die Zeitgrenze pro Einheitsverar­ beitungsmenge zu 0,039 Millisekunden berechnet (5.00/128 = 0,039) (Berechnung 752). Die Programmauswahleinrichtung 700 informiert die Prioritätswert-Umsetzeinrichtung 720 über das durch die Berechnung 752 gewonnene Ergebnis und fordert die­ se dazu auf, die Zeitgrenze pro Einheitsverarbeitungsmenge in einen Prioritätswert umzusetzen (Verbindung 753). Die Prioritätswert-Umsetzeinrichtung 720 führt den in Fig. 24 veranschaulichten Ablauf 620 aus, um örtliche Prioritätswer­ te für die jeweiligen Computer zu bestimmen, die der Zeit­ grenze von 0,039 Millisekunden entsprechen, und sie infor­ miert die Programmauswahleinrichtung 700 in Form der Priori­ tätswertliste 492 über die bestimmten Prioritätswerte (Ver­ bindung 754). Die Prioritätswertliste 492 gibt die örtlichen Prioritätswerte für die jeweiligen Computer an, die der spe­ zifizierten Zeitgrenze genügen. Bei diesem Ausführungsbei­ spiel empfängt die Programmauswahleinrichtung 700 daraufhin eine Prioritätswertliste, die angibt, daß die Zeltgrenze von 0,039 Millisekunden dem Prioritätswert 1 im Computer 100 und dem Prioritätswert 0 im Computer 101 entspricht, was über die Verbindung 754 erfolgt. Die Programmauswahleinrichtung 700 vergleicht den Inhalt der Programmort-Datenbank 710 mit dem Inhalt der Prioritätswertliste 492 zum Bestimmen eines Zielprogramms, an das die Verarbeitungsanforderung zu lie­ fern ist. Der Verarbeitungsablauf 500 in Fig. 19 kann dazu verwendet werden, die Programmliste 711-716 mit der Prio­ ritätswertliste 492 zu vergleichen, um ein Programm mit einem Prioritätswert herauszufinden, der im spezifizierten Prioritätswertebereich liegt. Beim in Fig. 36 dargestellten Ausführungsbeispiel enthält die Programmliste 714 für die Programmgruppe D nur die Programmortinformation 476 (ent­ sprechend dem Benutzerprogramm 436), die dem Prioritätswer­ tebereich entspricht, wie er durch die Prioritätswertliste 492 spezifiziert wird. Daher bestimmt die Programmauswahl­ einrichtung 700, daß das im Computer 101 liegende Benutzer­ programm 436 als Ziel geeignet ist, an das die Verarbei­ tungsanforderung ausgegeben werden kann, und sie informiert das Benutzerprogramm 440 über dieses Bestimmungsergebnis (Verbindung 755). Das Benutzerprogramm 440 gibt dann die Verarbeitungsanforderung an das Benutzerprogramm 436 aus, das über die Verbindung 755 aufgerufen wurde. Alternativ ist es möglich, ein Kommunikation-Zwischenschaltungsverfahren zu verwenden, bei dem die Programmauswahleinrichtung 700 die Information 750 vom Benutzerprogramm 440 direkt an das Be­ nutzerprogramm 436 überträgt (Verbindung 757).
Das verteilte Rechnersystem des elften Ausführungsbeispiels ermöglicht es, daß mehrere Programme mit verschiedenen Prio­ ritätswerten, die denselben Vorgang ausführen, verteilt in zum System gehörenden Computern liegen können, wodurch eine Verteilung von Verarbeitungsanforderungen oder der Ausla­ stung abhängig von einer vorgegebenen Zeitgrenze erzielt wird. Insbesondere ist eine gute Wirkung dieses Ausführungs­ beispiels zu erwarten, da selbst Verarbeitungsanforderungen, die nach demselben Inhalt der Verarbeitung fragen, häufig mit verschiedenen Zeitgrenzen versehen werden, abhängig von den anfordernden Programmen.
Weiter kann gemäß dem elften Ausführungsbeispiel dadurch, daß für die mehreren Programme, die denselben Vorgang aus­ führen, verschiedene Prioritätswerte eingestellt werden, derselbe Verarbeitungsinhalt mit verschiedenen Zeitgrenzen angefordert werden, ohne daß eine Prioritätswert-Umsetzein­ richtung erforderlich ist, wodurch es ermöglicht ist, Echt­ zeiteigenschaften im selben Ausmaß wie beim achten Ausfüh­ rungsbeispiel zu gewährleisten.
Fig. 37 zeigt ein zwölftes Ausführungsbeispiel, bei dem es sich um ein anderes verteiltes Computersystem mit Programm­ auswahlfunktion, wie vorstehend beschrieben, handelt. Das verteilte Computersystem von Fig. 37 beinhaltet eine Kombi­ nation aus Prioritätswert-Umsetzeinrichtungen 572, 573, die getrennt in jeweiligen Computern vorhanden sind, und einer Programmauswahleinrichtung 760, die Kennungen von Computern, auf denen denselben Vorgang ausführende Programme laufen, und den Programmen zugeordnete Zeitgrenzen speichert, um ein Ziel zu bestimmen, daß eine Verarbeitungsanforderung auszu­ geben ist. In Fig. 37 sind die Elemente 100-103, 110 sowie 140-143 mit denjenigen Elementen identisch, die in Fig. 1 mit denselben Bezugszahlen gekennzeichnet sind. Einzelheiten zur Hardware der Computer 100, 101 sind weggelassen. Die Be­ nutzerprogramme 430-442 sowie die Programmstrukturen 450- 462 haben die gleichen Inhalte wie in Fig. 17. Die Programm­ strukturen, die den Benutzerprogrammen 432-433 sowie 439 entsprechen, sind weggelassen. Die Prioritätswert-Umsetzein­ richtungen 572, 573, die Prioritätswert-Entsprechungstabel­ len 580, 581 und der Verarbeitungsmenge-Datenwert 600 ent­ sprechen jeweils denselben Abläufen und Datenstrukturen wie in Fig. 22.
Die Programmauswahleinrichtung 700 verwaltet Computer, auf denen diese Programme laufen, wie auch die Zeitgrenzen, um ein Programm mit optimaler Zeitgrenze zu bestimmen. Eine Programmort-Datenbank 770 ist zu diesem Zweck als Verwal­ tungsdatenstruktur vorhanden. Die Programmort-Datenbank 770 verwaltet Programmort-Informationstabellen 780-789 zum Einspeichern von Kennungen von Computern, auf denen densel­ ben Vorgang ausführende Programme laufen, sowie deren Zeit­ grenzen (es ist zu beachten, daß die Zeitgrenze in diesem Fall eher eine Verarbeitungsvoraussagezeit repräsentiert). Die Programmort-Informationstabellen 780-789 bilden Pro­ grammlisten 771-776, so daß jeder Satz von Programmen, die denselben Vorgang ausführen, eine Liste bilden. Während die Programmort-Informationstabellen 470-479 in Fig. 35 Ken­ nungen von Computer, auf denen denselben Vorgang ausführende Programme laufen und deren Prioritätswerte speichern, spei­ chern die Programmort-Informationstabellen 780-789 in Fig. 37 Zeitgrenzen anstelle von Prioritätswerten. Die Zeitgrenze kann dadurch berechnet werden, daß die Zeitgrenze pro Ein­ heitsverarbeitungsmenge, wie sie dem Prioritätswert eines Programms entspricht, mit der Verarbeitungsmenge des Pro­ gramms multipliziert wird. Z.B. läuft das Benutzerprogramm 436 (in der Programmgruppe D) auf dem Computer 101 mit dem Prioritätswert 0. Wenn angenommen wird, daß die Prioritäts­ menge des Programms in der Programmgruppe D 128.000 Anwei­ sungen umfaßt, wird diese Zeitgrenze zu 4,35 Millisekunden berechnet (0,034 × 128 = 4,35). Dieser Wert wird in den Pro­ grammort-Informationsbereich 786 eingespeichert (Ortsinfor­ mationsbereich, der dem Benutzerprogramm 436 entspricht). Wenn der Prioritätswert eines in der Programmauswahleinrich­ tung 760 registrierten Programms in irgendeinem Computer ge­ ändert wird, wenn ein Programm aus irgendeinem Computer ge­ löscht wird oder wenn ein zu registrierendes Programm neu gestartet wird, wird die Programmauswahleinrichtung 760 über den zu diesem Programm gehörenden Computer und den Priori­ tätswert des Programms informiert, um den Inhalt der Pro­ grammlisten zu modifizieren. Auch dann, wenn die Entspre­ chungsbeziehung zwischen dem Prioritätswert und der Zeit­ grenze für irgendeinen Computer geändert wird, informieren die Prioritätswert-Umsetzeinrichtungen 572, 573 die Pro­ grammauswahleinrichtung 760 über derartige Änderungen der Entsprechungsbeziehung, um die zugehörigen Zeitgrenzen zu ändern, die in den Programmort-Informationsbereichen 780-789 abgespeichert sind.
Fig. 37 veranschaulicht auch ein Verfahren zum Auswählen eines Zielprogramms, an das eine Verarbeitungsanforderung ausgegeben wird, abhängig von der Zeitgrenze, und zwar unter Verwendung der Prioritätswertumsetzeinrichtungen 572, 573 sowie der Programmauswahleinrichtung 760. Auf ähnliche Weise wie bei der Erläuterung zum Verarbeitungsablauf in Fig. 36 ist es auch bei diesem Ausführungsbeispiel angenommen, daß ein Benutzerprogramm 440 eine Anforderungsanweisung an ein Programm in einer Programmgruppe D (Benutzerprogramm 435 oder 436) ausgibt. Das Benutzerprogramm 440 befragt zunächst die Programmauswahleinrichtung 760 hinsichtlich des Orts eines Programms, das zur Programmgruppe D gehört und eine Zeitgrenze von fünf Millisekunden einhält (Verbindung 790). Da die Programmauswahleinrichtung 760 die Kennungen von Com­ putern, auf denen jeweils gleiche Programme laufen, und deren Zeitgrenzen erkannt hat, kann sie dabei den Ort eines Programms herausfinden, das den Bedingungen genügt, daß das Programm zur Programmgruppe D gehört und seine Zeitgrenze fünf Millisekunden entspricht oder kürzer ist. Bei diesem Ausführungsbeispiel genügt innerhalb der zwei Benutzerpro­ gramme in der Programmgruppe D nur die Programmortinforma­ tion 786 (entsprechend dem Benutzerprogramm 436) den vor­ stehend genannten Bedingungen. Daher bestimmt die Programm­ auswahleinrichtung 700, daß das im Computer 101 liegende Benutzerprogramm 436 als Ziel geeignet ist, an das die Ver­ arbeitungsanforderung ausgegeben werden kann, und sie infor­ miert das Benutzerprogramm 440 über diese Bestimmung (Ver­ bindung 791). Das Benutzerprogramm 440 gibt dann die Verar­ beitungsanforderung an das Benutzerprogramm 436 aus, das über die Verbindung 791 aufgefunden wurde. Alternativ ist es möglich, ein Kommunikations-Zwischenschaltungsverfahren zu verwenden, bei dem die Programmauswahleinrichtung 760 Information 790 vom Benutzerprogramm 440 direkt an das Be­ nutzerprogramm 436 liefert (Verbindung 793).
Das System gemäß dem zwölften Ausführungsbeispiel hat die­ selbe Wirkung wie das des elften Ausführungsbeispiels und ist darüber hinaus dahingehend von Vorteil, daß die Pro­ grammauswahl schneller als bei dem in den Fig. 35, 36 darge­ stellten Systemen erfolgen kann, da die Programmauswahlein­ richtung 760 nicht die Prioritätswert-Umsetzeinrichtungen 572, 573 dazu anweist, eine Zeitgrenze in einen entsprechen­ den Prioritätswert umzusetzen. Es ist jedoch zu beachten, daß, da die Programmort-Informationsbereiche 780-789 Zeit­ grenzen enthalten, diese Zeitgrenzen in diesen Programmort- Informationsbereichen unter Umständen geändert werden müs­ sen, wenn Änderungen in der Auslastung irgendeines Computers bewirken, daß sich die Entsprechungsbeziehung zwischen der Zeitgrenze und dem Prioritätswert ändert. Daher ist das in den Fig. 35, 36 dargestellte System dann von Vorteil, wenn sich die Auslastungen der jeweiligen Computer zeitlich stark ändern.
Abweichend von dem in den Fig. 35, 36 dargestellten System und dem in Fig. 37 dargestellten System ist es auch möglich, ein System aufzubauen, das eine Kombination aus der Pro­ grammauswahleinrichtung 760 und der Prioritätswert-Umsetz­ einrichtung 720 enthält, oder ein System, das die Programm­ auswahleinrichtung 700 und die Prioritätswert-Umsetzeinrich­ tungen 572, 573 enthält. Ferner sind zwar die Prioritäts­ wert-Umsetzeinrichtungen 146, 147 für die in den Fig. 35-37 dargestellten Systeme nicht beschrieben, da diese Systeme nicht davon ausgehen, daß sie ein Programm mit verändertem Prioritätswert starten müssen, jedoch können diese Einrich­ tungen hinzugefügt sein, damit das System die Prioritätswer­ te ändern kann.
Schließlich zeigt Fig. 38 ein System gemäß einem dreizehnten Ausführungsbeispiel der Erfindung, das eine Zeitgrenze dazu verwendet, um ein an ein Programm ausgegebene Verarbeitungs­ anforderung auf ein anderes Programm zu verlegen, die den­ selben Vorgang wie das angeforderte Programm ausführt, ähn­ lich wie dies beim verteilten Rechnersystem in Fig. 21 der Fall ist. In Fig. 38 sind die Elemente 100-103, 110 sowie 140-143 identisch mit denjenigen Elementen, die in Fig. 1 mit denselben Bezugszahlen gekennzeichnet sind. Einzelheiten zur Hardware der Computer 100, 101 sind weggelassen. Priori­ tätswert-Umsetzeinrichtungen 572, 573 sowie ein Verarbei­ tungsmenge-Datenwert 600 entsprechen jeweils demselben Da­ tenablauf sowie Datenstruktur wie in Fig. 22. Benutzerpro­ gramme 430-443 sowie Programmstrukturen 450-462 haben jeweils denselben Inhalt wie Fig. 17. Programmstrukturen, die den Benutzerprogrammen 432, 433, 439 entsprechen, sind weggelassen. Auch-sind die Elemente 760, 760-776 sowie 780-789 in Fig. 38 identisch mit denjenigen Elementen, die in Fig. 37 mit denselben Bezugszahlen bezeichnet sind. Die Verarbeitungsverlegeeinrichtung 550, die Schlange 551 sowie die Verarbeitungsanforderungen 552, 553 sind identisch mit den entsprechenden Einheiten in Fig. 21.
Um das Konzept der Zeitgrenze zu verwenden, kann eine Bedin­ gung zum Verlegen einer angeforderten Verarbeitung auf ein anderes Programm die folgenden zwei repräsentativen Beispie­ le umfassen:
  • (1) Eine Anforderung für eine neue Verarbeitung wird an ein Programm ausgegeben, das gerade schon eine andere Verarbei­ tung ausführt; und
  • (2) es wird erkannt, daß eine aktuell ausgeführte Verarbei­ tung nicht rechtzeitig beendet wird.
Im ersteren Fall ermöglichen es die Verarbeitungsverlegeein­ richtung 550 und die Schlange 551, daß eine Verarbeitungs­ anforderung auf ein anderes Programm verlegt werden kann, ähnlich wie bei der in Fig. 21 dargestellten Situation. Je­ doch unterscheidet sich dieses Ausführungsbeispiel dahinge­ hend, daß die Verarbeitungsverlegeeinrichtung 550 eine Zeit­ grenze für eine Programmauswahleinrichtung 760 spezifiziert.
Im letztgenannten Fall kann die Verarbeitungsverlegung da­ durch erzielt werden, daß jedes Programm mit einer Verarbei­ tungszeit-Voraussageeinrichtung 800 und einer Zeitgrenze- Einstelleinrichtung 802 versehen wird. Die Verarbeitungs­ zeit-Voraussageeinrichtung 800 sagt eine Zeit voraus, wie sie dazu erforderlich ist, eine aktuell ausgeführte Verar­ beitung abzuschließen. Die Voraussage kann z. B. dadurch erfolgen, daß für jedes Programm eine Verarbeitungsrestmenge 801 abgespeichert wird. Wenn z. B. angenommen wird, daß ein Benutzerprogramm 438 eine Verarbeitungsrestmenge 801 mit dem Wert 60 aufweist, kann, da die Zeitgrenze pro Einheitsverar­ beitungsmenge des Benutzerprogramms 438 (Prioritätswert 1 im Computer 101) 0,074 Millisekunden ist, die zum Abschließen des Programms 438 erforderliche Zeit zu 4,44 Millisekunden (0,074 × 60 = 4,44) abgeschätzt werden. Die Zeitgrenze-Ein­ stelleinrichtung 802 berechnet die neue Zeitgrenze, wenn das zugehörige Programm eine Verarbeitungsanforderung neu an ein anderes Programm ausgibt. Diese Einstellung kann dadurch be­ werkstelligt werden, daß die Zeit 803 abgespeichert wird, die ab dem Zeitpunkt verstrichen ist, zu dem die Verarbei­ tungsanforderung empfangen wurde, oder dergleichen.
Der durch Verbindungen 810-816 veranschaulichte Ablauf repräsentiert, wie eine Verarbeitungsanforderung von einem Programm auf ein anderes verlegt wird, wenn eine solche Ver­ arbeitungsanforderung zu verlegen ist. Das Ausführungsbei­ spiel von Fig. 38 zeigt, daß das Benutzerprogramm 440 eine Verarbeitungsanforderung an das Benutzerprogramm 438 (Pro­ gramm in einer Programmgruppe F) mit einer Zeitgrenze von fünf Millisekunden ausgibt (Verbindung 810), und diese Ver­ arbeitungsanforderung wird vom Benutzerprogramm 438 auf ein anderes Programm verlegt. Es ist angenommen, daß die Verar­ beitungsrestmenge 60.000 Anweisungen ist, und zwar 1,8 Mil­ lisekunden nach dem Zeitpunkt, zu dem die Verarbeitungsan­ forderung 552 ausgegeben wurde. Die Verarbeitungszeit-Vor­ aussageeinrichtung 800 empfängt von der Prioritätswert- Umsetzeinrichtung 573 eine Zeitgrenze pro Einheitsverarbei­ tungsmenge von 0,074 Millisekunden, was dem Prioritätswert 1 des Programms 440 entspricht (Verbindung 811), und aus der obengenannten Berechnung wird eine Verarbeitungsvoraussage­ zeit von 4,44 Millisekunden hergeleitet (Verbindung 812). Die Zeitgrenze-Einstelleinrichtung 802 berechnet ausgehend von der Zeitgrenze von fünf Millisekunden und der verstri­ chenen Zeit von 1,8 Millisekunden eine neue Zeitgrenze von 3,2 Millisekunden (Verbindung 813). Da vorausgesagt ist, daß die restliche Verarbeitung nicht innerhalb der neuen Zeit­ grenze abgeschlossen werden kann, wird diese Verarbeitungs­ anforderung an ein anderes Programm verlegt. Für diese Ver­ legung befragt die Verarbeitungsverlegeeinrichtung 550 die Programmauswahleinrichtung 760 unter Angabe der neu berech­ neten Zeitgrenze von 3,2 Millisekunden, ob in der Programm­ gruppe F ein Programm vorhanden ist, das diese Zeitgrenze erfüllt (Verbindung 814). Die Programmauswahleinrichtung 760 durchsucht eine Programmliste 776 für die Programmgruppe F nach Programmortsinformation für ein Programm, das der Zeit­ grenze von 3,2 Millisekunden genügt. Bei dem in Fig. 38 dar­ gestellten Beispiel kann die Programmauswahleinrichtung 760 die Programmortsinformation 789 auffinden (entsprechend einem Benutzerprogramm 439 im Computer 103). Die Programm­ auswahleinrichtung 760 informiert die Verarbeitungsverlege­ einrichtung 550 über den Ort des Benutzerprogramms 439, das der Programmortsinformation 789 entspricht (Verbindung 815).
Die Verarbeitungsverlegeeinrichtung 550 fordert dann, wenn sie diese Information empfängt, das Benutzerprogramm 439 dazu auf, die Verarbeitung 552 auszuführen, für die erkannt wurde, daß sie nicht innerhalb der Zeitgrenze abgeschlossen wurde (Verbindung 816).
Durch das dreizehnte Ausführungsbeispiel kann eine an ein Programm ausgegebene Verarbeitungsanforderung auf ein ande­ res Programm verlegt werden, das dieselbe Zeitgrenze wie das angeforderte Programm hat, um zu verhindern, daß eine Anzahl von Verarbeitungsanforderungen auf einen einzelnen Computer konzentriert wird, was es ermöglicht, die Verarbeitungsan­ forderungen auf mehrere Programme zu verteilen. Da eine neu angeforderte Verarbeitung sofort ausgeführt werden kann, ohne auf den Abschluß einer aktuell ausgeführten Verarbei­ tung warten zu müssen, sind ferner verbesserte Echtzeit­ eigenschaften sichergestellt.
Gemäß diesem Ausführungsbeispiel kann eine an ein Programm ausgegebene Verarbeitungsanforderung auf ein anderes Pro­ gramm verlegt werden, das die Verarbeitung schneller als das angeforderte Programm abschließen kann, und zwar wenn er­ kannt wird, daß das angeforderte Programm die Verarbeitung nicht rechtzeitig abschließen kann, wodurch strenger sicher­ gestellt ist, daß die erforderliche Verarbeitung innerhalb der Zeitgrenze abgeschlossen wird. Die Verlegung einer Ver­ arbeitungsanforderung soll in diesem Fall gewährleisten, daß die Zeitgrenze selbst dann erfüllt wird, wenn irgendein un­ erwarteter Zwischenfall dazu führt, daß die Ausführung eines Programms verzögert wird.
Während das in Fig. 38 dargestellte System über eine Verar­ beitungsverlegeeinrichtung 550, eine Schlange 551, eine Ver­ arbeitungszeit-Voraussageeinrichtung 800 und eine Zeitgren­ ze-Einstelleinrichtung 802 in jedem Programm verfügt, können diese Elemente außerhalb der Programme angeordnet sein, so daß sie von mehreren Programmen gemeinsam genutzt werden können. Zusammengefaßt gesagt, besteht das verteilte Compu­ tersystem dieses Ausführungsbeispiel aus einer Kombination der Programmauswahleinrichtung 760 und der Prioritätswert- Umsetzeinrichtungen 572, 573, wie in Fig. 37 dargestellt, wobei zusätzlich die Verarbeitungsverlegeeinrichtung 550, die Schlange 551, die Verarbeitungszeit-Voraussageeinrich­ tung 800 und die Zeitgrenze-Einstelleinrichtung 802 vorhan­ den sind. Alternativ können diese zusätzlichen Vorgänge und Datenstrukturen zum in Fig. 35 dargestellten verteilten Rechnersystem hinzugefügt sein, das eine Kombination aus einer Programmauswahleinrichtung 700 und einer Prioritäts­ wert-Umsetzeinrichtung 720 beinhaltet, um ähnliche Vorgänge auszuführen.
Ausgehend vom vorstehend genannten dreizehnten Ausführungs­ beispiel kann eine alternative Konfiguration erzeugt werden. Genauer gesagt, verlegt das System des dreizehnten Ausfüh­ rungsbeispiels eine Verarbeitungsanforderung auf ein anderes Programm, wenn festgestellt wird, daß das angeforderte Pro­ gramm eine auferlegte Zeitgrenze nicht erfüllen kann, jedoch ist es auch möglich, einem Programm, das zum Ausführen der Verarbeitung angefordert wird, einen höheren Prioritätswert zu geben, anstatt die Verarbeitung zu verlegen, so daß die aktuell ausgeführte Verarbeitung schneller abgeschlossen wird. Bei dieser Alternative wird bei dem in Fig. 38 darge­ stellten System aus der neuen Zeitgrenze von 3,2 Millisekun­ den und der Verarbeitungsrestmenge von 60.000 Anweisungen eine Zeitgrenze pro Einheitsverarbeitungsmenge von 0,053 Millisekunden berechnet (3,2/60 = 0,053), und der Priori­ tätswert des Benutzerprogramms 438 wird auf den Prioritäts­ wert 0 angehoben, um der berechneten Zeitgrenze pro Ein­ heitsverarbeitungsmenge zu genügen, wodurch das Benutzerpro­ gramm 438 die Verarbeitung mit dem erhöhten Prioritätswert fortsetzt.
Es ist zu beachten, daß die Verbindungszeit-Voraussageein­ richtungen 670, 671 in Fig. 29 in die Systeme der Fig. 30-38 eingeführt werden können, um die Zeitgrenze genauer zu bestimmen.
Wie es aus der Beschreibung zum ersten bis dreizehnten Aus­ führungsbeispiel ersichtlich ist, erzielt die Erfindung gleichmäßige Verwaltung örtlich definierter Prioritätswerte in jeweiligen Computern, die zu einem verteilten Computer­ system gehören, unter Verwendung eines Dringlichkeitswerts oder einer Zeitgrenze, um eine strengere Einhaltung von Echtzeiteigenschaften zu gewährleisten.
Beim erfindungsgemäßen System, das den Prioritätswert mit­ tels eines Dringlichkeitswerts verwaltet, sind eine Priori­ tätswert-Umsetzeinrichtung und eine Prioritätswert-Ände­ rungseinrichtung dazu verwendet, sicherzustellen, daß Verar­ beitungen mit demselben Dringlichkeitswert in allen Compu­ tern, auch wenn diese unterschiedliches Funktionsvermögen und unterschiedliche Auslastung aufweisen, im wesentlichen mit derselben Geschwindigkeit ausgeführt werden.
Auch verhindert die beim erfindungsgemäßen System verwendete Computerauswahleinrichtung, daß eine Anzahl von Verarbei­ tungsanforderungen mit hohem Dringlichkeitswert auf einen einzelnen Computer konzentriert wird, wodurch es ermöglicht ist, Echtzeiteigenschaften in den jeweiligen Computern strenger einzuhalten.
Ferner werden durch die Programmauswahleinrichtung mehrere Programme mit verschiedenen Dringlichkeitswerten bereitge­ stellt, so daß eine Verarbeitungsanforderung an das Programm mit dem geeignetsten Dringlichkeitswert unter ihnen ausgege­ ben wird, selbst wenn keine Prioritätswert-Änderungseinrich­ tung verändert wird, mit dem Ergebnis, daß die Verarbeitung mit gewünschter Geschwindigkeit ausgeführt werden kann.
Ferner kann unter Verwendung einer Verarbeitungsverlegeein­ richtung eine Verarbeitung, wie sie von einem aktuell lau­ fenden Programm gefordert wird, an ein anderes Programm ver­ legt werden und von diesem ausgeführt werden, das die Aus­ führung mit im wesentlichen derselben Geschwindigkeit vor­ nehmen kann, ohne daß auf den Abschluß der gerade ausgeführ­ ten Verarbeitung gewartet werden muß, wodurch eine strengere Einhaltung von Echtzeiteigenschaften gewährleistet ist.
Beim erfindungsgemäßen System, das den Prioritätswert mit­ tels der Zeitgrenze verwaltet, werden eine Prioritätswert- Umsetzeinrichtung und eine Prioritätswert-Änderungseinrich­ tung dazu verwendet, eine Verarbeitung abhängig vom örtli­ chen Prioritätswert in einem speziellen Computer abhängig von einer spezifizierten Zeitgrenze auszuführen. Dies ermög­ licht es, daß eine Verarbeitung mit einer strengeren Zeit­ grenze vor einer anderen Verarbeitung mit einer weniger strengen Zeitgrenze ausgeführt wird, so daß die Echtzeit­ eigenschaften für jede Verarbeitung im verteilten Computer­ system strenger gewährleistet werden können. Auch dann, wenn eine Verarbeitung mit relativ langer Zeitgrenze unbearbeitet bleibt, um bevorzugt andere Verarbeitungen mit kurzer Zeit­ grenze auszuführen, nähert sich die verstrichene Zeitgrenze der auferlegten Zeitgrenze an. In diesem Fall kann der Prio­ ritätswert für die Verarbeitung abhängig von der verkürzten Zeitgrenze auf einen höheren Wert korrigiert werden, und die Verarbeitung wird mit diesem korrigierten Prioritätswert ausgeführt.
Durch die Verbindungszeit-Voraussageeinrichtung kann die Zeitgrenze für die Verarbeitung genauer vorgegeben werden, wenn die Verbindungszeit zwischen Computern nicht vernach­ lässigbar ist.
Die Computerauswahleinrichtung verhindert, daß eine Anzahl von Verarbeitungen mit kurzer Zeitgrenze auf einen einzelnen Computer konzentriert wird, wodurch es möglich ist, Echt­ zeiteigenschaften strenger einzuhalten.
Durch die Programmauswahleinrichtung werden mehrere Program­ me mit verschiedenen Dringlichkeitswerten bereitgestellt, damit eine Verarbeitungsanforderung an das Programm mit dem geeignetsten Dringlichkeitswert unter ihnen ausgegeben wird, selbst ohne Verwendung einer Prioritätswert-Änderungsein­ richtung, mit dem Ergebnis, daß die Verarbeitung mit ge­ wünschter Geschwindigkeit ausgeführt werden kann.
Ferner kann unter Verwendung der Verarbeitungsverlegeein­ richtung eine Verarbeitung, wie sie von einem aktuell be­ triebenen Programm gewünscht wird, auf ein anderes Programm verlegt und von diesem ausgeführt werden, das diese Verar­ beitung mit im wesentlichen derselben Geschwindigkeit aus­ führen kann, ohne daß auf den Abschluß der aktuell ausge­ führten Verarbeitung gewartet werden muß, wodurch eine strengere Einhaltung von Echtzeiteigenschaften gewährleistet ist.
Durch die Verarbeitungszeit-Voraussageeinrichtung und die Zeitgrenze-Einstelleinrichtung wird ermittelt, ob eine einer bestimmten Verarbeitung auferlegte Zeitgrenze erfüllt ist, wenn ein Programm diese Verarbeitung mit dem aktuellen Prio­ ritätswert ausführen soll. Wenn erkannt wird, daß die Zeit­ grenze nicht erfüllt wird, kann dem Programm eine kürzere Zeitgrenze zugeteilt werden. Unter Verwendung der neu ein­ gestellten Zeitgrenze können die Prioritätswert-Umsetzein­ richtungen die Prioritätswert-Änderungseinrichtung dem Pro­ gramm einen höheren Prioritätswert verleihen und die Verar­ beitung an ein anderes Programm verlegen, das denselben Vor­ gang ausführt und das der neuen Zeitgrenze genügen kann, um dieses Programm dazu auf zufordern, die Verarbeitung auszu­ führen. Auf diese Weise kann die Verarbeitung so verwaltet werden, daß der ursprünglich vorgegebene Zeitgrenze genügt wird.
Zusammengefaßt gesagt, können gemäß der Erfindung örtliche Prioritätswerte, wie sie an die Verarbeitung in jeweiligen Computern vergeben sind, in einem gesamten verteilten Com­ putersystem gleichmäßig verwaltet werden. Zusätzlich können strengere Echtzeiteigenschaften in einem verteilten Compu­ tersystem gewährleistet werden, das Computer beinhaltet, die sich hinsichtlich des Funktionsvermögens, der Auslastung und des Typs voneinander unterscheiden.

Claims (20)

1. Verteiltes Computersystem mit mehreren Computern (100-103), auf denen mehrere Programme (130-136) laufen, ge­ kennzeichnet durch:
  • - eine Prioritätswert-Bestimmungseinrichtung (144, 145; 146, 147) zum Bestimmen eines Prioritätswerts zum Ausführen eines Programms unter Berücksichtigung des Funktionsvermögens und/oder der Last jedes Computers wie auch eines Dringlichkeits­ werts für die vom Programm auszuführende Verarbeitung.
2. Verteiltes Computersystem mit mehreren Computern (100-103), auf denen mehrere Programme (130-136) laufen, ge­ kennzeichnet durch:
  • - eine Prioritätswert-Bestimmungseinrichtung (572, 573; 146, 147) zum Bestimmen eines Prioritätswerts zum Ausführen eines Programms unter Berücksichtigung des Funktionsvermögens und/oder der Last jedes Computers wie auch einer Zeitgrenze und auch einer Verarbeitungsmenge für die vom Programm auszufüh­ rende Verarbeitung.
3. Verteiltes Computersystem mit mehreren Computern (100-103), auf denen mehrere Programme (130-136) laufen, da­ durch gekennzeichnet, daß jeder Computer folgendes beinhal­ tet:
  • - eine Prioritätswert-Umsetzeinrichtung (144, 145) zum Aus­ führen einer Umsetzung zwischen einem Dringlichkeitswert und einem Prioritätswert für die Verarbeitung abhängig von der Funktionsfähigkeit und der Auslastung dieses Computers; und
  • - eine Prioritätswert-Änderungseinrichtung (146, 147) zum Ändern des Prioritätswerts eines Programms, das die Verar­ beitung ausführt, abhängig vom Prioritätswert, wie er von der Prioritätswert-Umsetzeinrichtung angegeben wird.
4. Verteiltes Computersystem mit mehreren Computern (100-103), auf denen mehrere Programme (130-136) laufen, da­ durch gekennzeichnet, daß jeder Computer folgendes beinhal­ tet:
  • - eine Prioritätswert-Umsetzeinrichtung (572, 573) zum Aus­ führen einer Umsetzung zwischen einem Satz aus einer Zeit­ grenze und einer Verarbeitungsmenge für die Verarbeitung abhängig von der Funktionsfähigkeit und der Auslastung die­ ses Computers; und
  • - eine Prioritätswert-Änderungseinrichtung (146, 147) zum Ändern des Prioritätswerts eines Programms, das die Verar­ beitung ausführt, abhängig vom Prioritätswert, wie er von der Prioritätswert-Umsetzeinrichtung angegeben wird.
5. Verteiltes Computersystem nach Anspruch 3, dadurch ge­ kennzeichnet, daß die Prioritätswert-Umsetzeinrichtung (144, 145) eine Prioritätswert-Entsprechungstabelle (150, 151) be­ inhaltet, die die Entsprechung zwischen einem Dringlich­ keitswert und einem Prioritätswert für die Verarbeitung an­ gibt.
6. Verteiltes Computersystem nach Anspruch 3, dadurch ge­ kennzeichnet, daß die Prioritätswert-Umsetzeinrichtung (144, 145) die Entsprechungsbeziehung zwischen dem Dringlichkeits­ wert und dem Prioritätswert der Verarbeitung abhängig von Änderungen der Auslastungen der Computer verändert.
7. Verteiltes Computersystem nach Anspruch 6, dadurch ge­ kennzeichnet, daß die Prioritätswert-Umsetzeinrichtung (144, 145) den Prioritätswert jedes Programms auf den Computern abhängig von Änderungen der Auslastungen der Computer än­ dert.
8. Verteiltes Computersystem nach Anspruch 3, dadurch ge­ kennzeichnet, daß jedes der mehreren Programme einen Dring­ lichkeitswert für die Verarbeitung spezifiziert, wenn dieses Programm andere Programme dazu auffordert, die Verarbeitung auszuführen.
9. Verteiltes Computersystem nach Anspruch 4, dadurch ge­ kennzeichnet, daß jedes der mehreren Programme eine Zeit­ grenze für die Verarbeitung spezifiziert, wenn dieses Pro­ gramm ein anderes Programm dazu auffordert, die Verarbeitung auszuführen.
10. Verteiltes Computersystem nach Anspruch 4, ferner ge­ kennzeichnet durch:
  • - eine Verbindungszeit-Voraussageeinrichtung (670, 671) zum Voraussagen einer Verbindungszeit, wie sie für die Verbin­ dung zu einem anderen Computer erforderlich ist;
  • - wobei jedes der mehreren Programme dann, wenn es ein ande­ res Programm zum Ausführen der Verarbeitung auffordert, von der Verbindungszeit-Voraussageeinrichtung eine vorausgesagte Verbindungszeit empfängt, wie sie dazu erforderlich ist, mit einem Computer Information auszutauschen, auf dem das andere Programm läuft, um die Zeitgrenze für die Verarbeitung unter Berücksichtigung der vorausgesagten Verbindungszeit zu spe­ zifizieren.
11. Verteiltes Computersystem mit mehreren Computern (100-103), auf denen mehrere Programme (130-136) laufen, ge­ kennzeichnet durch:
  • - eine Computerauswahleinrichtung (294) zum Bestimmen eines Computers, der dazu geeignet ist, ein Programm auszuführen, und zwar unter Berücksichtigung des Funktionsvermögens und/oder der Auslastung jedes Computers und/oder eines Dring­ lichkeitswerts für die vom Programm auszuführende Verarbei­ tung; und
  • - eine Prioritätswert-Umsetzeinrichtung (260) zum Ausführen einer Umsetzung zwischen dem Dringlichkeitswert für die Ver­ arbeitung und einem Prioritätswert für einen ausgewählten Computer, abhängig vom Funktionsvermögen und/oder der Ausla­ stung des Computers.
12. Verteiltes Computersystem mit mehreren Computern (100-103), auf denen mehrere Programme (130-136) laufen, ge­ kennzeichnet durch:
  • - eine Computerauswahleinrichtung (294) zum Bestimmen eines Computers, der dazu geeignet ist, ein Programm auszuführen, und zwar unter Berücksichtigung des Funktionsvermögens und/oder der Auslastung jedes Computers und/oder eines Satzes aus einer Zeitgrenze und einer Verarbeitungsmenge für die vom Programm auszuführende Verarbeitung; und
  • - eine Prioritätswert-Umsetzeinrichtung (260) zum Ausführen einer Umsetzung zwischen dem Satz aus einer Zeitgrenze und einer Verarbeitungsmenge für die Verarbeitung und einem Prioritätswert für einen ausgewählten Computer, abhängig vom Funktionsvermögen und/oder der Auslastung des Computers.
13. Verteiltes Computersystem mit mehreren Computern (100-103), auf denen mehrere Programme (130-136) laufen, wobei ein aktuell auf einem Computer laufendes Programm auf einen anderen Computer verschoben wird, gekennzeichnet durch:
  • - eine Computerauswahleinrichtung (294) zum Bestimmen eines Zielcomputers, auf den das Programm zu verschieben ist, und zwar unter Berücksichtigung des Funktionsvermögens und/oder der Auslastung jedes Computers und/oder des Dringlichkeits­ werts für die vom Programm auszuführende Verarbeitung; und
  • - eine Prioritätswert-Umsetzeinrichtung (260) zum Ausführen einer Umsetzung zwischen dem Dringlichkeitswert der Verar­ beitung und einem Prioritätswert auf dem Zielcomputer abhän­ gig vom Funktionsvermögen und der Auslastung des Zielcompu­ ters.
14. Verteiltes Computersystem mit mehreren Computern (100-103), auf denen mehrere Programme (130-136) laufen, ge­ kennzeichnet durch:
  • - eine Prioritätswert-Umsetzeinrichtung (260) zum Ausführen einer Umsetzung zwischen einem Dringlichkeitswert für die von einem Programm ausgeführte Verarbeitung und einem Prio­ ritätswert auf jedem Computer, abhängig vom Funktionsvermö­ gen und der Auslastung jedes Computers; und
  • - eine Computerauswahleinrichtung (294) zum Auswählen eines Computers, der zum Ausführen des Programms geeignet ist, un­ ter Berücksichtigung der Auslastung jedes Computers und des Prioritätswerts für jeden Computer, wie durch die Priori­ tätswert-Umsetzeinrichtung angegeben.
15. Verteiltes Computersystem mit mehreren Computern (100-103), auf denen mehrere Programme (430-442) laufen, wobei mehrere denselben Vorgang ausführende Programme in den Com­ putern vorhanden sind und wobei eines der mehreren denselben Vorgang ausführenden Programme dazu aufgefordert wird, eine Verarbeitung auszuführen, gekennzeichnet durch:
  • - eine Programmauswahleinrichtung (410) zum Bestimmen des Programms mit optimalem Prioritätswert aus den mehreren denselben Vorgang ausführenden Programmen unter Berücksich­ tigung des Funktionsvermögens und/oder der Auslastung jedes Computers und/oder des Dringlichkeitswerts der Verarbeitung.
16. Verteiltes Computersystem mit mehreren Computern (100-103), auf denen mehrere Programme (430-442) laufen, wobei mehrere denselben Vorgang ausführende Programme in den Com­ putern vorhanden sind und wobei eines der mehreren denselben Vorgang ausführenden Programme dazu aufgefordert wird, eine Verarbeitung auszuführen, gekennzeichnet durch:
  • - eine Programmauswahleinrichtung (410) zum Bestimmen des Programms mit optimalem Prioritätswert aus den mehreren denselben Vorgang ausführenden Programmen unter Berücksich­ tigung des Funktionsvermögens und/oder der Auslastung jedes Computers und/oder eines Satzes aus einer Zeitgrenze und einer Verarbeitungsmenge der Verarbeitung.
17. Verteiltes Computersystem mit mehreren Computern (100-103), auf denen mehrere Programme (430-442) laufen, wobei mehrere denselben Vorgang ausführende Programme in den Com­ putern vorhanden sind und wobei eines der mehreren denselben Vorgang ausführenden Programme, das gerade eine Verarbeitung ausführt, zusätzliche aufgefordert wird, eine andere Verar­ beitung auszuführen, gekennzeichnet durch:
  • - eine Programmauswahleinrichtung (410) zum Bestimmen des Programms mit optimalem Prioritätswert aus den mehreren denselben Vorgang ausführenden Programmen unter Berücksich­ tigung des Funktionsvermögens und/oder der Auslastung jedes Computers und/oder des Dringlichkeitswerts der Verarbeitung;
  • - eine Verarbeitungsverlegeeinrichtung (550) zum Verlegen der zusätzlich angeforderten Verarbeitung auf das Programm, wie es von der Programmauswahleinrichtung angezeigt wird.
18. Verteiltes Computersystem mit mehreren Computern (100-103), auf denen mehrere Programme (430-442) laufen, wobei mehrere denselben Vorgang ausführende Programme in den Com­ putern vorhanden sind und wobei eines der mehreren denselben Vorgang ausführenden Programme, das gerade eine Verarbeitung ausführt, zusätzliche aufgefordert wird, eine andere Verar­ beitung auszuführen, gekennzeichnet durch:
  • - eine Programmauswahleinrichtung (760) zum Bestimmen des Programms mit optimalem Prioritätswert aus den mehreren denselben Vorgang ausführenden Programmen unter Berücksich­ tigung des Funktionsvermögens und/oder der Auslastung jedes Computers und/oder eines Satzes aus einer Zeitgrenze und einer Verarbeitungsmenge der Verarbeitung;
  • - eine Verarbeitungsverlegeeinrichtung (550) zum Verlegen der zusätzlich angeforderten Verarbeitung auf das Programm, wie es von der Programmauswahleinrichtung angezeigt wird.
19. Verteiltes Computersystem mit mehreren Computern (100-103), auf denen mehrere Programme (430-442) laufen, wobei mehrere denselben Vorgang ausführende Programme in den Com­ putern vorhanden sind, gekennzeichnet durch:
  • - eine Verarbeitungs-Voraussageeinrichtung (800) zum Voraus­ sagen der Verarbeitungszeit, wie sie wahrscheinlich ein Pro­ gramm benötigt, um eine gerade bearbeitete Verarbeitung zu beenden, und zwar auf Grundlage des Funktionsvermögens, der Auslastung und der Verarbeitungsmenge für einen Computer, in dem das Programm vorliegt;
  • - eine Zeitgrenze-Einstelleinrichtung (802) zum Berechnen 15 einer neuen Zeitgrenze, wenn eine vorausgesagte Verarbei­ tungszeit, wie sie durch die Verarbeitungszeit-Voraussage­ einrichtung angegeben wird, die Zeitgrenze nicht erfüllt, wie sie für diese Verarbeitung erforderlich ist, und zwar ausgehend von der Zeit, wie sie verstrichen ist, seit die Verarbeitung angefordert wurde, und der erforderlichen Zeit­ grenze;
  • - eine Prioritätswert-Umsetzeinrichtung (580, 581) zum Aus­ führen einer Umsetzung zwischen einem Satz aus der neuen Zeitgrenze und der Verarbeitungsmenge für das Programm und dem Prioritätswert in jedem Computer;
  • - eine Programmauswahleinrichtung (760) zum Bestimmen eines Programms, das den mehreren denselben Vorgang ausführenden Programmen, das denselben oder einen höheren Prioritätswert aufweist, als es dem Prioritätswert entspricht, wie er von der Prioritätswert-Umsetzeinrichtung angegeben wird; und
  • - eine Verarbeitungsverlegeeinrichtung (550) zum Verlegen der Verarbeitungsanforderung an das durch die Programmaus­ wahleinrichtung angegebene Programm.
20. Verteiltes Computersystem mit mehreren Computern (100-103), auf denen mehrere Programme (430-442) laufen, ge­ kennzeichnet durch:
  • - eine Verarbeitungszeit-Voraussageeinrichtung (800) zum Voraussagen der Verarbeitungszeit, wie sie vermutlich dazu erforderlich ist, eine von den mehreren Programmen gerade ausgeführte Verarbeitung abzuschließen, und zwar auf Grund­ lage des Funktionsvermögens, der Auslastung und der Verar­ beitungsmenge des jeweiligen Computers, in dem ein jeweili­ ges Programm vorhanden ist;
  • - eine Zeitgrenze-Einstelleinrichtung (802) zum Berechnen einer neuen Zeitgrenze, wenn eine vorausgesagte Verarbei­ tungszeit, wie sie durch die Verarbeitungszeit-Voraussage­ einrichtung angegeben wird, die Zeitgrenze nicht erfüllt, wie sie für diese Verarbeitung erforderlich ist, und zwar ausgehend von der Zeit, wie sie verstrichen ist, seit die Verarbeitung angefordert wurde, und der erforderlichen Zeit­ grenze;
  • - eine Prioritätswert-Umsetzeinrichtung (580, 581) zum Aus­ führen einer Umsetzung zwischen einem Satz aus der neuen Zeitgrenze und der Verarbeitungsmenge für das Programm und dem Prioritätswert in jedem Computer; und
  • - eine Prioritätswert-Änderungseinrichtung (146, 147) zum Ändern des Prioritätswerts eines Programms, das die Verar­ beitung ausführt.
DE19513922A 1994-04-14 1995-04-12 Verteiltes Computersystem Withdrawn DE19513922A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP07561094A JP3658420B2 (ja) 1994-04-14 1994-04-14 分散処理システム

Publications (1)

Publication Number Publication Date
DE19513922A1 true DE19513922A1 (de) 1995-10-19

Family

ID=13581159

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19513922A Withdrawn DE19513922A1 (de) 1994-04-14 1995-04-12 Verteiltes Computersystem

Country Status (3)

Country Link
US (4) US5845116A (de)
JP (1) JP3658420B2 (de)
DE (1) DE19513922A1 (de)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1516244A1 (de) * 2002-06-24 2005-03-23 DoCoMo Communications Laboratories USA, Inc. Mobil-anwendungsumgebung
DE10345816A1 (de) * 2003-09-30 2005-05-25 Rexroth Indramat Gmbh Kombination aus Steuerung und Antrieb
DE102005046072A1 (de) * 2005-09-27 2006-09-21 Daimlerchrysler Ag Verfahren und Vorichtung zur Prozeßregelung
DE19744230B4 (de) * 1997-10-07 2007-10-25 Robert Bosch Gmbh Steuergeräte für ein System und Verfahren zum Betrieb eines Steuergeräts
DE102012011295A1 (de) * 2012-06-08 2013-12-12 Robert Bosch Gmbh Vorrichtung und verfahren für eine maschine, feldgerät für eine maschine und steuergerät für eine maschine
DE102006052757B4 (de) * 2006-11-08 2014-10-09 Siemens Aktiengesellschaft Verfahren zum Betrieb eines Automatisierungsgerätes mit einer Verarbeitungseinheit mit mehreren Verarbeitungskernen

Families Citing this family (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3658420B2 (ja) * 1994-04-14 2005-06-08 株式会社日立製作所 分散処理システム
JPH08263481A (ja) * 1995-03-22 1996-10-11 Hitachi Ltd 電子化文書回覧システム
US5754776A (en) * 1995-12-28 1998-05-19 Intel Corporation Re-prioritizing background data transfers in multipoint conferencing
US6412017B1 (en) * 1996-07-01 2002-06-25 Microsoft Corporation Urgent replication facility
US6542610B2 (en) * 1997-01-30 2003-04-01 Intel Corporation Content protection for digital transmission systems
US6223243B1 (en) * 1997-06-12 2001-04-24 Nec Corporation Access control method with plural users having I/O commands prioritized in queues corresponding to plural memory units
US6148324A (en) * 1998-01-05 2000-11-14 Lucent Technologies, Inc. Prioritized load balancing among non-communicating processes in a time-sharing system
US20050204388A1 (en) * 1998-06-11 2005-09-15 Knudson Edward B. Series reminders and series recording from an interactive television program guide
US6269274B1 (en) * 1998-09-09 2001-07-31 Honeywell International Inc System and method for balancing and distributing control algorithm processing load and real time plant control system employing the same
US6363445B1 (en) 1998-10-15 2002-03-26 Micron Technology, Inc. Method of bus arbitration using requesting device bandwidth and priority ranking
JP4072271B2 (ja) * 1999-02-19 2008-04-09 株式会社日立製作所 複数のオペレーティングシステムを実行する計算機
US6874144B1 (en) * 1999-04-05 2005-03-29 International Business Machines Corporation System, method, and program for implementing priority inheritance in an operating system
DE19930119C2 (de) * 1999-06-30 2001-06-07 Siemens Ag Prioritätsverwaltungsverfahren
US6754848B1 (en) * 1999-09-30 2004-06-22 International Business Machines Corporation Method, system and program products for operationally migrating a cluster through emulation
US6748413B1 (en) * 1999-11-15 2004-06-08 International Business Machines Corporation Method and apparatus for load balancing of parallel servers in a network environment
US6738972B1 (en) * 1999-12-30 2004-05-18 Opentv, Inc. Method for flow scheduling
JP4475614B2 (ja) * 2000-04-28 2010-06-09 大正製薬株式会社 並列処理方法におけるジョブの割り当て方法および並列処理方法
DE01951081T1 (de) * 2000-06-19 2004-04-15 P.C. Krause and Associates, Inc, West Lafayette Verteilte simulation
JP2002024194A (ja) * 2000-07-05 2002-01-25 Matsushita Electric Ind Co Ltd ジョブ分散処理方法および分散処理システム
US6886045B1 (en) * 2000-08-14 2005-04-26 At&T Corp. Subscription-based priority interactive help services on the internet
US6971101B1 (en) * 2000-09-12 2005-11-29 Motorola, Inc. Managing asynchronous requests for user interface resources in an information system
US6957433B2 (en) * 2001-01-08 2005-10-18 Hewlett-Packard Development Company, L.P. System and method for adaptive performance optimization of data processing systems
JP3716753B2 (ja) * 2001-03-21 2005-11-16 日本電気株式会社 マルチプロセッサ構成の計算機間におけるトランザクション負荷分散方法及び方式並びにプログラム
GB2389482B (en) * 2001-03-28 2004-05-05 Ericsson Telefon Ab L M Load distribution between nodes in communication networks
US6820126B2 (en) * 2001-04-02 2004-11-16 Motorola, Inc. System for dynamic process assignment in a local area network and method therefor
JP2003029989A (ja) * 2001-07-16 2003-01-31 Matsushita Electric Ind Co Ltd 分散処理システムおよびジョブ分散処理方法
US6922791B2 (en) * 2001-08-09 2005-07-26 Dell Products L.P. Failover system and method for cluster environment
JP2003091424A (ja) * 2001-09-18 2003-03-28 Matsushita Electric Ind Co Ltd 分散処理システムおよびジョブ分散処理方法
JP3918697B2 (ja) * 2001-12-27 2007-05-23 日本電気株式会社 サーバ構築支援システム及びサーバ構築支援方法並びにプログラム
JP2003256222A (ja) * 2002-03-04 2003-09-10 Matsushita Electric Ind Co Ltd 分散処理システム、ジョブ分散処理方法およびプログラム
JP3986346B2 (ja) * 2002-03-28 2007-10-03 富士通株式会社 処理装置、サーバ、およびプログラム
US7529822B2 (en) * 2002-05-31 2009-05-05 Symantec Operating Corporation Business continuation policy for server consolidation environment
US8020114B2 (en) * 2002-06-07 2011-09-13 Sierra Wireless, Inc. Enter-then-act input handling
US7080379B2 (en) 2002-06-20 2006-07-18 International Business Machines Corporation Multiprocessor load balancing system for prioritizing threads and assigning threads into one of a plurality of run queues based on a priority band and a current load of the run queue
JP4505707B2 (ja) * 2003-02-13 2010-07-21 株式会社白子 血管拡張による肩凝り又は冷え症治療用の医薬組成物
US7389512B2 (en) * 2003-05-09 2008-06-17 Sun Microsystems, Inc. Interprocess communication within operating system partitions
US7337445B1 (en) 2003-05-09 2008-02-26 Sun Microsystems, Inc. Virtual system console for virtual application environment
US8892878B2 (en) * 2003-05-09 2014-11-18 Oracle America, Inc. Fine-grained privileges in operating system partitions
US7461080B1 (en) 2003-05-09 2008-12-02 Sun Microsystems, Inc. System logging within operating system partitions using log device nodes that are access points to a log driver
US7437556B2 (en) * 2003-05-09 2008-10-14 Sun Microsystems, Inc. Global visibility controls for operating system partitions
US20040226015A1 (en) * 2003-05-09 2004-11-11 Leonard Ozgur C. Multi-level computing resource scheduling control for operating system partitions
US7188120B1 (en) 2003-05-09 2007-03-06 Sun Microsystems, Inc. System statistics virtualization for operating systems partitions
US7203944B1 (en) * 2003-07-09 2007-04-10 Veritas Operating Corporation Migrating virtual machines among computer systems to balance load caused by virtual machines
US7146511B2 (en) * 2003-10-07 2006-12-05 Hewlett-Packard Development Company, L.P. Rack equipment application performance modification system and method
US20050155032A1 (en) * 2004-01-12 2005-07-14 Schantz John L. Dynamic load balancing
US7080178B2 (en) * 2004-02-09 2006-07-18 Arm Limited Interrupt pre-emption and ordering within a data processing system
US7900206B1 (en) 2004-03-31 2011-03-01 Symantec Operating Corporation Information technology process workflow for data centers
US20050240934A1 (en) * 2004-04-21 2005-10-27 Hewlett-Packard Development Company, L.P. Task management based on system utilization
US8181182B1 (en) 2004-11-16 2012-05-15 Oracle America, Inc. Resource allocation brokering in nested containers
US7954062B2 (en) * 2005-01-03 2011-05-31 International Business Machines Corporation Application status board mitigation system and method
US8108871B2 (en) * 2005-01-13 2012-01-31 Hewlett-Packard Development Company, L.P. Controlling computer resource utilization
US9361156B2 (en) 2005-03-14 2016-06-07 2236008 Ontario Inc. Adaptive partitioning for operating system
US8387052B2 (en) * 2005-03-14 2013-02-26 Qnx Software Systems Limited Adaptive partitioning for operating system
US8245230B2 (en) * 2005-03-14 2012-08-14 Qnx Software Systems Limited Adaptive partitioning scheduler for multiprocessing system
CA2538503C (en) * 2005-03-14 2014-05-13 Attilla Danko Process scheduler employing adaptive partitioning of process threads
US8589944B2 (en) * 2005-03-16 2013-11-19 Ricoh Production Print Solutions Method and system for task mapping to iteratively improve task assignment in a heterogeneous computing system
US8392927B2 (en) * 2005-05-19 2013-03-05 Hewlett-Packard Development Company, L. P. System and method for determining a partition of a consumer's resource access demands between a plurality of different classes of service
US8326990B1 (en) 2005-07-15 2012-12-04 Symantec Operating Corporation Automated optimal workload balancing during failover in share-nothing database systems
JP4871546B2 (ja) 2005-08-22 2012-02-08 株式会社日立製作所 ストレージシステム
US7975269B2 (en) * 2005-09-27 2011-07-05 Sony Computer Entertainment Inc. Parallel processor methods and apparatus
JP5109250B2 (ja) 2005-11-08 2012-12-26 横河電機株式会社 分散システム
JP2007156976A (ja) * 2005-12-07 2007-06-21 Hitachi Kokusai Electric Inc 情報処理システム
US8539496B1 (en) * 2005-12-12 2013-09-17 At&T Intellectual Property Ii, L.P. Method and apparatus for configuring network systems implementing diverse platforms to perform business tasks
US8938473B2 (en) 2006-02-23 2015-01-20 Oracle America, Inc. Secure windowing for labeled containers
US7885975B2 (en) 2006-02-23 2011-02-08 Oracle America, Inc. Mechanism for implementing file access control using labeled containers
US7882227B2 (en) 2006-02-23 2011-02-01 Oracle America, Inc. Mechanism for implementing file access control across a network using labeled containers
US8938554B2 (en) 2006-03-02 2015-01-20 Oracle America, Inc. Mechanism for enabling a network address to be shared by multiple labeled containers
US7760743B2 (en) * 2006-03-06 2010-07-20 Oracle America, Inc. Effective high availability cluster management and effective state propagation for failure recovery in high availability clusters
JP2008040645A (ja) * 2006-08-03 2008-02-21 Hitachi Ltd Nasマイグレーションによる負荷分散方法、並びに、その方法を用いた計算機システム及びnasサーバ
JP2008084009A (ja) * 2006-09-27 2008-04-10 Toshiba Corp マルチプロセッサシステム
US8190561B1 (en) * 2006-12-06 2012-05-29 At&T Mobility Ii Llc LDAP replication priority queuing mechanism
US8589534B2 (en) * 2007-09-13 2013-11-19 Ricoh Company, Ltd. Device information management apparatus, device information management method, and storage medium which operates during a failure
JP5382449B2 (ja) * 2007-11-26 2014-01-08 日本電気株式会社 仮想計算機移行システム、仮想計算機移行方法および仮想計算機移行プログラム
JP2009199499A (ja) 2008-02-25 2009-09-03 Fujitsu Ltd リソース制御プログラム及びリソース制御方法
JP2010204876A (ja) * 2009-03-03 2010-09-16 Hitachi Ltd 分散システム
JP5347648B2 (ja) * 2009-03-30 2013-11-20 富士通株式会社 プログラム、情報処理装置及び状態出力方法
US8223693B2 (en) * 2009-06-23 2012-07-17 Mediatek Inc. PTA method and apparatus utilizing the same
US20120137302A1 (en) * 2010-06-18 2012-05-31 Panasonic Corporation Priority information generating unit and information processing apparatus
JP5582016B2 (ja) * 2010-12-15 2014-09-03 ソニー株式会社 タスク管理装置、タスク管理方法、及びプログラム
WO2013021472A1 (ja) 2011-08-09 2013-02-14 富士通株式会社 スケジューリング方法、およびスケジューリングシステム
JP5783259B2 (ja) * 2011-09-16 2015-09-24 富士通株式会社 コンピュータシステム
US20130073600A1 (en) * 2011-09-21 2013-03-21 Jonathan A. Jenkins Remote process execution management
US9477529B2 (en) 2012-06-20 2016-10-25 International Business Machines Corporation Job distributed within a grid environment using mega-host groupings of execution hosts based on resource attributes
US9575760B2 (en) * 2013-05-17 2017-02-21 Nvidia Corporation Techniques for sharing priorities between streams of work and dynamic parallelism
US20150081400A1 (en) * 2013-09-19 2015-03-19 Infosys Limited Watching ARM
US9660878B2 (en) * 2014-03-14 2017-05-23 International Business Machines Corporation Managing fabric priorities across heterogeneous server platforms
US9619012B2 (en) * 2014-05-30 2017-04-11 Apple Inc. Power level control using power assertion requests
WO2016161171A1 (en) * 2015-03-31 2016-10-06 Avigilon Corporation Security device capability discovery and device selection
US10111273B2 (en) * 2016-05-24 2018-10-23 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Communication paths hierarchy for managed computing device
US10637736B2 (en) 2016-06-06 2020-04-28 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Acquisition of information from managed computing device not communicatively connected to management computing device

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5168566A (en) * 1983-11-25 1992-12-01 Sharp Kabushiki Kaisha Multi-task control device for central processor task execution control provided as a peripheral device and capable of prioritizing and timesharing the tasks
US4794517A (en) 1985-04-15 1988-12-27 International Business Machines Corporation Three phased pipelined signal processor
US4796178A (en) * 1985-10-15 1989-01-03 Unisys Corporation Special purpose processor for off-loading many operating system functions in a large data processing system
US5025369A (en) * 1988-08-25 1991-06-18 David Schwartz Enterprises, Inc. Computer system
CA1318409C (en) * 1988-10-27 1993-05-25 Dennis L. Debruler Multiprocessor load sharing arrangement
US5179702A (en) * 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
JP2829078B2 (ja) * 1990-02-05 1998-11-25 株式会社日立製作所 プロセス分散方法
US5243531A (en) * 1990-09-28 1993-09-07 Volt Information Sciences, Inc. Method for routing and scheduling operations on elements of a work product in a production system
US5504899A (en) * 1991-10-17 1996-04-02 Digital Equipment Corporation Guaranteeing global serializability by applying commitment ordering selectively to global transactions
JPH05128077A (ja) * 1991-11-06 1993-05-25 Hitachi Ltd 複数計算機システムの分散処理方法
JPH05282256A (ja) 1991-12-27 1993-10-29 Nec Eng Ltd プロセッサ間メッセージ通信方法
US5640563A (en) * 1992-01-31 1997-06-17 International Business Machines Corporation Multi-media computer operating system and method
US5522070A (en) * 1992-03-19 1996-05-28 Fujitsu Limited Computer resource distributing method and system for distributing a multiplicity of processes to a plurality of computers connected in a network
JPH05324358A (ja) * 1992-05-20 1993-12-07 Hitachi Ltd 性能予測装置
US6125196A (en) * 1992-10-02 2000-09-26 Unisys Corporation Method for identifying suspect items in an out-of-balance transaction
JPH06250928A (ja) * 1993-02-24 1994-09-09 Matsushita Electric Ind Co Ltd 情報処理装置
JP3658420B2 (ja) * 1994-04-14 2005-06-08 株式会社日立製作所 分散処理システム
US5590323A (en) * 1994-05-13 1996-12-31 Lucent Technologies Inc. Optimal parallel processor architecture for real time multitasking
JP3486308B2 (ja) 1996-10-30 2004-01-13 三菱レイヨン・エンジニアリング株式会社 膜処理装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19744230B4 (de) * 1997-10-07 2007-10-25 Robert Bosch Gmbh Steuergeräte für ein System und Verfahren zum Betrieb eines Steuergeräts
US7536241B2 (en) 1997-10-07 2009-05-19 Robert Bosch Gmbh Control device for a system, and method for operating the control device
EP1516244A1 (de) * 2002-06-24 2005-03-23 DoCoMo Communications Laboratories USA, Inc. Mobil-anwendungsumgebung
EP1516244A4 (de) * 2002-06-24 2007-08-08 Ntt Docomo Inc Mobil-anwendungsumgebung
DE10345816A1 (de) * 2003-09-30 2005-05-25 Rexroth Indramat Gmbh Kombination aus Steuerung und Antrieb
DE102005046072A1 (de) * 2005-09-27 2006-09-21 Daimlerchrysler Ag Verfahren und Vorichtung zur Prozeßregelung
DE102005046072B4 (de) * 2005-09-27 2009-04-02 Daimler Ag Verfahren und Vorichtung zur Prozeßregelung
DE102006052757B4 (de) * 2006-11-08 2014-10-09 Siemens Aktiengesellschaft Verfahren zum Betrieb eines Automatisierungsgerätes mit einer Verarbeitungseinheit mit mehreren Verarbeitungskernen
DE102012011295A1 (de) * 2012-06-08 2013-12-12 Robert Bosch Gmbh Vorrichtung und verfahren für eine maschine, feldgerät für eine maschine und steuergerät für eine maschine

Also Published As

Publication number Publication date
US5845116A (en) 1998-12-01
US6578064B1 (en) 2003-06-10
US20030115241A1 (en) 2003-06-19
US6957434B2 (en) 2005-10-18
US20050050544A1 (en) 2005-03-03
JPH07282013A (ja) 1995-10-27
JP3658420B2 (ja) 2005-06-08

Similar Documents

Publication Publication Date Title
DE19513922A1 (de) Verteiltes Computersystem
CN107943555B (zh) 一种云计算环境下的大数据存储和处理平台及处理方法
DE60016283T2 (de) Arbeitsbelastungsverwaltung in einer rechnerumgebung
CN100349415C (zh) 用于对网格系统资源进行自主控制的设备、系统和方法
DE69628798T2 (de) Verfahren zur Übertragung von Multimediadaten
DE102017201789B4 (de) Verfahren zum Betrieb eines Kraftfahrzeugs und Kraftfahrzeug
DE19931139B4 (de) Produktionssystem und Fertigungsmittel-Auswahlverfahren in einem Produktionssystem
DE19648422C2 (de) Verfahren und Vorrichtung zum Implementieren eines echtzeitfähigen Steuerprogramms in einem nicht-echtzeitfähigen Betriebsprogramm
DE60223394T2 (de) Verfahren und vorrichtung zum einteilen von anforderungen für einen dynamischen direktzugriffsspeicherbaustein
CN109445944A (zh) 一种基于dpdk的网络数据采集处理系统及其方法
DE102009018261A1 (de) Informationsverarbeitungssystem und Verfahren zur Steuerung der Aufgabenausführung
WO1996002883A1 (de) Verfahren zur steuerung von technischen vorgängen oder prozessen
DE112010005096T5 (de) Verfahren und Vorrichtungen zum Bewerten der Ressourcen-Kapazität in einem System von virtuellen Containern
CN103366022B (zh) 信息处理系统及其处理方法
EP0959407A2 (de) Verfahren zum Zuteilen von Aufträgen Datenverarbeitungssystem, Client-Datenbearbeitungsknoten und computerlesbares Speichermedium
EP0010570B1 (de) Verfahren und Einrichtung zur selbstadaptiven Zuordnung der Arbeitslast einer Datenverarbeitungsanlage
CN112463390A (zh) 一种分布式任务调度方法、装置、终端设备及存储介质
CN116069512B (zh) 一种基于强化学习的Serverless高效资源分配方法及系统
DE112011100714B4 (de) Computersystem, Verfahren und Programm
DE602004007879T2 (de) Dienstbereitstellungssystem
CN106502790A (zh) 一种基于数据分布的任务分配优化方法
CN116401055A (zh) 面向资源效率优化的服务器无感知计算工作流编排方法
EP1634176B1 (de) Clusteranordnung für dezentrale lastverteilung
EP0463207A1 (de) Programmgesteuerte Kommunikationsanlage
DE112019000666T5 (de) Dynamische rekonfiguration einer softwarearchitektur für eine ccap (converged cable access platform)

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8139 Disposal/non-payment of the annual fee