-
Die vorliegende Erfindung bezieht
sich allgemein auf eine Computerchiparchitektur. Im einzelnen bezieht
sie sich auf ein Computerhardware-Verfahren und -System zum Bearbeiten
von Semaphoroperationen.
-
Auf dem Gebiet der Computerchiparchitektur ist
es wünschenswert,
Systemressourcen effizient zu nutzen. Eine Möglichkeit, die Effizienz zu
verbessern, besteht darin, eine gemeinsame Nutzung von Ressourcen,
beispielsweise Verarbeitungs- und Speicherressourcen, durch verschiedene
Operationen zu bewerkstelligen. Bei einem System, das mehrere Prozessoren
oder mehrere Prozesse aufweist, werden Semaphoroperationen verwendet,
um Ressourcen zu maximieren. Ein Semaphor ist eine Erlaubnis, eine
Systemressource, beispielsweise einen Speicherplatz, zu verwenden,
der durch einen Prozeß, der
durch das Computersystem durchgeführt wird, „gesperrt" sein kann. Durch Sperren des Semaphors verfügt der Prozeß über einen
Zugriff auf die Systemressourcen, solange er die Steuerung des Semaphors
behält.
Wenn ein Prozeß mit
dem Verwenden einer Ressource fertig ist, gibt er das Semaphor frei, so
daß ein
anderer Prozeß die
Ressource nutzen kann. Die Verwendung eines Semaphors gewährleistet,
daß andere
Systemprozesse nicht versuchen, auf die selbe Systemressource zuzugreifen,
während sie
durch einen anderen Prozeß genutzt
wird.
-
Eine Semaphoroperation liest, modifiziert und
beschreibt einen bestimmten Speicherplatz während einer einzigen atomischen
Operation. Beispielhafte Semaphoroperationen umfassen Laden und Löschen, Abrufen
und Inkrementieren, Abrufen und Dekrementieren sowie Vergleichen
und Umlagern. Diese Semaphoroperationen können in Hardware implementiert
sein, aber Schaltungsaufbauten für
andere Operationen als Laden und Löschen sind kompliziert. Eine
Implementierung von Semaphoroperationen implementiert lediglich
eine Laden-Und-Löschen-Operation
in Hardware, um das Semaphor zu erfassen, und implementiert die
anderen Operationen in Software-Makros,
die um die Laden-Und-Löschen-Operation
herumgebaut sind. Dieses System wird beispielsweise bei Präzisionsarchitektur-Reduzierter-Anweisungssatz-Rechen-Architektur (PA-RISC
= PA-RISC-Architektur) verwendet. Ein Prozeß, der in dem System läuft, führt daraufhin
seine Operation durch, wobei er eine Sequenz von Anweisungen verwendet,
und schreibt das Ergebnis in den Platz des Semaphors, um das Semaphor
freizugeben. Die Laden-Und-Löschen-Operation
schreibt ihren Wert auf Null, was angibt, daß das Semaphor gerade genutzt
wird.
-
Es entsteht ein Problem, wenn die
Semaphoroperationen durch einen Systeminterrupt unterbrochen werden.
Ein Prozeß kann
während
seiner Durchführung
bzw. Operation jederzeit unterbrochen werden. Dies schafft ein Problem,
wenn der Prozeß unterbrochen
wird, während
er ein Semaphor gesperrt hat. Der Prozeß kann über einen langen Zeitraum blockieren
oder „einzuschlafen" scheinen, wobei
das Semaphor in dem Prozeß lahmgelegt
wird. Ein Semaphor kann ein beträchtlicher
Ressourcenengpaß in
dem System sein, und der Interrupt kann beträchtliche Probleme für andere
Prozesse verursachen, die auf ein Semaphor zugreifen möchten. Eine sorgfältige Codierung
ist eine Möglichkeit,
zu versuchen, das Interruptproblem zu lösen, aber es erfordert ein
beträchtliches
Maß an
Zeit und geht nicht auf außerplanmäßige, asynchrone
Interrupte ein. Synchrone Interrupte sind jene Interrupte, von denen man
erwartet, daß sie
zu bestimmten geplanten Zeiten bezüglich einer Codeausführung auftreten.
Externe, oder asynchrone, Interrupte oder Traps, beispielsweise
Eingangs-/Ausgangs-Treiber-Interrupte (I-/O-Treiber-Interrupte)
stellen größere Probleme dar.
In manchen Fällen
ist es möglich,
daß asynchrone
Interrupte eine Semaphoroperation unterbrechen und Systemressourcen
lahmlegen. Was benötigt wird,
ist ein besseres Verfahren und System zum Verarbeiten von Semaphoroperationen.
-
US
5,613,129 beschreibt eine Mechanismus zur effektiven Handhabung
von Interrupts. Danach wird ein anliegender Interrupt nach Ablauf
einer Verzögerung
bedient, wobei die Verzögerungszeit
abhängig
von einer Auslastung des Systems ist.
-
EP 0 564 256 A2 beschreibt ein Verfahren, das
es erlaubt, einen Prozess mit aktivierten Interrupts laufen zu lassen.
Der Prozess wird mit einem „Lock" ausgestattet, das
eine Unterbrechung des Prozesses verhindert. Jeder während der
Ausführung
des Prozesses generierter Interrupt wird von einer Warteschleifenlogik
behandelt, wenn er sich auf die gleiche Ressource wie der Prozess
bezieht. Nach Beendigung des Prozesses überprüft das System die Verzögerungsschleife,
um festzustellen, ob verzögerte
Interrupts existieren. Wenn verzögerte
Interrupts existieren, werden diese abgearbeitet und anschließend wird
das „Lock" freigegeben.
-
Es ist die Aufgabe der vorliegenden
Erfindung, ein effizienteres Verfahren und ein effizienteres System
zum Steuern einer Unterbrechung eines Computerprozesses bzw. zum
Handhaben von Unterbrechungen zu schaffen.
-
Diese Aufgabe wird durch ein Verfahren
gemäß Anspruch
1, ein Verfahren gemäß Anspruch
11 sowie ein System gemäß Anspruch
15 gelöst.
-
Es wird ein Verfahren zum Handhaben
von Unterbrechungen einer Semaphoroperation, beispielsweise von
asynchronen Interrupten oder Kohärenzanforderungen,
offenbart. Das Verfahren bestimmt, ob ein Prozeß, der die Unterbrechung empfängt, ein
Semaphor für
eine Systemressource aufweist. Falls der Prozeß ein Semaphor gesperrt hat und
der Prozeß eine
Unterbrechung empfängt,
protokolliert das Verfahren die Unterbrechung und verzögert ein
Annehmen der Unterbrechung, bis der Prozeß, der die Ressource derzeit
nutzt, abgeschlossen und das Semaphor freigegeben ist. Das Verfahren kann
in einem System implementiert sein, das einen Zugriff von Prozessen
auf Ressourcen unter Verwendung von Semaphoren steuert, die die
Ressourcen sperren, während
sie genutzt werden. Das Verfahren bestimmt, ob eine Ressource derzeit
genutzt wird, indem es eine Laden-Und-Löschen-Operation erfaßt, was darauf hinweist, daß ein Semaphor
die Ressource gesperrt hat. Das Verfahren verzögert eine Annahme der Unterbrechung,
bis entweder ein Verzweigungsbefehl ausgeführt wird, ein Speicherbefehl ausgeführt wird,
bis sich eine festgelegte Anzahl von Anweisungen zurückzieht
oder bis eine festgelegte Anzahl von Taktzyklen durchlaufen werden.
-
Es wird ferner ein Computersystem
offenbart, das Ressourcen und Prozesse, die auf die Ressourcen zugreifen,
aufweist. Ein Zugriff von Prozessen auf die Ressourcen wird durch
ei ne Semaphoroperation gesteuert, durch die einer der Prozesse das Semaphor
zu einem bestimmten Zeitpunkt aufweist und das Semaphor seinen Inhaber
berechtigt, auf die Ressource zuzugreifen. Semaphorunterbrechungen, beispielsweise
asynchrone Interrupte oder Kohärenzanforderungen,
werden durch die Prozesse empfangen. Falls ein Prozeß derzeit
eine Ressource nutzt, so protokolliert dieser Prozeß die Unterbrechung
und verzögert
ein Annehmen der Unterbrechung, bis der Prozeß seine Operation abschließt, falls
möglich.
Bei einem Ausführungsbeispiel
wird die Unterbrechung verzögert,
bis entweder ein Verzweigungsbefehl ausgeführt wird, ein Speicherbefehl ausgeführt wird,
bis sich eine festgelegte Anzahl von Anweisungen zurückzieht
oder eine festgelegte Anzahl von Taktzyklen durchlaufen wird.
-
Bevorzugte Ausführungsbeispiele der vorliegenden
Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden
Zeichnungen näher
erläutert.
Es zeigen:
-
1 ein
Blockdiagramm eines Systems, das Semaphoroperationen verwendet;
-
2 ein
weiteres Blockdiagramm eines Systems, das Semaphoroperationen verwendet;
-
3 ein
Flußdiagramm
des Verfahrens zum Implementieren von Semaphoroperationen;
-
4 ein
detaillierteres Flußdiagramm
des Verfahrens der 1;
-
5 ein
Flußdiagramm
einer Implementierung des Verfahrens;
-
6 ein
Flußdiagramm
einer weiteren Implementierung des Verfahrens;
-
7 ein
Blockdiagramm eines Computersystems, in dem das Verfahren implementiert
werden kann.
-
1 zeigt
ein Blockdiagramm eines Systems, das Semaphoroperationen verwendet,
um auf Systemressourcen zuzugreifen. Bei dem in 1 gezeigten Beispiel weist das System 50 eine
Mehrzahl von Ressourcen 10, 12, 14 auf.
Hierin wird der Begriff „Ressource" im allgemeinsten
Sinn verwendet und bezieht sich auf eine jegliche Ressource, auf
die durch eine Mehrzahl von Prozessen oder Prozessoren zugegriffen
werden kann. Bei einer Verwendung greifen die Prozesse eventuell
immer nur einzeln auf die Ressourcen 10, 12, 14 zu,
so daß nicht
mehrere Prozessoren gleichzeitig auf dieselbe Ressource 10, 12, 14 zugreifen.
Die Ressourcen 10, 12, 14 können beispielsweise
knappe Ressourcen, wie beispielsweise Speicher, Busleitungen oder
Eingangs-/Ausgangsports, umfassen. Eine Mehrzahl von Prozessoren 240, 242, 244 greift über eine
Systeminfrastruktur 30 auf die Ressourcen 10, 12, 14 zu.
Obwohl dies nicht in 1 gezeigt
ist, können
mehrere Prozesse von einem einzelnen Prozessor 240 einen
Zugriff auf die Ressourcen 10, 12, 14 suchen.
Bei dem in 1 gezeigten
Beispiel umfaßt
die Infrastruktur 30 einen Bus 30.
-
Semaphore 20, 22, 24 werden
verwendet, um einen Zugriff auf die Systemressourcen 10, 12, 14 zu
steuern, und werden durch gestrichelte Kästen um die Ressourcen 10,
l2, 14 dargestellt. Während
ein Semaphor 20 gesperrt ist und seine zugrundeliegende
Ressource 10 gerade durch einen Prozeß oder einen Prozessor 240 genutzt
wird, kann der Prozessor 240 eine Unterbrechung 40 der
Semaphoroperation empfangen. Gemäß seiner
Verwendung hierin bezieht sich der Begriff „Unterbrechung" auf ein(en) beliebiges(n)
Signal, Code oder Prozeß,
das bzw. der in der Lage ist, eine Semaphoroperation zu unterbrechen,
und ist insbesondere nicht auf das Konzept eines Interrupts in einem
Computersystem beschränkt. Beispielsweise
umfaßt
eine Unterbrechung 40, 42, 44 einen asynchronen
Interrupt 40, 42, 44, der durch einen
Prozessor
240, 242, 244 empfangen wird,
und eine Kohärenzanforderung,
die durch einen Prozessor 240 von einem anderen Prozessor 242 empfangen
wird. Ein asynchroner Interrupt 40, 42, 44 bezieht sich
auf einen beliebigen Interrupt, der nicht Bestandteil des Codes
ist, der gerade durch einen Prozessor 240, 242, 244,
dessen Operation unterbrochen wird, ausgeführt wird.
-
Unterbrechungen 40, 42, 44,
beispielsweise der in 1 gezeigte
asynchrone Interrupt 40, versuchen einen Prozeß oder einen
Prozessor 240, der ein Semaphor 20 gesperrt hat
und unter Nutzung der Systemressource 10 gerade eine Operation
durchführt,
umzuleiten. Beispielsweise fordert ein asynchroner Interrupt 40 einen
Zugriff auf einen Prozessor 240 an, der eine Systemressource 10 mit
einem Semaphor 20 lahmgelegt haben kann, wenn der asynchrone
Interrupt 40 empfangen wird.
-
Bei einer Verwendung fordert ein
Prozeß oder
Prozessor 240, 242, 244 eine Nutzung
einer Ressource 10, 12, 14 an. Falls
die Ressource 10, 12, 14 zur Verfügung steht,
erhält
der anfordernde Prozessor 240 das Semaphor 20, 22, 24 für diese
Ressource 10, 12, 14. Das Semaphor 20, 22, 24 verhindert,
daß andere
Systemprozesse auf dieselbe Ressource 10, 12, 14 zugreifen,
bis der anfordernde Prozessor 240 mit der Ressource 10, 12, 14 fertig
ist und das Semaphor 20, 22, 24 freigegeben
wird. Während einer
Operation kann ein asynchroner Interrupt 40 einen Zugriff
auf den Prozessor 240, der ein Semaphor 20 gesperrt
hat, verlangen. Dieses stellt für
herkömmliche
Systeme ein Problem dar, da die Unterbrechung 40 inmitten
eines Verarbeitens der Semaphoroperation auftreten kann, wobei das
Semaphor 20 in diesem Fall gesperrt bleiben kann, bis der
asynchrone Interrupt 40, 42, 44 freigegeben
ist und der Prozessor 240, 242, 244 seine
Semaphoroperation wieder aufnimmt und abschließt. Dies verhindert, daß andere
Prozessoren 240, 242, 244 die Ressource 10, 12, 14 nutzen,
da das Semaphor 20, 22, 24 nicht freigegeben
wurde. Während
ein Prozessor 240, 242, 244 eine Un terbrechung 40, 42, 44 verarbeitet,
wird die Ressource 10, 12, 14 eventuell
nicht durch den Prozessor 240, 242, 244 genutzt,
sondern die Ressource 10, 12, 14 kann
durch das Semaphor 20, 22, 24 lahmgelegt
sein, was verhindert, daß andere
Prozesse 240, 242, 244 auf die Ressource 10, 12, 14 zugreifen.
Das System 50 verhindert derartige Probleme, indem es den
Interrupt 40, 42, 44 verzögert, bis
das Semaphor 20, 22, 24 freigegeben wird.
-
2 zeigt
ein weiteres Beispiel eines Systems 50, in dem das Verfahren
angewendet wird. Bei dem Beispiel der 2 ist
die Unterbrechung eine Kohärenzanforderung 46.
Eine Kohärenzanforderung 46 bezieht
sich auf eine beliebige Anforderung durch einen Prozessor 240,
die Verfügbarkeit
einer Systemressource 10, 12, 14 zu bestimmen.
Bei dem Beispiel der 2 hat
der Prozessor A ein Semaphor 20, 22, 24 für eine Systemressource 10, 12, 14 gesperrt.
Ein Prozessor B möchte
auf dieselbe Ressource 10, 12, 14 zugreifen
und sendet eine Kohärenzanforderung 46 an
die Infrastruktur 30. Die Kohärenzanforderung 46 bestimmt,
ob ein Semaphor 20, 22, 24 gesperrt ist,
indem sie die Cacheleitung für das
Semaphor 20 wiedererlangt. Bei dem Beispiel der 2 zieht der Prozessor B
die Cacheleitung von dem Prozessor A, da der Prozessor A das Semaphor 20 gesperrt
hat. Nach einem Wiedererlangen der Cacheleitung wird sich der Prozessor
B gewahr, daß der Prozessor
A das Semaphor 20, 22, 24 gesperrt hat und
daß die
Ressource 10, 12, 14 nicht zur Verfügung steht.
Wenn der Prozessor A dann die Cacheleitung benötigt, um die Semaphoroperation
abzuschließen,
muß er
die Cacheleitung von dem Prozessor B ziehen. Unter Verwendung des
Verfahrens empfängt
der Prozessor A die Kohärenzanforderung 46 von
dem Prozessor B über
die Infrastruktur 30, verzögert jedoch ein Annehmen der
Anforderung 46 und ein Bereitstellen der Cacheleitung,
bis das Semaphor 20, 22, 24 freigegeben
wird. Dadurch spart das System 50 Ressourcen ein, indem
es nicht auf die Kohärenzanforderung 46 antworten
muß, während die
Semaphoroperation stattfindet.
-
3 zeigt
ein Flußdiagramm
des Verfahrens 100 zum Verarbeiten von Semaphoroperationen. Das
Verfahren 100 kann durch den Prozessor 240, welcher
eine Unterbrechung 40, 42, 44, 46 empfängt, in
Hardware implementiert sein. Das Verfahren 100 bestimmt 110,
ob der Prozessor 240 ein Semaphor gesperrt hat. Bei einem
Ausführungsbeispiel wird
das Vorliegen eines Semaphors 20 durch Erfassen einer Laden-Und-Löschen-Operation bestimmt, die
darauf hindeutet, daß ein
Semaphor durch einen Prozeß gesperrt
wurde. Während
das Semaphor 20 gesperrt ist, verweigert 120 das
Verfahren 100 Unterbrechungen 40 der Semaphoroperation,
indem es eine Erkennung der Unterbrechung 40 verzögert. Die Unterbrechungen 40 werden
nach einer Verzögerungszeit
protokolliert und angenommen 130. Die Unterbrechung 40 kann
beispielsweise durch Setzen eines Flagbits in einem Register protokolliert
werden. Die Verzögerung
trägt dazu
bei, sicherzustellen, daß die
Semaphoroperation abgeschlossen ist und das Semaphor freigegeben
wird, bevor die Unterbrechung 40 genommen wird.
-
4 zeigt
ein detaillierteres Flußdiagramm einer
Implementierung des in 3 gezeigten
Verfahrens 100. Das Verfahren 100 bestimmt 110,
ob ein Rückzug
einer Laden-Und-Löschen-Operation
stattgefunden hat. Wenn eine Laden-Und-Löschen-Operation
zurückgetreten
ist, tritt das Verfahren 100 in einen Unterbrechungsverzögerungsmodus 120 ein, der
Unterbrechungen lange genug verzögert,
damit eine Semaphoroperation abgeschlossen werden kann. Bei dem
in 4 gezeigten Ausführungsbeispiel
veranlaßt
das Auftreten einer von vier Informationseinheiten (122, 124, 126, 128),
daß das
System den Verzögerungsmodus
verläßt 130 und
Unterbrechungen annimmt. Das Verfahren 100 bestimmt 122, ob
eine Verzweigung ausgeführt
wird. Verzweigungen sind in der Regel kein Bestandteil des Semaphoroperationscodes,
obwohl sie verwendet werden können,
um in der Schleife zurückzugehen
und die Semaphoroperation erneut zu starten. Das Vorliegen einer
Verzweigung weist darauf hin, daß das Verfahren 100 aus
der Semaphoroperation ausbrechen kann, indem es den Verzögerungsmodus
verläßt 130 und
die Unterbrechung annimmt. Das Verfahren 100 bestimmt 124 ferner,
ob eine Speicheranweisung ausgeführt
wird. Eine Speicheranweisung weist darauf hin, daß ein Semaphormakrocode
abgeschlossen wurde, da ein Semaphorcode die allgemeine Form aufweist,
die liest, modifiziert und das Ergebnis speichert. Auf das Auftreten
einer Speicheroperation hin verläßt 130 das
Verfahren 100 den Verzögerungsmodus
und nimmt die Unterbrechung an. Das Verfahren 100 bestimmt 126 ferner,
ob eine festgelegte Anzahl von Anweisungen verarbeitet wurde, und
verläßt 130 den
Verzögerungsmodus,
nachdem sie ausgeführt
wurden. Dies gewährleistet,
daß das Verfahren 100 nach
einer festgelegten Anzahl von Anweisungen austritt, ohne auf unbestimmte
Zeit auf einen weiteren Hinweis zu warten, daß die Semaphoroperation abgeschlossen
ist. Das Verfahren 100 bestimmt 128 ferner, ob
eine festgelegte Anzahl von Taktzyklen durchlaufen ist, seitdem
in den Verzögerungsmodus
eingetreten 120 wurde, und verläßt 130 den Verzögerungsmodus
nach der festgelegten Anzahl von Zyklen. Dies gewährleistet
ebenfalls, daß das
Verfahren 100 nicht zu lange in dem Verzögerungsmodus
blockiert ist.
-
5 zeigt
ein Flußdiagramm
eines Ausführungsbeispiels
eines Verfahrens 90 zur Verwendung des Unterbrechungsverzögerungsverfahrens 100, um
einen asynchronen Interrupt 40 zu verarbeiten. Ein erster
Prozessor, Prozessor A, fordert ein Semaphor 20 an 91,
um auf eine Systemressource 10 zuzugreifen. Der Prozessor
A empfängt 92 die
Cacheleitung für
das Semaphor 20 und verwendet die Cacheleitung, um zu bestimmen 94,
ob das Semaphor 20 zur Verfügung steht. Falls das Semaphor 20 für die Ressource 10 nicht
zur Verfügung
steht, bleibt der Prozessor A in der Schleife, bis das Semaphor 20 verfügbar wird,
wobei beispielsweise eine Verzögerung
verwendet wird (nicht gezeigt). Wenn das Semaphor 20 verfügbar ist,
sperrt 96 der Prozessor A das Semaphor 20 und
nutzt die Ressource 10. Der Prozessor A empfängt 98 daraufhin
einen asynchronen Interrupt 40, der einen Zugriff auf den
Prozessor A anfordert. Der Prozessor A protokolliert die Unterbrechung 40, 42, 44, 46,
indem er beispielsweise ein Flagbit setzt. Das Verzögerungsverfahren 100 bestimmt 110,
ob der Prozessor A ein Semaphor 20 gesperrt hat. Falls
dies nicht der Fall ist, nimmt es den Interrupt 40 einfach
an 130. Falls der Prozessor A ein Semaphor 20 gesperrt
hat, verzögert 120 es
den Interrupt 40 und schließt die Semaphoroperation ab und
gibt das Semaphor 20 frei 129. Daraufhin verläßt der Prozessor
A den Verzögerungsmodus
und nimmt den Interrupt 40 an 130. Dies ermöglicht es
einem anderen Prozessor, Prozessor B, das Semaphor 20 zu
nehmen 140.
-
6 zeigt
ein Flußdiagramm
einer weiteren beispielhaften Verwendung des Verfahrens 90 zum Verwenden
des Unterbrechungsverzögerungsverfahrens 100,
in diesem Beispiel um eine Kohärenzanforderung 46 zu
verarbeiten. Nachdem der Prozessor A das Semaphor 20 gesperrt 99 hat,
empfängt
der Prozessor A eine Kohärenzanforderung 46 von
dem Prozessor B. Die Kohärenzanforderung 46 wird durch
den Prozessor A protokolliert. Das Verzögerungsverfahren 100 bestimmt 110,
ob ein Semaphor 20 durch den Prozessor A gesperrt ist,
und verzögert 120 eine
Antwort auf die Kohärenzanforderung 46, falls
ein Semaphor 20 gesperrt ist. Der Prozessor A schließt daraufhin
seine Semaphoroperation ab und. gibt das Semaphor frei 129.
Daraufhin verläßt er den Verzögerungsmodus
und antwortet 130 auf die Kohärenzanforderung 46,
die es dem Prozessor B ermöglicht,
das Semaphor 20 zu nehmen 140.
-
7 zeigt
ein Blockdiagramm eines Computersystems 200, das eine zentrale
Verarbeitungseinheit (CPU – central
processing unit) 230 aufweist, die mit einer Eingabevorrichtung 220 und
einer Anzeigevorrichtung 230 verbunden ist. Die CPU 230 weist
eine Mehrzahl von miteinander verbundenen Prozessoren 240, 242, 244, 246 auf,
die auf einen Speicher 250 in dem Computersystem 200 zugreifen. Bei
einer Verwendung empfängt
die Eingabevorrichtung 220 Befehle, die die CPU 230 anweisen,
Anweisungen auszuführen.
Die Ergebnisse der Analyse können
auf der Anzeigevorrichtung 210 angezeigt werden. Bei den
Prozessoren 240, 242, 244, die mehrere
Prozesse aufweisen, die unter Verwendung der Semaphore 20 auf
dieselben Ressourcen 10, 12, 14 zugreifen,
kann das Verfahren 100 in jedem der Prozessoren 240, 242, 244 implementiert
sein, um Unterbrechungen zwischen Prozessen zu steuern. Das Verfahren 100 kann
ferner zwischen mehreren Prozessoren 240, 242, 244 implementiert
sein, falls die Prozessoren 240, 242, 244 eine
gemeinsame Ressource 10, 12, 14 nutzen.
Falls beispielsweise Plätze
in dem in 7 gezeigten
Speicher 250 knapp sind und falls durch jeden der Prozessoren 240 auf sie
zugegriffen wird, kann eine Semaphoroperation verwendet werden,
um einen Zugriff auf den Speicher 250 zu steuern. Bei einer
Verwendung kann eine Unterbrechung 40, 42, 44, 46 aus
einem Prozessor 240, 242, 244 oder von
einer externen Quelle ankommen, die versucht, eine Semaphoroperation
zu unterbrechen. Das Verfahren 100 verzögert eine Annahme der Unterbrechung 40, 42, 44, 46,
bis die Semaphoroperation abgeschlossen ist.
-
Fachleute werden erkennen, daß das Verfahren
und System überall
dort verwendet werden kann, wo es wünschenswert ist, eine Unterbrechung eines
Prozesses zu begrenzen oder zu steuern, und daß diese nicht auf eine Verwendung
bei Semaphoroperationen oder bei Interrupten oder asynchronen Interrupten
beschränkt
sind. Beispielsweise können das
Verfahren und System implementiert sein, um Kohärenzanforderungen zu steuern,
die sich auf eine Wiedererlangung von Daten, wo Daten wiederholt
erzeugt und verbraucht werden, beziehen, und zwar an einem einzigen
Speicherplatz. Die Kohärenzanforderung
kann Daten von einem Platz in einem Speicher suchen. Zur gleichen
Zeit kann es sein, daß eine
aktuelle Version der Daten in dem Speicherplatz nicht einmal vorhanden
ist oder unvollständig
ist. Es ist daher wünschenswert,
ein Antworten auf die Kohärenzanforderung
zu verzögern,
bis der Speicherplatz die korrekten Daten aufweist. Eine Semaphoroperation kann
verwendet werden, um den Speicherplatz zu sperren, jedoch kann die
Kohärenzanforderung
bei einer Implementierung in der Lage sein, sie zu überschreiben
und zu versuchen, die Daten sofort wiederzuerlangen, ganz ähnlich wie
ein asynchroner Interrupt eine sofortige Nutzung einer Systemressource verlangt.
Bei diesem Beispiel kann das Verfahren 100 implementiert
sein, um die Kohärenzanforderung
zu verzögern,
bis die Daten korrekt sind. Falls eine Semaphoroperation verwendet
wird, kann das Verfahren 100 die Kohärenzanforderung verzögern, bis
das Semaphor freigegeben wird oder bis ein festgelegter Zeitraum
verstrichen ist.
-
Obwohl die vorliegende Erfindung
in bezug auf bestimmte Ausführungsbeispiele
derselben beschrieben wurde, sind Variationen möglich. Die vorliegende Erfindung
kann in spezifischen Formen verkörpert
sein, ohne von der Wesensart oder Attributen derselben abzuweichen.
Obwohl Aspekte einer Implementierung, die mit der vorliegenden Erfindung übereinstimmen,
als in einem Speicher gespeichert beschrieben sind, werden Fachleute überdies
einsehen, daß diese
Aspekte auch in anderen Typen von Computerprogrammprodukten oder
computerlesbaren Medien gespeichert und von denselben gelesen werden
können,
beispielsweise sekundären
Speichervorrichtungen, einschließlich Festplatten, Floppy-Disks
oder CD-ROM; einer Trägerwelle
aus dem Internet oder einem anderen Netz; oder anderen Formen von
RAM. oder Nur-Lese-Speichern
(ROM). Es wird gewünscht,
daß die
hierin beschriebenen Ausführungsbeispiele
in jeglicher Hinsicht als veranschaulichend und nicht einschränkend angesehen werden,
und daß eine
Bezugnahme auf die beigefügten
Patentansprüche
und ihre Äquivalente
zum Bestimmen des Schutzbereichs der Erfindung erfolgt.