-
HINTERGRUND DER ERFINDUNG
-
Die
vorliegende Erfindung betrifft ein Verfahren zum Ausführen von
Prozessen in einem Betriebssystem, das ein Computersystem steuert,
und ein Verfahren zum Zugreifen auf eine Ressource in dem Computersystem.
Die Erfindung betrifft insbesondere ein Verfahren zum Ausführen von
Prozessen unter Verwendung einer gemeinsamen Ressource in einem
Betriebssystem, das eine Mehrprozessor- oder Mehrfachverarbeitungsumgebung
bereitstellt.
-
In
einem Betriebssystem, das in der Lage ist, die Mehrfachverarbeitungsumgebung
zum Ausführen
mehrerer Prozesse (oder Aufgaben) parallel auf Zeitmultiplexbasis
bereitzustellen, ist es notwendig, die Prozesse auszuführen, während eine
zueinander exklusive Steuerung oder Verwaltung durchgeführt wird,
so dass die von den Prozessen gemeinsam verwendete Ressource nicht
gleichzeitig mehreren Prozessen zugewiesen wird. Als Mittel zum
Verwirklichen einer solchen einander ausschließenden Verwaltung ist eine
als "Sperrsteuerung" bezeichnete Prozedur
bekannt und wird weit verbreitet in dem Betriebssystem (OS) verwendet.
-
Bei
der Sperrsteuerung wird ein Hinweiszeichen, das angibt, dass eine
entsprechende gemeinsame Ressource verwendet wird, für jede der
gemeinsamen Ressourcen gesetzt. Wenn einer der Prozesse eine Verarbeitung
unter Verwendung einer gegebenen der gemeinsamen Ressourcen ausführt, wird
geprüft,
ob das dieser gemeinsamen Ressource entsprechende Hinweiszeichen
von einem anderen Prozess gesetzt wurde. Wenn das Hinweiszeichen nicht
durch den anderen Prozess gesetzt wurde, kann der gegebene Prozess
die gemeinsame Ressource exklusiv nutzen, während er das Hinweiszeichen
setzt, das angibt, dass die Ressource belegt ist. Dieser Vorgang
wird typischerweise als "Sperre
oder Sperren" der
gemeinsamen Ressource bezeichnet. Nach Abschluss der Verarbeitung
für die
gemeinsame Ressource gibt der Prozess die gemeinsame Ressource frei,
während
er das Hinweiszeichen zurücksetzt.
Dieser Vorgang wird als "Entsperren
oder Aufheben der Sperre" der
gemeinsamen Ressource bezeichnet. Wenn andererseits das der zu verwendenden
gemeinsamen Ressource entsprechende Hinweiszeichen von einem anderen
Prozess gesetzt wird, setzt das Betriebssystem den einen Prozess, der
die Verwendung dieser Ressource fordert, in den Warte- oder Bereitschaftszustand,
bis diese gemeinsame Ressource entsperrt wurde.
-
An
dieser Stelle sei angenommen, dass ein Prozess 1 niedriger Priorität und ein
Prozess 2 hoher Priorität
parallel ausgeführt
werden und dass eine gemeinsame Ressource A von diesen zwei Prozessen verfügbar gemeinsam
verwendet wird. Unter dieser Annahme wird weiter angenommen, dass
der Prozess 1 niedriger Priorität
die gemeinsame Ressource A im Laufe der Verwendung der CPU (Zentralverarbeitungseinheit)
gesperrt hat und dass die gemeinsame Ressource A in einen unterbrochenen
Zustand eingetreten ist, während
die Sperre gesetzt geblieben ist. In diesem Fall kann der Prozess
2 hoher Priorität,
dem das Recht zugewiesen ist, die CPU nach dem Prozess 1 zu verwenden,
die gemeinsame Ressource A nicht verwenden, weil die Ressource durch den
Prozess 1 niedriger Priorität
gesperrt wurde. Daher wird die aufeinander folgende Ausführung unmöglich.
-
Das
Problem, dass der Prozess hoher Priorität an der nachfolgenden Ausführung wegen
der Sperre, die von dem Prozess niedriger Priorität gehalten
wird, gehindert ist, wird als Prioritätsumkehrungsproblem bezeichnet.
In Bezug auf dieses Prioritätsumkehrungsproblem
sei auf "PRIORITY
INHERITANCE PROTOCOLS: AN APPROACH TO REAL-TIME SYNCHRONIZATION" in IEEE TRANSACTIONS
ON COMPUTERS, Band 39, Nr. 9, September 1990, S. 1175–1185 verwiesen.
Bei dem bisher bekannten herkömmlichen
Betriebssystem wird, wenn die Prioritätsumkehrung stattfindet, der
schlafende Prozess niedriger Priorität, der die gemeinsame Ressource
reserviert und gesperrt hat, mit der höchsten Priorität ausgeführt, um
die Sperre der gemeinsamen Ressource aufzuheben, so dass der Prozess
hoher Priorität
so früh
wie möglich
ausgeführt werden
kann.
-
Andererseits
ist ein Betriebssystem, das eine Mehrfachverarbeitungsumgebung bereitstellt,
mit einer Funktion zum Schützen
der einem gegebenen Prozess zugewiesenen Ressource vor einem durch einen
anderen Prozess versuchten illegalen Zugriff versehen. Diese Funktion
wird als Zugriffsrechtskontroll- oder -verwaltungsfunktion bezeichnet.
Die Zugriffsrechtskontrolle oder Verwaltung, die nun betrachtet
wird, beruht auf der Annahme, dass das Zugriffsrecht Prozess für Prozess
festgelegt werden kann und dass mehrere Prozesse gleichzeitig versuchen
können,
auf eine Computerressource zuzugreifen. Gewöhnlich wird eine Schnittstelle,
um es einer Benutzeranwendung zu ermöglichen, die Funktionen des
Betriebssystems aufzurufen, bereitgestellt und ist als "Systemaufruf" bekannt. In diesem
Zusammenhang sei bemerkt, dass wenn ein Zeiger als ein Argument
des Systemaufrufs verwendet wird, die Festlegung einer illegalen
Adresse durch die Benutzeranwendung zu einer Zerstörung wichtiger
Daten in dem Betriebssystem führen
kann, was unvorteilhaft ist. Zum Verhindern einer solchen unerwünschten
Situation wird eine Kennung an Stelle des Zeigers bei einer typischen
Zugriffsrechtskontrolle oder -verwaltung als Argument verwendet.
-
Im
Fall des Zugriffsrechts-Kontrollverfahrens, bei dem die Kennung
als das Argument in dem von der Benutzeranwendung ausgegebenen Systemaufruf
verwendet wird, muss das Betriebssystem die Kennung in eine Adresse
in der Ressource übersetzen,
um auf die Ressource zuzugreifen. In diesem Zusammenhang ist das
einfachste Übersetzungsverfahren
ein Verfahren, bei dem eine Hash-Funktion verwendet wird. Bei diesem
Verfahren wird eine Kennung in der Hash-Funktion als ein Schlüssel angewiesen
oder dieser zugewiesen, woraufhin der erhaltene Hash-Wert als Adresse
verwendet wird. Das Zugriffs rechts-Kontrollverfahren, das auf der Hash-Funktion
beruht, wird nachstehend beschrieben.
-
§1.
Konfiguration
-
Wie
in 1 dargestellt ist, weist das Betriebssystem der
Hash-Funktion (F) 101 eine Ressourcenkennung 100 als
Schlüssel
zu, um als den Hash-Wert einen Index "Index" 102 zu erhalten, der in einer
Ressourcenverwaltungsdatentabelle 104 enthalten ist. Wie
in 2A dargestellt ist, enthalten die in der Ressourcenverwaltungsdatentabelle 104 gespeicherten
Ressourcenverwaltungsdaten 105 eine Kennung 201,
einen Zeiger 205 auf eine Ressource 103, ein Hinweiszeichen 202,
das das Vorhandensein oder Nichtvorhandensein nachfolgender oder
nächster
Ressourcenverwaltungsdaten 106 angibt, einen Zeiger 203 auf
die nachfolgenden Ressourcenverwaltungsdaten 106 und einen
Zeiger 104 auf Prozessverwaltungsdaten 107.
-
Es
kann eine Situation auftreten, in der die Hash-Funktion denselben Index "Index" für verschiedene
Kennungen RID zurückgibt.
In diesem Fall tritt eine Kollision zwischen den Indizes "Index" auf. Dementsprechend
werden die zweiten Ressourcenverwaltungsdaten 106 und folgende
in einem Überlaufbereich
gespeichert, wobei die Adresse der zweiten oder nachfolgenden Ressourcenverwaltungsdaten 106 in
die unmittelbar vorhergehenden Ressourcenverwaltungsdaten 105 gegeben
wird.
-
In
dem Fall, in dem die Ressource eine gemeinsame Ressource ist, existieren
mehrere Prozesse mit jeweiligen Zugriffsrechten für dieselbe
Kennung RID. In diesem Fall werden die Zeiger auf die zweiten Prozesskennungsdaten 108 und
folgende in die unmittelbar vorhergehenden Prozessverwaltungsdaten 107 gegeben.
-
Die
Ressourcenverwaltungsdaten 105 sind in 2A dargestellt,
während
die Prozessverwaltungsdaten 107 in 2B dargestellt
sind. Wie in 2B ersichtlich ist, bestehen
die Prozessverwaltungsdaten 107 aus einer Prozesskennung 207,
einem Hinweiszeichen 208, das das Vorhandensein oder Nichtvorhandensein
der nächsten
Prozessverwaltungsdaten angibt, und einem Zeiger 209 auf
die nächsten
Prozessverwaltungsdaten. Am Ende der Benutzeranwendung wird es notwendig,
die Kennung des Prozesses, der das Zugriffsrecht hat, zu kennen,
um die Zuweisung der von dem Prozess belegten Ressource aufzuheben.
Demgemäß wird das Betriebssystem
mit einer prozessspezifischen Ressourcenkennungsliste 109 versehen,
in die jedes Mal dann, wenn eine entsprechende Ressource erzeugt wird,
oder jedes Mal dann, wenn das Zugriffsrecht auf die gemeinsame Ressource
erhalten wird, eine Ressourcenkennung 110 eingegeben wird.
-
§2.
Ressourcenzuweisungsverarbeitung
-
3 ist
ein Flussdiagramm zum Erläutern einer
Ressourcenzuweisungsverarbeitung.
-
Wenn
der Systemaufruf, der die Ressourcenzuweisung fordert, von einer
Benutzeranwendung an das Betriebssystem ausgegeben wird, reagiert
das Betriebssystem darauf durch Zuweisen der Ressource (Schritt 1000).
Anschließend
erhält
das Betriebssystem eine in dem System festgelegte Kennung RIDx (Schritt 1001)
und gibt die Kennung RIDx als Schlüssel in die Hash-Funktion ein.
Demgemäß wird der
in der Ressourcenverwaltungsdatentabelle 104 enthaltene
Index "Index", d. h. die Adresse,
an der die Ressourcenverwaltungsdaten x gespeichert sind, erhalten
(Schritt 1002). In dem Fall, in dem die Ressourcenverwaltungsdaten
y bereits an der ersten Stelle des vom Index festgelegten Bereichs
angeordnet wurden, d. h. wenn eine Kollision zwischen den Indizes
auftritt (Schritt 1003), wird der Zeigern von einem zum
anderen gefolgt (Schritt 1005), solange das Hinweiszeichen 202,
das das Vorhandensein oder Nichtvorhandensein der Kennungsverwaltungsdaten 105 angibt,
einen Wert "EIN" annimmt (wodurch
das Vorhandensein der Ressourcenverwaltungsdaten 105 angegeben
wird) (Schritt 1004). Wenn die Ressourcenverwaltungsdaten
z, für
die das Hinweiszeichen 202, das das Vorhandensein oder
Nichtvorhandensein der folgenden Kennungsverwaltungsdaten angibt,
auf "AUS" gesetzt ist, im
Laufe des Verfolgens der Zeiger gefunden wird, wird das nachfolgende Kennungsverwaltungsdaten-Vorhandenseins/Nichtvorhandenseins-Hinweiszeichen 202 auf "EIN" gesetzt (Schritt 1006).
Anschließend
wird ein Bereich für
die neuen Ressourcenverwaltungsdaten x dem Überlaufbereich (Schritt 1007)
zugeordnet, woraufhin der Zeiger 203 auf die unmittelbar
vorhergehenden Ressourcenverwaltungsdaten in den Ressourcenverwaltungsdaten
an der Adresse der Ressourcenverwaltungsdaten x angeordnet wird
(Schritt 1008). Wenn in Schritt 1003 herausgefunden
wird, dass die nachfolgenden Kennungsverwaltungsdaten nicht gespeichert
sind, wird der Bereich für
die Ressourcenverwaltungsdaten x dem Hauptbereich zugewiesen (Schritt 1009).
-
Die
Prozessverwaltungsdaten 107 werden in den Prozessverwaltungsbereich
gegeben, und die Prozesskennung wird darin gespeichert (Schritt 1010).
Gleichzeitig wird die Kennung RIDx 207 in der prozessspezifischen
Kennungsliste 109 gespeichert (Schritt 1011).
Die Kennung RIDx 201, der Zeiger 204 auf die Prozessverwaltungsdaten
und der in den Ressourcenverwaltungsdaten x 105 enthaltene
Ressourcenzeiger 205 werden mit jeweiligen Werten versehen,
woraufhin das Hinweiszeichen 202, das das Vorhandensein
oder Nichtvorhandensein der nachfolgenden Ressourcenverwaltungsdaten
angibt, in den "AUS"-Zustand versetzt
wird (Schritt 1012). Dann wird die Kennung RIDx zur Benutzeranwendung
zurückgeführt (Schritt 1013).
-
§3.
Ressourcenzugriffsverarbeitung
-
Wenn
der eine Ressourcenzugriffsanforderung angebende Systemaufruf durch
die Benutzeranwendung an das Betriebssystem ausgegeben wird, führt das
letztgenannte die in 4 dargestellte
Verarbeitung aus.
-
Das
Betriebssystem weist die Kennung RIDx, die das Argument des Systemaufrufs
ist, der Hash-Funktion zu, um den Index der Ressourcenverwaltungsdaten 105 zu
erhalten (Schritt 1100). Anschließend wird die in den sich am
Index befindenden Ressourcenverwaltungsdaten 105 enthaltene
Kennung RID mit dem Argument RIDx verglichen (Schritt 1101).
Wenn die Werte der Kennung RID und des Arguments RIDx voneinander
abweichen und wenn das Hinweiszeichen 202, das das Vorhandensein oder
Nichtvorhandensein der nachfolgenden Ressourcenverwaltungsdaten
in den Ressourcenverwaltungsdaten 105 angibt, auf "EIN" gesetzt ist, d.
h. wenn die nachfolgenden Ressourcenverwaltungsdaten 105 existieren
(Schritt 1102), wird dem Zeiger 203 bis zu den
nachfolgenden Ressourcenverwaltungsdaten gefolgt (Schritt 1103),
woraufhin der Vergleich zwischen der Kennung und dem Argument, welche vorstehend
erwähnt
wurden, wieder ausgeführt
wird (Schritt 1101). In dem Fall, in dem die Kennungen RID
aller Ressourcenverwaltungsdaten 105, denen mit den Zeigern
gefolgt werden kann, nicht mit dem Argument RIDx übereinstimmen,
wird entschieden, dass die angeforderte Ressource in dem System nicht
existiert, woraufhin eine Fehlermeldung zur Benutzeranwendung zurückgegeben
wird (Schritt 1104). Wenn andererseits eine Übereinstimmung zwischen
der in den Ressourcenverwaltungsdaten 105 enthaltenen Kennung
RID und dem Argument RIDx im Vergleichsschritt 1101 gefunden
wird, wird die Prozesskennung PIDx des gegenwärtig auf die Ressource zugreifenden
Prozesses mit der in den Prozessverwaltungsdaten 107 enthaltenen
Prozesskennung PID 207 verglichen (Schritt 1105).
Wenn in Schritt 1105 herausgefunden wird, dass die Werte beider
Kennungen voneinander abweichen, und wenn das Hinweiszeichen 208,
das in den Prozessverwaltungsdaten 107 enthalten ist und
das Vorhandensein oder Nichtvorhandensein der nachfolgenden Prozessverwaltungsdaten
angibt, "EIN" ist (wodurch angegeben
wird, dass die nachfolgenden Prozessverwaltungsdaten 107 existieren)
(Schritt 1106), wird dem nachfolgenden Zeiger 209 gefolgt,
um die nachfolgenden Prozessverwaltungsdaten zu erreichen (Schritt 1107),
woraufhin der Vergleich der vorstehend erwähnten Prozesskennungen wieder
ausgeführt
wird (Schritt 1105). Wenn die in allen Ressourcenverwaltungsdaten 105,
denen mit Hilfe der Zeiger gefolgt werden kann, enthaltenen Prozesskennungen
PID nicht mit dem Argument PIDx übereinstimmen,
wird entschieden, dass die den Systemaufruf ausgebende Benutzeranwendung
kein Zugriffsrecht auf die Ressource hat, woraufhin eine Fehlermeldung
zur Benutzeranwendung zurückgegeben
wird (Schritt 1108).
-
Wenn
andererseits in Schritt 1105 die Übereinstimmung zwischen der
Prozesskennung und dem Argument gefunden wird, wird der Zugriff
auf die Ressource unter Verwendung der Ressourcenadresse ausgeführt, die
in dem in den Ressourcenverwaltungsdaten 105 enthaltenen
Ressourcenzeiger 205 gespeichert ist (Schritt 1109).
-
§4.
Ressourcenzuweisungsaufhebungsverarbeitung
-
In
dem Fall, in dem ein die Aufhebung der Zuweisung der Ressource anfordernder
Systemaufruf von der Benutzeranwendung an das Betriebssystem ausgegeben
wird, wird die Ressourcenzuweisungsaufhebungsverarbeitung für diese
Ressource ausgeführt.
Wenn zusätzlich
die Aufhebung der Zuweisung der Ressource infolge einer abnormen
Beendigung eines Prozesses notwendig wird, wird die Ressourcenzuweisungsaufhebungsverarbeitung
für die
Ressourcen entsprechend allen Kennungen ausgeführt, die in der Kennungsliste
enthalten sind, welche für
den abnorm beendeten Prozess spezifisch ist. Die Ressourcenzuweisungsaufhebungsverarbeitung
wird nachstehend mit Bezug auf 5 beschrieben.
An erster Stelle unterbindet oder blockiert das Betriebssystem den
Zugriff auf alle Ressourcen (Schritt 1200) und gibt die
Kennung RIDx der Ressource, deren Zuweisung aufzuheben ist, als
Schlüssel
in die Hash-Funktion ein, um den Index "Index" der Ressourcenverwaltungsdaten 105 zu
erhalten (Schritt 1201). Anschließend wird die Kennung RID, die
in den Ressourcenverwaltungsdaten 105 enthalten ist, welche
in dem durch den Index angegebenen Bereich gespeichert sind, mit
dem Schlüssel
oder der Kennung RIDx verglichen (Schritt 1202). Wenn die Werte
beider Kennungen voneinander abweichen und wenn das das Vorhanden sein
oder Nichtvorhandensein der nachfolgenden Ressourcenverwaltungsdaten
angebende Hinweiszeichen 202 "EIN" ist,
d. h. wenn die nachfolgenden Ressourcenverwaltungsdaten 105 existieren
(Schritt 1203), wird dem Zeiger 203 bis zu den
nachfolgenden Ressourcenverwaltungsdaten gefolgt (Schritt 1204),
woraufhin der vorstehend erwähnte
Kennungsvergleich erneut wiederholt wird (Schritt 1202).
In dem Fall, in dem die Kennungen RID aller Ressourcenverwaltungsdaten 105, denen
mit den Zeigern gefolgt werden kann, nicht mit dem Schlüssel oder
der Kennung RIDx übereinstimmen,
wird entschieden, dass die angeforderte Ressource nicht existiert,
woraufhin eine Fehlermeldung zur Benutzeranwendung zurückgegeben
wird (Schritt 1205).
-
Wenn
andererseits in Schritt 1202 eine Übereinstimmung zwischen beiden
Kennungen RID und RIDx gefunden wird, wird die Adresse der im Zeiger 204 für die Prozessverwaltungsdaten
gespeicherten Prozessverwaltungsdaten 107 erhalten (Schritt 1206).
Wenn die nachfolgenden Ressourcenverwaltungsdaten 105 existieren
(Schritt 1207), werden die durch die Kennung RIDx spezifizierten
Ressourcenverwaltungsdaten 105 freigegeben oder entsperrt (Schritt 1209),
nachdem die Kette der Zeiger 203 zu den Ressourcenverwaltungsdaten
geändert
wurde (Schritt 1208). Anschließend wird dem in Schritt 1206 erhaltenen
Zeiger gefolgt, und es wird geprüft,
ob das in den Prozessverwaltungsdaten 107 enthaltene Hinweiszeichen,
das das Vorhandensein oder Nichtvorhandensein der nachfolgenden
Prozessverwaltungsdaten angibt, "EIN" ist oder nicht (Schritt 1210).
Falls das Hinweiszeichen "EIN" ist, wird der Zeiger 209 auf die
nachfolgenden Prozessverwaltungsdaten erhalten (Schritt 1211),
woraufhin eine Nachricht, die angibt, dass die Prozessverwaltungsdaten 107 freigegeben
wurden oder ihre Zuweisung aufgehoben wurde und dass die Kennung
RID nicht mehr verwendet werden kann, an die Benutzeranwendungen,
d. h. die einzelnen Prozesse ausgegeben wird (Schritt 1212). Wenn
andererseits in Schritt 1210 entschieden wird, dass das
Hinweiszeichen 208, das das Vorhandensein oder Nicht vorhandensein
der nachfolgenden Ressourcenverwaltungsdaten angibt, "AUS" ist, werden die
endgültigen
Prozessverwaltungsdaten 107 freigegeben, oder ihre Zuweisung
wird aufgehoben, woraufhin die Nachricht, die angibt, dass die Kennung
RID nicht mehr verwendet werden kann, an die Benutzeranwendung ausgegeben
wird (Schritt 1213), woraufhin dann der Zugriff auf alle
Ressourcen wieder geöffnet
wird (Schritt 1214).
-
In
Zusammenhang mit dem vorstehend beschriebenen Verfahren sei bemerkt,
dass selbst dann, wenn der in der Ressourcenverwaltungsdatentabelle 104 enthaltene
Index "Index" durch Zuweisen einer
illegalen Kennung RIDz zur Hash-Funktion
als Schlüssel
erhalten werden kann, die illegale Kennung RIDz nicht in den Ressourcenverwaltungsdaten 105 gefunden
werden kann, welche mit dem Index verfolgt werden können. Folglich
kann keine Ressourcenadresse erhalten werden, wodurch der Zugriff
unmöglich
gemacht wird. Ferner wird selbst dann, wenn die illegale Kennung
RIDz zufällig
in den mit dem Index verfolgten Ressourcenverwaltungsdaten 105 enthalten
sein sollte, die Kennung des Prozesses, der auf die Ressource zugreift,
nicht in den Prozessverwaltungsdaten 107 gespeichert. Folglich kann
die Adresse der Ressource nicht erhalten werden. Demgemäß kann ein
illegaler Zugriff unterbunden oder verhindert werden.
-
Ferner
kann bei der Ressourcenentsperrverarbeitung der Ressourcenschutz
verwirklicht werden, indem alle Zugriffe der Benutzeranwendungen
auf die Ressource unterbunden oder verhindert werden, während ein
illegaler Zugriff nach der Ressourcenzuweisungsaufhebung durch Ungültigmachen
der Kennung, Freigeben der Ressourcenverwaltungsdaten und der Prozessverwaltungsdaten,
die mit dem Index verfolgt werden können, und Ausgeben der Nachricht,
welche über
die Prozesse zum Aufheben der Zuweisung der Ressource informieren,
unterbunden werden kann.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Bei
der kontinuierlichen Medienverarbeitung ist der Ablauf eines Prozesses
zum Verarbeiten von Daten, wie Animationsdaten, mit einer Periodizität verbunden.
Ein Prozessabwicklungsverfahren, das dieses Merkmal verwendet, wurde
bereits vorgeschlagen. Für
weitere Einzelheiten dieses Verfahrens sei auf die
japanische Patentanmeldung 8-73673 verwiesen.
-
In
diesem Zusammenhang sei bemerkt, dass das vorstehend erörterte Prioritätsumkehrungsproblem
auch das vorstehend erwähnte
Prozessabwicklungsverfahren auf der Grundlage der Periodizität nachteilig
beeinflusst. Beispielsweise sei angenommen, dass zwei Prozesse,
nämlich
ein Prozess 1 und ein Prozess 2, zum Ausführen der kontinuierlichen Medienverarbeitung
existieren und dass eine Ressource A existiert, die von diesen beiden
Prozessen gemeinsam verwendet wird. Wenn in diesem Fall der Prozess
1 und der Prozess 2 versuchen, die gemeinsame Ressource A einander
ausschließend
zu kontrollieren oder zu verwalten, indem sie die Sperrfunktion
verwenden, kann das Prioritätsumkehrungsproblem
auftreten, wodurch die periodische Ansteuerbarkeit des Prozesses
behindert wird.
-
Ein
weiteres wichtiges Problem, das infolge der Prioritätsumkehrung
auftritt, besteht darin, dass der Prozess, der gesperrt wurde, wodurch
das Prioritätsumkehrungsproblem
hervorgerufen wird, mit der höchsten
Präferenz
abgewickelt wird. Demgemäß kann sicher
ausgesagt werden, dass das Prioritätsumkehrungsproblem einen nachteiligen
Einfluss sogar auf die periodische Ansteuerbarkeit des anderen Prozesses,
der an der kontinuierlichen Medienverarbeitung teilnimmt, ausübt.
-
Unter
den Umständen
ist in dem System, das für
das Ausführen
der kontinuierlichen Medienverarbeitung ausgelegt ist, ein Verfahren
zum Strukturieren eines Computersystems vorstellbar, ohne von Beginn
an eine Sperre zu verwenden, um das Prioritätsumkehrungsproblem zu vermeiden.
Als ein Verfahren zum Verwirklichen der exklusiven Kontrolle bzw.
Steuerung oder der einander ausschließenden Verwaltung des Prozesses
kann ein Prozesskontroll- bzw. Prozesssteuerungs- oder -verwaltungsverfahren entwickelt
werden, bei dem dem Prozess, der gegenwärtig die gemeinsame Ressource
verwendet, erlaubt wird, die CPU (Zentralverarbeitungseinheit) ausschließlich zu
belegen, oder bei dem, anders ausgedrückt, unterbunden oder verhindert
wird, dass ein anderer Prozess abgewickelt wird, solange die gemeinsame
Ressource von einem gegebenen der Prozesse verwendet wird. Ein solches
Steuer- oder Verwaltungsverfahren
kann durch Verwenden eines in der
japanischen
Patentanmeldung 8-97997 vorgeschlagenen Präemptionssteuerverfahrens
verwirklicht werden. Es sei am Rande bemerkt, dass das Präemptionssteuerverfahren
verhindert, dass ein gerade ausgeführter Prozess vorübergehend
ausgesetzt (d. h. unterbrochen) wird, indem Schnittstellen "Präemptionsverhinderung" und "Aufheben oder Löschen der
Präemptionsverhinderung" bereitgestellt werden,
wobei während
einer Periode zwischen einem Zeitpunkt, zu dem die Präemptionsverhinderung gesetzt
wird, und einem Zeitpunkt, zu dem die Präemptionsverhinderung gelöscht wird
(diese Periode kann auch als das Präemptionsverhinderungsintervall
bezeichnet werden), verhindert wird, dass der gerade ausgeführte Prozess
unterbrochen wird und die Ausführung
demgemäß selbst
dann fortsetzen kann, wenn eine Abwicklungsaufforderung von einem
anderen Prozess ausgegeben wird. Durch diese Steuerung kann gewährleistet
werden, dass nicht mehr als ein Prozess die gemeinsame Ressource
zu einer Zeit verwenden kann. Mit anderen Worten kann auf diese
Weise die exklusive Steuerung oder Verwaltung der Prozesse verwirklicht
werden.
-
Es
ist jedoch zu verstehen, dass bei dem vorstehend erwähnten Steuerverfahren
die periodische Ansteuerbarkeit des anderen Prozesses behindert werden
kann, wenn der Prozess, der die gemeinsame Ressource verwendet, über eine
längere
Dauer läuft.
-
Es
sei beispielsweise eine Verarbeitung zum Extrahieren einer Ressource
aus einer freien Liste, in der in dem System gemeinsam benutzte
verwendbare Ressourcen eingereiht sind, zum Initialisieren der extrahierten
Ressource und zum Verketten von ihr mit einer Ressourcenzuweisungsliste
eines gegebenen Prozesses betrachtet. In diesem Fall sind die gemeinsamen
Ressourcen, welche die einander ausschließende Steuerung oder Verwaltung
benötigen, die
freie Liste und die Ressourcenzuweisungsliste.
-
Wenn
die vorstehend erwähnte
Verarbeitung nur durch Festlegen des Präemptionsverhinderungsintervalls
zu verwirklichen ist, ist es notwendig, das Präemptionsverhinderungsintervall
so festzulegen, dass es sich von einem Zeitpunkt "vor dem Kontaktieren
der freien Liste" bis
zu einem Zeitpunkt, zu dem "die
Ressource in die Ressourcenzuweisungsliste eingereiht wurde", erstreckt. Hierzu
müssen
die nachstehend erwähnten
Verarbeitungen (1a) bis (5a) ausgeführt werden.
- (1a)
Festlegen des Präemptionsverhinderungszustands.
- (2a) Entnehmen der Ressource aus der freien Liste.
- (3a) Initialisieren der Ressource.
- (4a) Einreihen der Ressource in die Ressourcenzuweisungsliste
für die
Prozesse.
- (5a) Löschen
des festgelegten Präemptionsverhinderungszustands.
-
An
dieser Stelle sei bemerkt, dass die Zeit, die für die Initialisierung der Ressource
erforderlich ist, nicht immer kurz ist. Tatsächlich wird eine Zeit in der
Größenordnung
von einigen zehn Millisekunden ausschließlich für das Initialisieren eines
Speichers nach einer Speicherzuweisung innerhalb des Betriebssystems
benötigt.
Wenn die einander ausschließende
Steuerung demgemäß nur durch
Festlegen des Präemptionsverhinderungsintervalls
zu verwirklichen ist, wie vorstehend erwähnt wurde, kann sich eine Situation
ergeben, in der ein gegebener Prozess die CPU während einer längeren Zeit
belegt, was zu einer Beeinträchtigung
des Ansprechverhaltens auf der Echtzeitbasis führt, wodurch schließlich die
periodische Ansteuerbarkeit der kontinuierlichen Medienverarbeitung
nachteilig beeinflusst wird.
-
Um
den vorstehend erwähnten
Problemen Rechnung zu tragen, können
die vorstehend erwähnten
Verarbeitungen folgendermaßen
modifiziert oder umgeordnet werden:
- (1b) Festlegen
des Präemptionsverhinderungszustands.
- (2b) Entnehmen der Ressource aus der freien Liste.
- (3b) Löschen
des festgelegten Präemptionsverhinderungszustands.
- (4b) Initialisieren der Ressource.
- (5b) Festlegen des Präemptionsverhinderungszustands.
- (6b) Einreihen der Ressource in die Ressourcenzuweisungsliste
für die
Prozesse.
- (7b) Löschen
des festgelegten Präemptionsverhinderungszustands.
-
Die
vorstehend erwähnten
Verarbeitungen können
in Hinblick auf die einander ausschließende Steuerung oder Verwaltung
sicher die notwendige Bedingung erfüllen. Abgesehen davon kann
die Dauer des Präemptionsverhinderungsintervalls
auf ca. 10 μs
verringert werden, während
bei der Ressourceninitialisierungsverarbeitung (4b) das Recht der Verwendung
der CPU auf einen anderen Prozess übertragen werden kann. Demgemäß kann das
Echtzeit-Ansprechverhalten des Systems verbessert werden. Leider
kann sich jedoch ein Problem ergeben, wenn der Prozess, der die
Ressourceninitialisierungsverarbeitung (4b) ausführt, im Laufe der Ausführung dieser
Verarbeitung zwangsweise von außen beendet
wird.
-
Generell
sind die meisten Computersysteme mit einer Funktion zum Unterbrechen
der Prozessausführung
von außen
versehen, um das zu lange Laufen eines Programms zu verhindern.
Wenn demgemäß der die
vorstehend erwähnten
Verarbeitungen ausführende
Prozess durch einen anderen Prozess zwangsweise beendet wird, indem
auf die vorstehend erwähnte
Funktion des zwangsweisen Beendens zurückgegriffen wird, kann die
durch die Verarbeitung (4b) initialisierte Ressource zu einer freien Ressource
werden, die zu keiner der Verwaltungslisten gehört. Dadurch kann sich eine
Situation ergeben, in der das Betriebssystem die Ressource nicht wiederherstellen
kann, wenn der Prozess beendet wird, was wiederum bedeutet, dass
die Ressource, die von dem zwangsweise beendeten Prozess verwendet
wird, für
immer unbenutzbar wird. Um dieses Problem zu vermeiden, kann ein
Verfahren zum Initialisieren der Ressource in dem Zustand, in dem
die Ressource in die freie Liste oder die Ressourcenzuweisungsliste
eingereiht wird, entwickelt werden. In diesem Fall ist die Dauer
des Präemptionsverhinderungsintervalls
jedoch im Wesentlichen gleich jener der Präemptionsverhinderungsperiode,
welche die gesamte vorstehend beschriebene Verarbeitung abdeckt.
Als ein anderes Verfahren ist es auch vorstellbar, getrennt eine
Liste zum Verwalten der initialisierten Ressourcen zu präparieren,
wobei die Ressource, die der Verarbeitung (4b) unterzogen wird,
in diese Liste eingereiht wird. Dieses Verfahren ist jedoch in der
Hinsicht nachteilig, dass der mit der Initialisierungsverarbeitung
verbundene Aufwand zunimmt, weil die Listenkettenänderungs-Verarbeitung mit
einer erhöhten
Häufigkeit
ausgeführt
werden muss.
-
Angesichts
des vorstehend beschriebenen Stands der Technik hat der Erfinder
der vorliegenden Anmeldung ein Prozessausführungsverfahren entwickelt,
das unter Verwendung des Präemptionssteuerverfahrens
in der Lage ist, die gemeinsame Ressource zu verarbeiten, ohne die
periodische Ansteuerbarkeit der kontinuierlichen Medienverarbeitung
nachteilig zu beeinflussen.
-
Dementsprechend
besteht eine Aufgabe der vorliegenden Erfindung darin, ein Prozessausführungsverfahren
zum Ausführen
von Prozessen, welche eine gemeinsame Ressource in einem für eine kontinuierliche
Medienverarbeitung vorgesehenen Computersystem verwenden, bereitzustellen.
Diese wird durch das in Anspruch 1 definierte Verfahren gelöst. Anspruch
2 betrifft eine bevorzugte Ausführungsform
der Erfindung.
-
Gemäß den Lehren
der Erfindung wird durch den Prozess vor der Verwendung der gemeinsamen Ressource
erklärt,
dass der Prozess nicht zwangsweise beendet wird. Es sei bemerkt,
dass in der folgenden Beschreibung der Ausdruck "der Prozess wird nicht abgebrochen" oder dergleichen
verwendet wird, was bedeutet, dass der Prozess nicht zwangsweise
beendet wird, und dass die Verhinderung, dass der Prozess zwangsweise
beendet wird, als "Abbruchverhinderung" oder dergleichen
ausgedrückt wird.
Demgemäß kann "der Zustand, in dem
verhindert wird, dass ein Prozess abgebrochen wird" als "Abbruchverhinderungszustand" oder dergleichen ausgedrückt werden.
Zusätzlich
wird der Prozess "präemptionsverhindert", was bedeutet, dass
er vor einer Unterbrechung oder Aussetzung der von diesem Prozess
ausgeführten
Verarbeitung oder Aufgabe geschützt
ist. Am Ende der Verwendung der gemeinsamen Ressource wird der Prozess
aus dem Präemptionsverhinderungszustand
gelöscht.
Nach Abschluss aller Verarbeitungen für die gemeinsame Ressource
wird durch den Prozess erklärt,
dass er zwangsweise beendet werden kann, was als "Löschen des Prozesses aus dem
Abbruchverhinderungszustand" oder
einfach als "Löschen des
Abbruchverhinderungszustands" oder
dergleichen ausgedrückt
wird. Ferner wird der Zeitraum oder das Intervall zwischen der Abbruchverhinderungserklärung und
der Abbruchverhinderungszustands-Löscherklärung als "Abbruchverhinderungsintervall" bezeichnet. Wenn
eine Anforderung für
die zwangsweise Beendigung eines Prozesses während der Abbruchverhinderungsperiode
oder des Abbruchverhinderungsintervalls ausgegeben wird, wird die
Ausführung
des Prozesses fortgesetzt, bis die während der Abbruchverhinderungsperiode
auszuführende
Verarbeitung abgeschlossen wurde. Wenn der Abbruchverhinderungszustand
gelöscht
wird, wird der Prozess zwangsweise beendet.
-
In
einem bevorzugten Modus zum Ausführen der
Erfindung wird im System ein einziger Prozess bereitgestellt, der
zweckgebunden vorgesehen ist, um der Situation Rechnung zu tragen,
dass die gemeinsame Ressource über
eine längere
Dauer von einem Prozess verwendet wird. Ferner ist zum Senden der
Anforderungen zur Verwendung der gemeinsamen Ressource zu dem einzigen
Prozess eine Warteschlange bereitgestellt. Der andere Prozess, der
für die
Ausführung
der kontinuierlichen Medienverarbeitung vorgesehen ist, gibt eine
Anforderung zur Verwendung der gemeinsamen Ressource an den einzigen
zweckgebundenen Prozess aus, bevor mit der periodischen Ansteuerung
begonnen wird, wobei nach Abschluss der Verarbeitung für die gemeinsame
Ressource das periodische Ansteuern in Kraft gesetzt wird. Die vorstehend
erwähnte
Anforderung wird in der Warteschlange registriert. Durch Bereitstellen
eines solchen zweckgebundenen Prozesses kann gewährleistet werden, dass stets
nur ein Prozess in dem System die Verarbeitung für die gemeinsame Ressource
ausführen
kann. Demgemäß kann die
Verarbeitung für
die gemeinsame Ressource in dem Präemptionsermöglichungszustand ausgeführt werden,
was wiederum bedeutet, dass die Verarbeitung für die gemeinsame Ressource
parallel mit dem periodisch angesteuerten Prozess oder den periodisch
angesteuerten Prozessen ausgeführt
werden kann.
-
Durch
Kombinationen der zwei vorstehend erwähnten Prozessausführungsverfahren
können mehrere
Prozesse, welche die gemeinsame Ressource verwenden, ausgeführt werden,
ohne die in der Mehrfachverarbeitungsumgebung, in der mehrere Prozesse
parallel zueinander ausgeführt
werden können,
periodisch angesteuerten Prozesse merklich zu beeinträchtigen.
-
Andererseits
ergeben sich im Fall des Verfahrens, bei dem die Kennung als Schlüssel in
die Hash-Funktion eingegeben oder dieser zugewiesen wird, um den
Index "Index" der die Adresse
der Ressource enthaltenden Ressourcenverwaltungsdaten, um auf die
Ressource zuzugreifen, zu bestimmen, die nachstehend erwähnten Probleme
bei der Ausführung
dieser Verarbeitung, die eine große Datenmenge mit hoher Geschwindigkeit
in Echtzeit verarbeiten muss, während
wie im Fall der Multimedia-Datenverarbeitung in jedem vorbestimmten
Intervall eine CPU-Zeit zugewiesen wird.
- (1)
Wenn mehrere Prozesse gleichzeitig auf eine Dateneinheit zugreifen,
findet eine Kollision der Hash-Werte bei dem Zugriffsverfahren unter
Verwendung der Hash-Funktion statt, wodurch es notwendig wird, den Überlaufbereich
zu suchen, während
Zeigern gefolgt wird, bis die Kennung der gesuchten Ressource gefunden
wurde.
-
Ferner
ist es, wenn die Kennung gefunden wurde, notwendig, die Prozessverwaltungsdaten
zu suchen, indem den Zeigern gefolgt wird, bis die Prozesskennung
gefunden wurde, um zu prüfen,
ob der Prozess, der versucht, auf die gemeinsame Ressource zuzugreifen,
wirklich das Zugriffsrecht hat (d. h. das Recht, auf die Ressource
zuzugreifen). Folglich nimmt der Zusatzaufwand bei der Verarbeitung
erheblich zu, während
die für
den Speicherzugriff eingenommene Zeit zu lang wird, um für eine wirksame Wiedergabe
der Daten verwendbar zu sein.
- (2) In dem System,
in dem die Benutzeranwendung die Ressource entsperrt, muss das Betriebssystem
den Zeigern aller Prozessverwaltungsdaten folgen, um die Kennung
des die Ressource verwendenden Prozesses zu erhalten und die gefundenen
Prozessverwaltungsdaten freizugeben, während es den einzelnen Prozessen
mitteilt, dass die Ressource nicht verwendet werden kann. Während des
Zeitraums für
die vorstehend erwähnte
Suche und für
die Ausführung
der anschließenden
Verarbeitungen werden alle Zugriffe von den Benutzeranwendungen
auf die Ressource verhindert oder unterbunden. Folglich nimmt in dem
Fall, in dem die Ressourcenzuweisungsaufhebungsverarbeitung stattfindet,
und in dem System, in dem mehrere in Echtzeit zu verarbeitende Prozesse
existieren, der Zusatzaufwand beim Suchen der Prozesse, welche die
Ressource, deren Zuweisung aufzuheben ist, gemeinsam verwenden,
und beim Ausführen
der anschließenden
Zuweisungsaufhebungsverarbeitung erheblich zu. In diesem Fall ist
die Echtzeitverarbeitung sehr schwierig zu verwirklichen oder wird
unmöglich gemacht.
-
Angesichts
des vorstehend Erwähnten
ist es wünschenswert,
ein Zugriffsverfahren bereitzustellen, das in der Lage ist, den
Zusatzaufwand bei der Übersetzung
zwischen der Kennung und der Adresse zu verringern, während die
Zugriffsrechts-Steuerfunktion des herkömmlichen Verfahrens beibehalten wird,
und die Zeit oder die Periode zu verringern, während derer der Zugriff auf
die gemeinsame Ressource zum Ausführen der Prozessbeendigungsverarbeitung
verhindert ist.
-
Zum
Lösen des
vorstehend Erwähnten
wird dargelegt, dass eine Kennung, die aus Adressinformationen und
Erzeugungsidentifikationsinformationen einer Ressource besteht,
einer Ressource bei ihrer Erzeugung zugewiesen wird und gleichzeitig
die Erzeugungsidentifikationsinformationen an einer ersten Stelle
der Ressource gespeichert werden. Die Erzeugungsidentifikationsinformationen
werden aus einer Kennung extrahiert, die als Argument eines von einer
Benutzeranwendung ausgegebenen Systemaufrufs nach einem Zugriff
auf die Ressource übertragen
wird. Die extrahierten Erzeugungsidentifikationsinformationen werden
mit den an der ersten Stelle der Ressource gespeicherten Erzeugungsidentifikationsinformationen
verglichen. Der Zugriff auf die Ressource wird ermöglicht,
wenn eine Übereinstimmung zwischen
beiden Erzeugungsidentifikationsinformationen gefunden wird, während er
verhindert wird, wenn eine Diskrepanz zwischen beiden Erzeugungsidentifikationsinformationen
gefunden wird. Auf diese Weise kann das Zugriffsrecht auf die Ressource
ausschließlich
durch Vergleichen beider Erzeugungsidentifikationsinformationen
gesteuert werden.
-
Die
vorstehend erwähnten
und andere Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung
werden beim Lesen der folgenden Beschreibung der nur als Beispiel
dienenden bevorzugten Ausführungsformen
in Zusammenhang mit der anliegenden Zeichnung leichter verständlich werden.
-
KURZBESCHREIBUNG DER ZEICHNUNG
-
Im
Laufe der folgenden Beschreibung wird auf die Zeichnung Bezug genommen.
Es zeigen:
-
1 ein
schematisches Diagramm zum Erläutern
eines herkömmlichen
Schemas zum Steuern des Zugriffsrechts auf eine gemeinsame Ressource in
einem bereits bekannten Mehrprozessor-Computersystem,
-
2A eine
schematische Ansicht einer Struktur von Ressourcenverwaltungsdaten,
die für die
Ressourcenverwaltung in einem Computersystem verwendet werden,
-
2B eine
schematische Ansicht einer Struktur von Prozessverwaltungsdaten,
die für
die Prozessverwaltung in dem Computersystem verwendet werden,
-
3 ein
Flussdiagramm zum Erläutern
einer herkömmlichen
Ressourcenzuweisungsverarbeitung,
-
4 ein Flussdiagramm zum Erläutern einer
herkömmlichen
Ressourcenzugriffsverarbeitung,
-
5 ein
Flussdiagramm zum Erläutern
einer herkömmlichen
Ressourcenzuweisungsaufhebungsverarbeitung,
-
6 ein
schematisches Diagramm einer Gruppe von Modulen und Daten, die zum
Ausführen des
Verfahrens gemäß der Ausführungsform
der vorliegenden Erfindung benötigt
werden,
-
7 ein
Flussdiagramm zum Erläutern
einer Verarbeitungsprozedur, die gemäß der in 6 dargestellten
Ausführungsform
der Erfindung ausgeführt
wird,
-
8 ein
Flussdiagramm zum Erläutern
einer Verarbeitungsprozedur einer in 6 dargestellten
Abbruchverhinderungsfunktion (21),
-
9 ein
Flussdiagramm zum Erläutern
einer Verarbeitungsprozedur einer in 6 dargestellten
Präemptionsverhinderungsfunktion
(32),
-
10 ein
Flussdiagramm zum Erläutern
einer Verarbeitungsprozedur einer in 6 dargestellten
Präemptionsverhinderungs-Löschfunktion
(33),
-
11 ein
Flussdiagramm zum Erläutern
einer Verarbeitungsprozedur einer in 6 dargestellten
Abbruchverhinderungs-Löschfunktion
(22),
-
12 ein
schematisches Diagramm von Modulen, die beim Ausführen des
Prozessausführungsverfahrens
gemäß einer
anderen Ausführungsform
der Erfindung verwendet werden,
-
13 ein
Flussdiagramm zum Erläutern
einer Verarbeitungsprozedur von in 12 dargestellten
Prozessen (210–212),
-
14 ein
Flussdiagramm zum Erläutern
einer Verarbeitungsprozedur, die von einem in 12 dargestellten
Verarbeitungsanforderungs-Benachrichtigungsmodul (300)
ausgeführt
wird,
-
15 ein
Flussdiagramm zum Erläutern
einer Verarbeitungsprozedur, die von einem Serialisierungsprozessmodul
(220) ausgeführt
wird,
-
16 ein
Flussdiagramm zum Erläutern von
Verarbeitungen, die von einem in 12 dargestellten
Verarbeitungsabschluss-Benachrichtigungsmodul (310–312)
ausgeführt
werden, die 17A, 17B und 17C schematische Ansichten von Hauptbestandteilen,
die an der Steuerung oder Verwaltung des Zugriffsrechts teilnehmen,
-
18 ein
Flussdiagramm zum allgemeinen Erläutern eines Ablaufs der Ressourcenzugriffsverarbeitung,
-
19 ein
Flussdiagramm zum schematischen Erläutern einer Ressourcenzuweisungsverarbeitung,
-
20 ein
Flussdiagramm zum Erläutern
einer Erzeugungsidentifikationsinformations-Erzeugungs-(make_idinf)-Verarbeitung,
-
21 ein
Flussdiagramm zum Erläutern
einer Ressourcenbereichsreservierungs-(alloc_id)-Verarbeitung,
-
22 ein
Flussdiagramm zum Erläutern
einer Kennungserzeugungs-(make_id)-Verarbeitung,
-
23 ein
Flussdiagramm zum Erläutern
einer Ressourcenzugriffsverarbeitung und
-
24 ein
Flussdiagramm zum Erläutern
einer Ressourcenzuweisungsaufhebungsverarbeitung.
-
BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
Nun
wird die vorliegende Erfindung detailliert mit Bezug auf gegenwärtig als
bevorzugte oder typisch angesehene Ausführungsformen mit Bezug auf die
Zeichnung beschrieben. In der folgenden Beschreibung bezeichnen
gleiche Bezugszahlen in den verschiedenen Ansichten gleiche oder
entsprechende Teile.
-
6 zeigt
schematisch einen Satz von Modulen und Daten, die zum Ausführen eines
Verfahrens gemäß einer
Ausführungsform
der vorliegenden Erfindung notwendig sind.
-
In
der Figur bezeichnet eine Bezugszahl
10 eine Prozessverwaltungstabelle
10 zum
Steuern oder Verwalten von Prozessen. In der Prozessverwaltungstabelle
10 sind
ein Abbruchanforderungs-Hinweiszeichen
11, ein Abbruchverhindert-Hinweiszeichen
12 und
ein Zähler
13 zum
Zählen
verschachtelter Abbruchverhinderungen enthalten. Ferner bezeichnen
eine Bezugszahl
20 ein Prozessverwaltungsmodul zum Steuern
oder Verwalten von Prozessen, eine Bezugszahl
21 eine Schnittstellenfunktion
zum Festlegen der Abbruchverhinderung, eine Bezugszahl
22 eine
Schnittstellenfunktion zum Löschen
der Abbruchverhinderung und eine Bezugszahl
200 einen Prozess,
der die Verarbeitung für
eine gemeinsame Ressource benötigt.
Ferner bezeichnet eine Bezugszahl
40 eine Funktion, welche
eine im Prozess
200 bereitgestellte gemeinsame Ressource verwendet
und Arbeitsbereiche
23 und
37 enthält. Zusätzlich bezeichnet
eine Bezugszahl
30 ein Präemptionssteuermodul, das auf
den Lehren der in der
japanischen
Patentanmeldung 8-97997 offenbarten Erfindung beruht. Insbesondere
weist das Präemptionssteuermodul
30 einen
Abwickler
31, eine Präemptionsverhinderungsfunktion
32,
eine Präemptionsverhinderungs-Löschfunktion
33,
ein Abwicklungsanforderungs-Hinweiszeichen
34, ein Präemption-verhindert-Hinweiszeichen
35 und
einen Zähler
36 zum
Zählen
der verschachtelten Präemptionsverhinderungen
auf.
-
7 ist
ein Flussdiagramm zum Erläutern eines
Ablaufs von Steuerungen für
die Abbruchverhinderung und die Präemptionsverhinderung in einem
Prozess zum Verwirklichen eines Merkmals der vorliegenden Erfindung.
Wenn eine Verarbeitung in Bezug auf die gemeinsame Ressource auszuführen ist,
verhindert die Funktion 40, die im Prozess 200 zum
Ausführen
der vorstehend erwähnten
Verarbeitung enthalten ist, zunächst
unter Verwendung der Abbruchverhinderungsfunktion 21, dass
ihr eigener Prozess abgebrochen wird (Schritt 1300). Unmittelbar
vor der Verwendung der gemeinsamen Ressource verhindert die Funktion 40 durch
die Verwendung der im Präemptionssteuermodul 30 enthaltenen Präemptionsverhinderungsfunktion 32,
dass ihr eigener Prozess unterbrochen wird (Schritt 1301),
woraufhin die Verarbeitung, die die gemeinsame Ressource verwendet,
ausgeführt
wird (Schritt 1302). Nach Abschluss der Verarbeitung für die gemeinsame
Ressource wird die verhinderte Präemption sofort mit Hilfe der
im Präemptionssteuermodul 30 enthaltenen
Präemptionsverhinderungs-Löschfunktion 33 aufgehoben
oder gelöscht
(Schritt 1303). An dieser Stelle sei erwähnt, dass
die Einstellung des Präemptionsverhinderungsintervalls
(oder des Präemptionsverhinderungsabschnitts
angesichts des Steuerablaufs), das sich von der Präemptionsverhinderung
bis zum Löschen
der Präemptionsverhinderung
erstreckt (entsprechend dem Abschnitt, der sich von Schritt 1301 bis
Schritt 1303 erstreckt), auf eine Verarbeitung für die gemeinsame
Ressource beschränkt
ist, die innerhalb einer Zeit beendet wird, so dass kein nachteiliger
Einfluss auf die Funktionsweise des periodischen Ansteuerns ausgeübt wird,
beispielsweise innerhalb einer Zeit, die nicht länger ist als 10 einer Minimalzeit,
die zum Verwalten des periodischen Ansteuerns benötigt wird.
Während
einer Periode, die der nachfolgenden Erklärung der Präemptionsverhinderung vorhergeht,
gilt ein Präemptionsermöglichungszustand,
in dem Verarbeitungen ausgeführt werden,
die verhältnismäßig viel
Zeit benötigen,
wie eine Initialisierung der zugewiesenen Ressource oder dergleichen
(Schritt 1304). Während
dieser Periode kann die Ausführung
des Prozesses 200 vorübergehend
unterbrochen (oder ausgesetzt) werden, während zugelassen wird, dass
andere Prozesse abgewickelt werden. Wenn eine Verarbeitung für die gemeinsame
Ressource wieder notwendig wird, versetzt der Prozess 200 sich
selbst noch einmal in den Präemptionsverhinderungszustand
(Schritt 1305). Wenn die Verarbeitung für die gemeinsame Ressource
an ein Ende gelangt (Schritt 1306), wird die Präemptionsverhinderung
aufgehoben oder gelöscht (Schritt 1307).
Nach Abschluss aller Verarbeitungen wird die Abbruchverhinderung
schließlich
gelöscht, indem
auf die Verwendung der Abbruchverhinderungs-Löschfunktion 22 zurückgegriffen
wird (Schritt 1308).
-
Im
Fall des in 7 dargestellten Beispiels erscheint
das Präemptionsverhinderungsintervall zwei
Mal während
der Periode von der Abbruchverhinderung bis zum Löschen der
Abbruchverhinderung. Bei tatsächlichen
Anwendungen kann die Anzahl solcher Präemptionsverhinderungsintervalle größer oder
gleich drei sein.
-
8 ist
ein Flussdiagramm, in dem eine interne Verarbeitung der vorstehend
mit Bezug auf 7 erwähnten Abbruchverhinderungsprozedur (1300)
detailliert dargestellt ist. Die Ausführung der in 8 dargestellten
Verarbeitung wird unter Verwendung der Abbruchverhinderungsfunktion 21 bewirkt. Hierzu
prüft die
Abbruchverhinderungsfunktion 21 zuerst, ob das Abbruch-verhindert-Hinweiszeichen 12,
das in der Prozessverwaltungstabelle 10 enthalten ist,
die den Prozess 200 verwaltet, im AUS-Zustand ist oder
nicht (Schritt 1400). Wenn das Abbruch-verhindert-Hinweiszeichen 12 im
AUS-Zustand ist,
setzt die Abbruchverhinderungsfunktion 21 das Abbruch-verhindert-Hinweiszeichen 12 in
den EIN-Zustand (Schritt 1401). Anschließend inkrementiert
die Abbruchverhinderungsfunktion 21 den Wert des Zählers 13 um
eins (Schritt 1402). Die Ausführung der in 8 dargestellten
Prozedur ist unteilbar.
-
9 ist
ein Flussdiagramm, in dem die interne Verarbeitung der vorstehend
mit Bezug auf 7 erwähnten Präemptionsverhinderungsprozedur
(1301, 1305) detailliert dargestellt ist. Die
in 9 dargestellte Verarbeitung wird durch die in 6 dargestellte
Präemptionsverhinderungsfunktion 32 ausgeführt. Zuerst
prüft die
Präemptionsverhinderungsfunktion 32,
ob das im Präemptionssteuermodul 30 enthaltene
Präemption-verhindert-Hinweiszeichen 35 im
AUS-Zustand ist oder nicht (Schritt 1500). Wenn das Präemption-verhindert-Hinweiszeichen 35 im
AUS-Zustand ist, setzt die Präemptionsverhinderungsfunktion 32 das
Präemption-verhindert-Hinweiszeichen 35 in
den EIN-Zustand (Schritt 1501). Anschließend inkrementiert
die Präemptionsverhinderungsfunktion 32 den
Wert des Zählers 36 um
eins (Schritt 1502). Die ganze in 9 dargestellte
Prozedur wird unteilbar ausgeführt.
-
10 ist
ein Flussdiagramm, in dem die interne Verarbeitung der vorstehend
mit Bezug auf 7 erwähnten Prozedur zum Löschen der Präemptionsverhinderung
(1303, 1307) detailliert dargestellt ist. Die
Ausführung
der in 10 dargestellten Verarbeitung
wird von der in 6 dargestellten Präemptionsverhinderungs-Löschfunktion 33 vorgenommen.
Zuerst prüft
die Präemptionsverhinderungs-Löschfunktion 33, ob
der Verschachtelungswert (nachstehend beschrieben) der als erstes
Argument übertragenen
Funktion mit dem Wert des Zählers 36 übereinstimmt
(Schritt 1600). Falls keine Übereinstimmung gefunden wird,
wird eine Abnormitätsverarbeitung
ausgeführt.
Wenn andererseits eine Übereinstimmung
gefunden wird, wird der Wert des in das Präemptionssteuermodul 30 aufgenommenen Zählers 36 um
eins dekrementiert (Schritt 1601). Wenn der sich aus der
Dekrementierung ergebende Wert des Zählers 36 positiv (plus) ist,
wird die Verarbeitung intakt beendet (Schritt 1602). Wenn
der Wert des Zählers 36 null
oder negativ (minus) ist, wird das Präemption-verhindert-Hinweiszeichen
dagegen in den AUS-Zustand versetzt (Schritt 1603). Anschließend wird
das innerhalb des Präemptionssteuermoduls 30 gehaltene
Abwicklungsanforderungs-Hinweiszeichen 34 geprüft (Schritt 1604).
Wenn dieses Hinweiszeichen im AUS-Zustand ist, wird die Verarbeitung
beendet. Wenn das Abwicklungsanforderungs-Hinweiszeichen 34 andererseits
im EIN-Zustand ist, wird der Abwickler 31 aktiviert (Schritt 1605),
um dadurch die Ausführung
der Abwicklungsverarbeitung für
den Prozess in Kraft zu setzen.
-
11 ist
ein Flussdiagramm, in dem die interne Verarbeitung der vorstehend
mit Bezug auf 7 erwähnten Prozedur zum Löschen der
Abbruchverhinderung (1308) detailliert dargestellt ist. Die
in 11 dargestellte Verarbeitung wird mit Hilfe der
in 6 dargestellten Abbruchverhinderungs-Löschfunktion 22 ausgeführt. Zuerst
prüft die Abbruchverhinderungs-Löschfunktion 22,
ob der als erstes Argument von der Funktion übertragene Verschachtelungswert
(nachstehend beschrieben) mit dem Wert des Zählers 13 übereinstimmt
(Schritt 1700). Falls keine Übereinstimmung gefunden wird, wird
die Abnormitätsverarbeitung
ausgeführt.
Wenn andererseits die Übereinstimmung
bestätigt
wird, wird der Wert des Zählers 13,
der in der den Prozess 200 verwaltenden Prozessverwaltungstabelle 10 enthalten
ist, um eins dekrementiert (Schritt 1701). Wenn der sich
aus der Dekrementierung ergebende Wert des Zählers 13 positiv (plus)
ist, wird die Verarbeitung intakt beendet (Schritt 1702).
Falls der Wert des Zählers 13 null
oder negativ (minus) ist, wird das Abbruch-verhindert-Hinweiszeichen
dagegen in den AUS-Zustand versetzt (Schritt 1703). Anschließend wird
das in der Prozessverwaltungstabelle 10 enthaltene Abbruchanforderungs-Hinweiszeichen 11 geprüft (Schritt 1704).
Wenn dieses Hinweiszeichen im AUS-Zustand ist, wird die Verarbeitung
beendet. Wenn das Abbruch anforderungs-Hinweiszeichen 11 andererseits
im EIN-Zustand ist, wird das Prozessverwaltungsmodul 20 aktiviert
(Schritt 1705), um dadurch die Ausführung der Abbruchverarbeitung
für den
Prozess 200 in Kraft zu setzen.
-
Weiter
aktiviert in dem Fall, in dem die in 11 dargestellte
Verarbeitung im AUS-Zustand des Abbruchanforderungs-Hinweiszeichens 11 beendet
wird, das Prozessverwaltungsmodul 20 den im Präemptionssteuermodul 30 enthaltenen
Abwickler 31, um die Prozessneuabwicklungsverarbeitung
auszuführen.
-
Mit
Bezug auf 6 sei bemerkt, dass das Intervall
oder die Periode, während
derer das Abbruch-verhindert-Hinweiszeichen 12 im
EIN-Zustand bleibt, d. h. die Periode von einem Zeitpunkt, zu dem die
Abbruchverhinderungsfunktion 21 aufgerufen wird, um das
Abbruch-verhindert-Hinweiszeichen 12 in den EIN-Zustand
zu versetzen, bis zu einem Zeitpunkt, zu dem die Abbruchverhinderungs-Löschfunktion 22 aufgerufen
wird, um das Abbruch-verhindert-Hinweiszeichen 12 in den
AUS-Zustand zu versetzen,
das Abbruchverhinderungsintervall darstellt. Das Abbruch-verhindert-Hinweiszeichen 12 befindet sich
im AUS-Zustand, wenn der Prozess erzeugt oder generiert wird, und
es wird nur dann in den EIN-Zustand versetzt, wenn die Abbruchverhinderungsfunktion 21 aufgerufen
wird. In dem Fall, in dem die erzwungene Beendigung des Prozesses 200 während des
Abbruchverhinderungsintervalls auftritt, während dessen das Abbruch-verhindert-Hinweiszeichen 12 in
dem EIN-Zustand
bleibt, der durch die vom Prozess 200 aufgerufene Abbruchverhinderungsfunktion 21 festgelegt
wurde, führt
das Prozessverwaltungsmodul 20 nur die Verarbeitung für das Versetzen
des Abbruchanforderungs-Hinweiszeichens 11 in den EIN-Zustand
aus, während
die Fortsetzung der Verarbeitung des Prozesses 200 erlaubt
ist. Die erzwungene Beendigung des Prozesses 200 wird in
Kraft gesetzt, wenn das Abbruchverhindert-Hinweiszeichen 12 durch
die vom Prozess 200 aufgerufene Abbruchverhinderungs-Löschfunktion 22 in
den AUS-Zustand
versetzt wurde.
-
Weiter
sei mit Bezug auf 6 bemerkt, dass das Intervall
oder die Periode, während
derer das Präemptionverhindert-Hinweiszeichen 35 im EIN-Zustand
bleibt, d. h. die Periode von einem Zeitpunkt, zu dem die Präemptionsverhinderungsfunktion 32 aufgerufen
wird, um das Präemptionverhindert-Hinweiszeichen 35 in
den EIN-Zustand zu versetzen, bis zu einem Zeitpunkt, zu dem die
Präemptionsverhinderungs-Löschfunktion 33 aufgerufen wird,
um das Präemptionverhindert-Hinweiszeichen 35 in
den AUS-Zustand zu versetzen, das Präemptionsverhinderungsintervall
darstellt. Das Präemption-verhindert-Hinweiszeichen 35 befindet
sich im AUS-Zustand,
wenn das System aktiviert ist, und es wird nur dann in den EIN-Zustand
versetzt, wenn die Präemptionsverhinderungsfunktion 32 aufgerufen wird.
In dem Fall, in dem die Abwicklungsanforderung für den anderen Prozess bzw.
die anderen Prozesse während
des Intervalls auftritt, in dem das Präemption-verhindert-Hinweiszeichen 35 im
EIN-Zustand bleibt, der durch die vom Prozess 200 aufgerufene Präemptionsverhinderungsfunktion 32 festgelegt wurde,
führt der
Abwickler 31 nur die Verarbeitung zum Versetzen des Abwicklungsanforderungs-Hinweiszeichens 34 in
den EIN-Zustand aus, während die
Fortsetzung der Verarbeitung des Prozesses 200 ohne Abwicklung
des anderen Prozesses bzw. der anderen Prozesse erlaubt wird. Wenn
das Präemption-verhindert-Hinweiszeichen 35 durch
die vom Prozess 200 aufgerufene Präemptionsverhinderungs-Löschfunktion 33 in
den AUS-Zustand versetzt wird, versetzt der Abwickler 31 das
Abwicklungsanforderungs-Hinweiszeichen in den AUS-Zustand und unterbricht
die Ausführung
des Prozesses 200, während
die Abwicklung anderer Prozesse erlaubt wird.
-
Mit
Bezug auf 7 sei bemerkt, dass in dem Intervall
oder Abschnitt, der sich von Schritt 1301 bis Schritt 1303 erstreckt,
und in dem Intervall oder Abschnitt, der sich von Schritt 1305 bis
Schritt 1307 erstreckt, die Präemption verhindert ist, was wiederum
bedeutet, dass das Recht zur Verwendung der CPU (Zentralverarbeitungseinheit)
nie auf andere Prozesse übertragen
wird. Daher kann nur der laufende Prozess die gemeinsame Ressource
verwenden. Mit anderen Worten wird jeder andere Prozess daran gehindert,
die gemeinsame Ressource zu verwenden, wodurch die exklusive Kontrolle
oder Verwaltung der Ressource verwirklicht werden kann, wodurch
es möglich
wird, die kontinuierliche Medien-Mehrfachverarbeitung
unter Verwendung der gemeinsamen Ressource auszuführen. Weil
zusätzlich der
Abbruch während
des die Schritte 1300 bis 1308 überspannenden
Intervalls verhindert wird, wird jeder Prozess, der die Ressource
reserviert hat, durch die erzwungene Beendigung abgebrochen. Demgemäß wird sicher
verhindert, dass die Ressource in einen Zustand gelangt, in dem
sie während
eines unbestimmten Zeitraums nicht verwendet werden kann.
-
Die
Abbruchverhinderung sowie die Löschung
der Abbruchverhinderung werden durch das nachstehend erwähnte Medium
der Schnittstellen bewirkt.
<Funktionsname>
abort_disable
(*Niveau)
<Argument>
Niveau: Die Tiefe
der durch ein Paar der nun berücksichtigten
momentanen Funktion und der Funktion "abort_enable" gebildeten Verschachtelung wird zurückgegeben.
<Erläuterung>
-
Die
nun betrachtete Funktion kann bewirken, dass der gegenwärtig ausgeführte Prozess
in den Abbruchverhinderungszustand übergeht. Diese Funktion und
die Funktion "abort_enable" können während des
Abschnitts oder der Periode, die den Übergang in den Abbruchverhinderungszustand
ansprechend auf die Ausgabe dieser Funktion und die Wiederherstellung
in den Abbruchermöglichungszustand
ansprechend auf die Ausgabe der Funktion "abort_enable" umspannt, in einem Paar ausgegeben
werden. Dies bedeutet, dass das Paar aus der nun betrachteten Funktion
und der Funktion "abort_enable" verschachtelt werden
kann. Die nun betrachtete Funktion und die innerhalb der Verschachtelung
ausgegebene Funktion "abort_enable" vollführen keinen
Zustandsübergang
zwischen dem Abbruchverhinderungszustand und dem Abbruchermöglichungszustand.
Das Argument "Niveau" spiegelt die Tiefe
dieses Verschachtelungszustands wider.
<Funktionsname>
abort_enable (Niveau)
<Argument>
Niveau: Das Niveau
der Verschachtelung, das von der Funktion "abort_disable", welche das mit der momentanen Funktion
zu paarende Gegenstück
bildet, zurückgegeben
wird, wird festgelegt.
<Erläuterung>
-
Die
betrachtete Funktion kann bewirken, dass der gegenwärtig ausgeführte Prozess
in den Abbruchermöglichungszustand
wiederhergestellt wird. Die nun betrachtete Funktion (d. h. "abort_enable") und die Funktion "abort_disable" können während des
Abschnitts oder der Periode, die den Übergang in den Abbruchverhinderungszustand
ansprechend auf die Ausgabe der Funktion "abort_disable" und die Wiederherstellung in den Abbruchermöglichungszustand
ansprechend auf die Ausgabe der momentanen Funktion umspannt, in
einem Paar ausgegeben werden. Dies bedeutet, dass das Paar aus der
Funktion "abort_disable" und der nun betrachteten
Funktion "abort_enable" verschachtelt werden
kann. Die Funktion "abort_disable" und die innerhalb
der Verschachtelung ausgegebene nun betrachtete Funktion vollführen keinen
Zustandsübergang
zwischen dem Abbruchverhinderungszustand und dem Abbruchermöglichungszustand.
Das Argument "Niveau" bezeichnet die Tiefe
dieser Verschachtelung, d. h. den Wert von "Niveau" infolge des Ausgebens des Funktionsgegenstücks "abort_disable". Dieser Wert wird auch
vom Betriebssystem gehalten. Demgemäß tritt eine Diskrepanz zwischen
diesem Wert und der durch das Argument spezifizierten Tiefe der
Verschachtelung, nämlich
die so genannte Fehlerrückgabe,
auf.
-
Wenn
die im Prozess 200 enthaltene Funktion 40 die
Abbruchverhinderungsfunktion 21 verwendet, speichert die Funktion 40 in
ihrem eigenen Arbeitsbereich 23 die von der Abbruchverhinderungsfunktion 21 zurückgegebene
aktuelle Tiefe der Verschachtelung. Zum Ausgeben der Abbruchverhinderungs-Löschfunktion 22 wird
der im Arbeitsbereich 23 gespeicherte Wert als das Argument
der Funktion 40 festgelegt oder spezifiziert. Die Abbruchverhinderungs-Löschfunktion
dient dazu, den vorstehend erwähnten
Wert mit der aktuellen Tiefe der Verschachtelung zu vergleichen,
um die Fehlerrückgabe
in Kraft zu setzen, es sei denn, dass eine Übereinstimmung zwischen beiden
vorstehend erwähnten
Werten gefunden wird. Durch diese Funktion ist es möglich, leicht
einen Programmierungsfehler zu erkennen, der darin besteht, dass
die Abbruchverhinderungs-Löschfunktion,
die das Gegenstück
zu der Abbruchverhinderungsfunktion in einem Paar bilden soll, nicht
vorhanden ist.
-
Die
Präemptionsverhinderungsverarbeitung und
die Präemptionsverhinderungs-Löschverarbeitung
können
unter Verwendung der in der vorstehend erwähnten
japanischen Patentanmeldung 8-97997 offenbarten
Präemptionsverhinderungs-Löschschnittstelle ausgeführt werden.
Insbesondere werden die folgenden Schnittstellen verwendet:
<Funktionsname>
preempt_disable
(*Niveau)
<Argument>
Niveau: Die Tiefe
der durch ein Paar der nun betrachteten momentanen Funktion (d.
h. "preempt_disable") und der Funktion "preempt_enable" gebildeten Verschachtelung
wird zurückgegeben.
<Erläuterung>
-
Die
nun betrachtete Funktion bewirkt, dass der gegenwärtig ausgeführte Prozess
in den Präemptionsverhinderungszustand übergeht.
Diese Funktion "preempt_disable" und die Funktion "preempt_enable" können während des
Abschnitts oder Intervalls zwischen dem Übergang in den Präemptionsverhinderungszustand
ansprechend auf die Ausgabe dieser Funktion und der Wiederherstellung
in den Präemptions ermöglichungszustand
ansprechend auf die Ausgabe der Funktion "preempt_enable" in einem Paar ausgegeben werden. Dies
bedeutet, dass das Paar aus der nun betrachteten Funktion und der
Funktion "preempt_enable" verschachtelt werden
kann. Die nun betrachtete Funktion und die innerhalb der Verschachtelung
ausgegebene Funktion "preempt_enable" vollführen keinen
Zustandsübergang
zwischen dem Präemptionsverhinderungszustand
und dem Präemptionsermöglichungszustand. Das
Argument "Niveau" spiegelt die Tiefe
dieser Verschachtelung wider.
<Funktionsname>
preempt_enable (Niveau)
<Argument>
Niveau: Das Niveau
der Verschachtelung, das von der Funktion "preempt_disable", welche das Gegenstück des Paars mit der momentanen
Funktion bildet, zurückgegeben
wird, wird festgelegt.
<Erläuterung>
-
Die
betrachtete Funktion kann bewirken, dass der gegenwärtig ausgeführte Prozess
in den Präemptionsermöglichungszustand
zurückgeführt wird.
Die Funktion "preempt_disable" und diese Funktion
können
während
des Intervalls oder der Periode, die den Übergang in den Präemptionsverhinderungszustand
ansprechend auf die Ausgabe der Funktion "preempt_disable" und die Wiederherstellung in den Präemptionsermöglichungszustand
ansprechend auf die Ausgabe dieser Funktion umspannt, in einem Paar
ausgegeben werden. Dies bedeutet, dass das Paar aus der Funktion "preempt_disable" und der betrachteten
Funktion verschachtelt werden kann. Die Funktion "preempt_disable" und die innerhalb
der Verschachtelung ausgegebene nun betrachtete Funktion vollführen keinen
Zustandsübergang
zwischen dem Präemptionsverhinderungszustand
und dem Präemptionsermöglichungszustand.
Das Argument "Niveau" bezeichnet die Tiefe
dieser Verschachtelung, d. h. den durch die Ausgabe des Funktionsgegenstücks "preempt_disable" erhaltenen Wert
von "Niveau".
-
Die
Tiefe der Verschachtelung wird auch vom Betriebssystem gehalten.
Demgemäß tritt
eine Diskrepanz zwischen diesem Wert und der durch das Argument
spezifizierten Tiefe der Verschachtelung, nämlich die so genannte Fehlerrückgabe,
auf.
-
Wenn
die im Prozess 200 enthaltene Funktion 40 die
Präemptionsverhinderungsfunktion 32 verwendet,
speichert die Funktion 40 in ihrem eigenen Arbeitsbereich 37 die
von der Präemptionsverhinderungsfunktion 32 zurückgegebene
aktuelle Tiefe der Verschachtelung. Zum Ausgeben der Präemptionsverhinderungs-Löschfunktion 33 wird
der im Arbeitsbereich 23 gespeicherte Wert als das Argument
der Funktion 40 festgelegt oder spezifiziert. Die Präemptionsverhinderungs-Löschfunktion
dient dazu, den vorstehend erwähnten
Wert mit der aktuellen Tiefe der Verschachtelung zu vergleichen,
um die Fehlerrückgabe
in Kraft zu setzen, es sei denn, dass eine Übereinstimmung zwischen beiden
vorstehend erwähnten
Werten gefunden wird. Durch diese Funktion kann ein Programmierfehler
leicht erkannt werden, der darin besteht, dass die Präemptionsverhinderungs-Löschfunktion,
die das Gegenstück
zu der Präemptionsverhinderungsfunktion
in einem Paar bilden soll, nicht vorhanden ist.
-
Als
nächstes
wird eine Ausführungsform
der Erfindung beschrieben, die ein Verfahren zum Ausführen eines
Prozesses unter Verwendung einer gemeinsamen Ressource in einem
Fall betrifft, in dem die gemeinsame Ressource während einer längeren Dauer
verwendet wird.
-
Beim
Prozessausführungsverfahren
gemäß der vorliegenden
Ausführungsform
der Erfindung führt
ein periodisch angesteuerter Prozess eine Verarbeitung zum Reservieren
der Ressource nach Bedarf durch die Verwendung des nachstehend beschriebenen
Prozessausführungsverfahrens
in einem nicht periodisch angesteuerten Zustand vor Beginn der periodischen
Ansteuerung aus. Nach Abschluss der vorstehend erwähnten Verarbeitung
beginnt der Prozess periodisch angesteuert zu werden. Sobald mit
dem periodischen Ansteuern begonnen wurde, wird keine Verarbeitung
zum Reservieren der Ressource in dem nachstehend beschriebenen Prozessausführungsverfahren
ausgeführt.
-
12 zeigt
Module, die für
das Ausführen des
Prozessausführungsverfahrens
gemäß der vorliegenden
Ausführungsform
der Erfindung benötigt werden.
-
In 12 bezeichnen
Bezugszahlen 210 bis 212 jeweils jene Prozesse,
die die Verwendung der gemeinsamen Ressource fordern, und eine Bezugszahl 220 bezeichnet
den einzigen Prozess, der berechtigt ist, die Verarbeitung für eine spezifische
gemeinsame Ressource auszuführen.
Dieser Prozess 220 wird nachstehend als Serialisierungsprozess
bezeichnet. Der Serialisierungsprozess 220 ist innerhalb
des Systems vorhanden. Eine Bezugszahl 300 bezeichnet ein
Verarbeitungsanforderungs-Benachrichtigungsmodul, um den Serialisierungsprozess 220 über die
jeweiligen von den Prozessen 210 bis 212 ausgegebenen
Verarbeitungsanforderungen zu benachrichtigen. Entsprechend dem
Serialisierungsprozess 220 ist das einzige Verarbeitungsanforderungs-Benachrichtigungsmodul 300 wie
im Fall des Prozesses 220 innerhalb des Systems bereitgestellt und
ständig
darin vorhanden. Bezugszahlen 310 bis 312 bezeichnen
jeweils Verarbeitungsabschluss-Benachrichtigungsmodule zum Übertragen
der Verarbeitungsabschlussnachricht vom Serialisierungsprozess 220 zu
den Prozessen 210 bis 212, wobei die Verarbeitungsabschluss-Benachrichtigungsmodule 310 bis 312 den
Prozessen 210 bis 212 jeweils nach ihrer Erzeugung
oder nach Ausgeben der Verarbeitungsanforderung davon zugewiesen
werden. Das Verarbeitungsanforderungs-Benachrichtigungsmodul 300 und
die Verarbeitungsabschluss-Benachrichtigungsmodule 310 bis 312 haben
jeweils interne Warteschlangen 400 und 410 bis 412.
-
Als
nächstes
wird die in dem in 12 dargestellten System ausgeführte Verarbeitung
mit Bezug auf die in den 13 bis 16 dargestellten Flussdiagramme
beschrieben.
-
13 ist
ein Flussdiagramm zur Erläuterung
einer Verarbeitung, die von jedem der Prozesse 210 bis 212,
welche die Verarbeitung für
die gemeinsame Ressource benötigen, ausgeführt wird.
Insbesondere gibt jeder der Prozesse 210 bis 212 eine Verarbeitungsanforderungsnachricht
an das Verarbeitungsanforderungs-Benachrichtigungsmodul 300 aus,
um die Verarbeitung des Serialisierungsprozesses 220 anzufordern,
der in der Lage ist, auf die gemeinsame Ressource zuzugreifen (Schritt 1800).
Der Prozess 210 oder 211 oder 212, der
die Verarbeitungsanforderung ausgegeben hat, wird sofort in den Zustand
versetzt, der auf den Empfang der Verarbeitungsabschlussnachricht
von dem zugeordneten der Verarbeitungsabschluss-Benachrichtigungsmodule 310 bis 312 wartet,
nachdem die Verarbeitungsanforderungsnachricht abgeschlossen wurde.
Wenn der Verarbeitungsabschluss von dem Verarbeitungsabschluss-Benachrichtigungsmodul 310 oder 311 oder 312 mitgeteilt
wird (Schritt 1801), ruft der Prozess 210 oder 211 oder 212 die
Verarbeitungsabschlussnachricht aus der Warteschlange 410 oder 411 oder 412 ab,
die in dem zugeordneten der Verarbeitungsabschluss-Benachrichtigungsmodule 310 bis 312 bereitgestellt
ist (Schritt 1802), woraufhin die Verarbeitung für die von
einem der Prozesse 210 bis 212 angeforderte gemeinsame
Ressource beendet wird.
-
14 ist
ein Flussdiagramm zur Erläuterung
der vom Verarbeitungsanforderungs-Benachrichtigungsmodul 300 ausgeführten Verarbeitung. Zuerst
sei erwähnt,
dass das Verarbeitungsanforderungs-Benachrichtigungsmodul 300 ständig in
dem für
den Empfang der Verarbeitungsanforderungsnachricht bereiten Zustand
ist. Nach dem Empfang der Verarbeitungsanforderungsnachricht (Schritt 1900)
gibt das Verarbeitungsanforderungs-Benachrichtigungsmodul 300 die
Verarbeitungsanforderungsnachricht in der Reihenfolge des Empfangs
der Nachricht in die Warteschlange 400 (Schritt 1901), woraufhin
das Verarbeitungsanforderungs-Benachrichtigungsmodul 300 den
Serialisierungsprozess 220 informiert, dass die Verarbeitungsanforderung ausgegeben
wurde.
-
15 ist
ein Flussdiagramm zum Erläutern der
vom Serialisierungsprozess 220, der der einzige Prozess
ist, der in der Lage ist, die Verarbeitung für die gemeinsame Ressource
auszuführen,
ausgeführten
Verarbeitung. Ähnlich
dem Verarbeitungsanforderungs-Benachrichtigungsmodul 300 befindet
sich der Serialisierungsprozess 220 ständig in dem Zustand, in dem
er auf den Empfang der Verarbeitungsanforderungsnachricht wartet.
Nach dem Empfang der Informationen in Bezug auf die Ausgabe einer Verarbeitungsanforderung
vom Verarbeitungsanforderungs-Benachrichtigungsmodul 300 (Schritt 2000) ruft
der Serialisierungsprozess 220 die Verarbeitungsanforderung
aus der Warteschlange 400 im Verarbeitungsanforderungs-Benachrichtigungsmodul 300 ab
oder empfängt
diese (Schritt 2001), um die Verarbeitung an der gemeinsamen
Ressource oder für
diese in Übereinstimmung
mit der Anforderung auszuführen
(Schritt 2002). Nach Abschluss der Verarbeitung für die gemeinsame
Ressource teilt der Serialisierungsprozess 220 den Verarbeitungsabschluss
und das Ergebnis der Verarbeitung einem der Verarbeitungsabschluss-Benachrichtigungsmodule 310 bis 312 mit,
das einem der Prozesse 210 bis 212 zugeordnet
ist, der die entsprechende Verarbeitungsanforderung ausgegeben hat
(Schritt 2003). Inzwischen prüft der Serialisierungsprozess 220,
ob die nächste
Verarbeitungsanforderung in die Warteschlange gegeben wurde. Falls
dies der Fall ist, führt der
Serialisierungsprozess 220 die Verarbeitung für die gemeinsame
Ressource in Übereinstimmung
mit dieser Verarbeitungsanforderung aus. Andernfalls nimmt der Serialisierungsprozess 220 den
Zustand wieder auf, der für
den Empfang oder die Akzeptanz der nachfolgenden oder nächsten Verarbeitungsanforderung
bereit ist (Schritt 2000).
-
16 ist
ein Flussdiagramm zur Erläuterung
der vom Verarbeitungsabschluss-Benachrichtigungsmodul 310 oder 311 oder 312 ausgeführten Verarbeitung.
Jedes der Verarbeitungsabschluss-Benachrichtigungsmodule 310, 311 und 312 ist
in den Zustand versetzt, in dem es auf die Nachricht wartet, welche über den
Verarbeitungsabschluss gleichzeitig mit dem Ausgeben der Verarbeitungsanforderung von
dem zugeordneten der Prozesse 210 bis 212 informiert.
Nach dem Empfang des Verarbeitungsabschlusses vom Serialisierungsprozess 220 (Schritt 2100)
gibt das Verarbeitungsabschluss-Benachrichtigungsmodul
die Verarbeitungsabschlussnachricht und das Ergebnis der Verarbeitung
in die zugeordnete der Warteschlangen 410 bis 412 (Schritt 2101), woraufhin
das Verarbeitungsabschluss-Benachrichtigungsmodul 310 oder 311 oder 312 die
Nachricht, die den Verarbeitungsabschluss angibt, an den relevanten
der Prozesse 210 bis 212, der die Verarbeitungsanforderung
ausgegeben hat, ausgibt (Schritt 2102).
-
Im
Fall des in 12 dargestellten Systems wird
angenommen, dass drei Prozesse 210, 211 und 212 existieren,
welche die Verarbeitung für
die gemeinsame Ressource fordern. Es ist jedoch selbstverständlich,
dass die Inhalte der Verarbeitungen selbst dann im Wesentlichen
unveränderlich
sind, wenn die Anzahl der Prozesse, welche die die gemeinsame Ressource
betreffende Verarbeitung fordern, kleiner oder größer als
drei ist.
-
An
dieser Stelle sei erwähnt,
dass der Serialisierungsprozess 220 in dem in 12 dargestellten System
konstant im Präemptionsermöglichungszustand
arbeitet.
-
Ferner
sei wiederum erwähnt,
dass der Prozess 210, 211 oder 212 die
vorstehend erwähnten Ressourcenreservierungsverarbeitungen
ausführt (13),
bevor die periodische Ansteuerung davon eingeleitet wird. Mit anderen
Worten reserviert der Prozess (210, 211, 212)
die Ressourcendaten in dem für
das periodische Ansteuern irrelevanten Zustand, der erst eingeleitet
wird, nachdem die Ressource durch die vorstehend beschriebene Verarbeitung
reserviert wurde.
-
Durch
die Verwendung des Prozessausführungsverfahrens
auf der Grundlage des vorstehend beschriebenen Serialisierungsprozesses
braucht die exklusive Steuerung (d. h. die Steuerung oder Verwaltung
des wechselseitigen Ausschlusses) nicht ausgeführt zu werden, weil es nur
einen Prozess, nämlich
den Serialisierungsprozess, gibt, der die Verarbeitung direkt an
der gemeinsamen Ressource und für diese
ausführen
kann. Demgemäß kann durch
die Anordnung, bei der die Verarbeitung für die gemeinsame Ressource
durch den präemptionsermöglichten
unabhängigen
Prozess ausgeführt
wird, der der Verarbeitung für
die gemeinsame Ressource zugewiesen ist, die Prozessausführung erreicht
werden, ohne die Funktionsweise beim periodischen Ansteuern (oder
die periodische Ansteuerbarkeit) anderer Prozesse zu beeinflussen,
die an der kontinuierlichen Medienverarbeitung teilnehmen.
-
Wie
anhand der vorstehenden Beschreibung ersichtlich ist, kann eine
gemeinsame Ressource von den einzelnen Prozessen, die an der kontinuierlichen Medienverarbeitung
oder dergleichen beteiligt sind, gemeinsam verwendet werden, ohne
dass die periodische Ansteuerbarkeit der Prozesse in der Mehrfachverarbeitungsumgebung,
in der die gemeinsame Ressource verwendet wird, beeinflusst wird.
-
Als
nächstes
wird ein Zugriffsverfahren gemäß einer
anderen Ausführungsform
der vorliegenden Erfindung beschrieben.
-
§1.
Konfiguration
-
Hauptbestandteile
oder Module, die an einer Zugriffsrechtssteuerung teilnehmen, werden
mit Bezug auf die 17A, 17B und 17C beschrieben.
-
Eine
in 17A dargestellte Ressourcenkennung 600 ist
ein Argument mit 64 Bits, das in dem von der Benutzeranwendung ausgegebenen
Systemaufruf zur Verwendung beim Zugriff auf die Ressource enthalten
ist. Von dem 64-Bit-Argument
werden die ersten 32 Bits zum Identifizieren einer Anfangs- oder
Ausgangsadresse 601 einer Ressource 608 verwendet,
während
die letzten 32 Bits Erzeugungsidentifikationsinformationen 602 bilden. Die
Ressourcenkennung 600 wird nach der Erzeugung der Ressource
erzeugt und verwendet, um auf die Ressource zuzugreifen, bis die
Ressource freigegeben oder entfernt wurde.
-
Ein
in 17B dargestellter Ressourcenerzeugungszähler 603 wird
für jeden
der Prozesse nach seiner Erzeugung erzeugt und dient als ein Zähler zum
Aufzeichnen der Häufigkeit,
mit der die Ressource erzeugt wird. Der Zählwert 604 des Ressourcenerzeugungszählers 603 wird
auf den Anfangswert null gesetzt und bei jeder Erzeugung der Ressource um
eins inkrementiert.
-
In 17C dargestellte Erzeugungsidentifikationsinformationen 605 enthalten
die ersten 16 Bits, welche einen Zählwert 606 des Ressourcenerzeugungszählers darstellen,
wobei die letzten 16 Bits eine Prozesskennung 607 darstellen.
-
Nachstehend
wird die Ressource, welche die Erzeugungsidentifikationsinformationen 609 an
einer ersten Stelle oder Anfangsstelle enthält, als die Ressource 608 bezeichnet.
-
§2.
Kurzbeschreibung der Ressourcenzugriffsverarbeitung der Benutzeranwendung
-
18 ist
ein Flussdiagramm, das einen Programmablauf zum Ausführen der
durch das Verfahren gemäß der vorliegenden
Ausführungsform
der Erfindung ausgeführten
Ressourcenzugriffsverarbeitung zeigt, wie nachstehend schrittweise
beschrieben wird.
- (1) In Schritt 2200 gibt
eine Benutzeranwendung einen Systemaufruf, der eine Prozesserzeugungsverarbeitung
anfordert, an das Betriebssystem aus, das darauf durch Erzeugung
eines Ressourcenerzeugungszählers 603 für den erzeugten Prozess
antwortet.
- (2) In Schritt 2201 gibt die Benutzeranwendung an das
Betriebssystem einen Systemaufruf für die Ressourcenzuweisungsverarbeitung
aus.
- (3) In Schritt 2202 gibt die Benutzeranwendung an das
Betriebssystem einen Systemaufruf aus, der eine Zugriffsverarbeitung
auf die in Schritt 2201 zugewiesene Ressource anfordert.
- (4) In Schritt 2203 gibt die Benutzeranwendung an das
Betriebssystem einen Systemaufruf aus, der eine Zuweisungsaufhebungsverarbeitung
der in Schritt 2201 zugewiesenen Ressource anfordert.
-
Nachfolgend
wird die Verarbeitung für
jeden der vorstehend erwähnten
Systemaufrufe detailliert beschrieben.
-
§2.1.
Ressourcenzuweisungsverarbeitung
-
19 zeigt
ein Flussdiagramm zum Erläutern
des in 18 dargestellten Ressourcenzuweisungsverarbeitungsschritts 2201.
Der Ressourcenerzeugungszähler
wird um eins inkrementiert (Schritt 2300 in 19),
woraufhin die Erzeugungsidentifikationsinformations-Erzeugungs-
oder Erstellungsverarbeitung "make_idinf" ausgeführt wird
(Schritt 2301), der dann Schritt 2302 folgt, in
dem eine Ressourcenbereichszuweisungs-(oder Speicherbereichsreservierungs)-Verarbeitung "alloc_mem" ausgeführt wird,
woraufhin Schritt 2303 zum Erzeugen einer Kennung "make_id" ausgeführt wird.
Anschließend
werden die Erzeugungsidentifikationsinformationen an den ersten
32 Bits des zurückgegebenen Ressourcenbereichs
gespeichert (Schritt 2304).
-
§2.1.1.
Erzeugungsidentifikationsinformations-Erzeugungs-(make_idinf)-Verarbeitung
-
20 zeigt
ein Flussdiagramm zum Erläutern
der Erzeugungsidentifikationsinformations-Erzeugungsverarbeitung
in dem in 19 dargestellten Schritt 2301.
Nachfolgend wird diese Verarbeitung als "make_idinf"-Verarbeitung bezeichnet. Die Erzeugungsidentifikationsinformationen
werden durch ein Paar aus dem Ressourcenerzeugungs-Zählwert und
der Prozesskennung des für
die Ressourcenerzeugung vorgesehenen Prozesses erzeugt. Mit Bezug
auf 20 sei bemerkt, dass die Prozesskennung zuerst
erhalten wird (Schritt 2400), woraufhin der Ressourcenerzeugungs-Zählwert in die
ersten 16 Bits gegeben wird, während
eine erzeugte Zufallszahl in den letzten 16 Bits gespeichert wird,
um dadurch die 32-Bit-Erzeugungsidentifikationsinformationen
zu erzeugen (Schritt 2401). Es werden die erzeugten Erzeugungsidentifikationsinformationen
zurückgegeben
(Schritt 2402).
-
§2.1.2.
Ressourcenbereichsreservierungs-(Speicherzuweisungs)(alloc_mem)-Verarbeitung
-
21 zeigt
ein Flussdiagramm zum Erläutern
der Ressourcenreservierungs-(oder Zuweisungs)-Verarbeitung in dem
in 19 dargestellten Schritt 2302. Diese
Verarbeitung wird auch als "alloc_mem"-Verarbeitung bezeichnet.
Weil der Ressourcenbereich aus einem Erzeugungsidentifikationsinformationsbereich
und einem Ressourcenbereich besteht, wird die Ressourcenbereichsgröße, zu der
die Erzeugungsidentifikationsinformations-Datengröße von 32
Bits addiert ist, bestimmt (Schritt 2500), woraufhin der
Ressourcenbereich mit der bestimmten Größe zugewiesen wird (Schritt 2501).
Anschließend
wird die erste Adresse des Ressourcenbereichs (Speicherbereichs)
zurückgegeben
(Schritt 2502).
-
§2.1.3.
Kennungserzeugungs-(make_id)-Verarbeitung
-
22 zeigt
ein Flussdiagramm zum Erläutern
der Kennungserzeugungsverarbeitung in dem in 19 dargestellten
Schritt 2303. Nachstehend wird diese Verarbeitung auch
als "make_id"-Verarbeitung bezeichnet.
Die Kennung besteht aus einem Paar aus der Ressourcenadresse und
den Erzeugungsidentifikationsinformationen. Die Adresse der bei
der Ressourcenbereichszuweisungs- oder "alloc_mem"-Verarbeitung
(Schritt 2302) reservierten Ressource wird an den ersten
32 Bits angeordnet, während
die bei der Erzeugungsidentifikationsinformationserzeugungs-"make_id"-Verarbeitung (Schritt 2301)
erzeugten Erzeugungsidentifikationsinformationen an den letzten
32 Bits angeordnet werden, wodurch die Kennung mit 64 Bits erzeugt
wird (Schritt 2600). Die erzeugte Kennung wird als das
Argument zur Verwendung beim Vornehmen eines Zugriffs auf die Ressource
zurückgegeben
(Schritt 2601).
-
§2.2.
Ressourcenzugriffsverarbeitung
-
23 zeigt
ein Flussdiagramm zum Erläutern
einer Ressourcenzugriffsverarbeitung entsprechend Schritt 2202 in
-
18.
Mit Bezug auf 23 sei bemerkt, dass die ersten
32 Bits der als Argument des von der Benutzeranwendung ausgegebenen
Systemaufrufs empfangenen Kennung extrahiert werden, um dadurch
die Ressourcenadresse zu definieren, während die letzten 32 Bits zum
Definieren der Erzeugungsidentifikationsinformationen S1 extrahiert
werden (Schritt 2700). Anschließend werden die ersten 32 Bits
auf der Grundlage der Ressourcenadresse aus der Ressource ausgelesen,
um die Erzeugungsidentifikationsinformationen S2, d. h. die "read_mem"-Informationen zu
definieren (Schritt 2701), woraufhin die extrahierten Erzeugungsidentifikationsinformationen
S1 und S2 miteinander verglichen werden (Schritt 2702).
Wenn die Vergleichsergebnisse nicht übereinstimmen, wird der Zugriff
auf die Ressource nicht ausgeführt,
und es wird eine Fehlermeldung zurückgegeben (Schritt 2703).
Wenn die vorstehend erwähnten
Vergleichsergebnisse andererseits übereinstimmen, wird die Zugriffsverarbeitung
auf die Ressource ausgeführt
(Schritt 2704).
-
§2.3.
Ressourcenzuweisungsaufhebungsverarbeitung
-
24 ist
ein Flussdiagramm zum Erläutern einer
Ressourcenzuweisungsaufhebungsverarbeitung.
-
Ähnlich der
Ressourcenzugriffsverarbeitung (Schritt 2202 in 18)
werden bei der Ressourcenzuweisungsaufhebungsverarbeitung (Schritt 2203 in 18)
die ersten 32 Bits der als Argument des von der Benutzeranwendung
ausgegebenen Systemaufrufs empfangenen Kennung extrahiert, um die
Ressourcenadresse zu definieren, während die letzten 32 Bits extrahiert
werden, um die Erzeugungsidentifikationsinformationen S1 zu definieren
(Schritt 2800). Anschließend werden die ersten 32 Bits
aus der Ressource ausgelesen, um die Erzeugungsidentifikationsinformations-S2-"read_mem"-Verarbeitung zu definieren (Schritt 2801).
Dann werden die vorstehend erwähnten
Erzeugungsidentifikationsinformationen S1 und S2 miteinander verglichen
(Schritt 2802). Wenn die Vergleichsergebnisse nicht übereinstimmen,
wird die Ressourcenzuweisung nicht aufgehoben, und es wird eine
entsprechende Fehlermeldung zurückgegeben
(Schritt 2803). Wenn die vorstehend erwähnten Vergleichsergebnisse
andererseits übereinstimmen,
wird die Ressourcenzuweisungsaufhebungsverarbeitung ausgeführt (Schritt 2804).
-
Durch
die vorstehend beschriebenen Verfahren können die nachstehend erwähnten vorteilhaften Wirkungen
erhalten werden.
- (1) Wie anhand der Beschreibung
in Bezug auf die Ressourcenzugriffsverarbeitung (§2.2.) offensichtlich
ist, ist die Adresse zum Zugreifen auf die Ressource in der Kennung
enthalten, die das Argument des von der Benutzeranwendung an das Betriebssystem
ausgegebenen Systemaufrufs ist. Demgemäß ist es möglich, durch die Verwendung der
Kennung an Stelle der Hash-Funktion für die Übersetzung zwischen der Kennung
und der Adresse auf die Ressource zuzugreifen. Folglich kann der
Zusatzaufwand bei der Verwendung der Hash-Funktion verringert werden.
- (2) Es sei angenommen, dass ein Prozess A und ein Prozess B
eine Ressource gemeinsam verwenden und dass der Prozess A einen
Systemaufruf zum Aufheben der Zuweisung der Ressource X ausgegeben
hat. In diesem Fall sucht beim herkömmlichen System das Betriebssystem
die in den Ressourcenverwaltungsdaten enthaltenen Kennungen, indem
es den Zeigern, beginnend bei dem durch die Verwendung der Hash-Funktion abgeleiteten
Index, folgt, um dadurch die Adresse der Ressource, deren Zuweisung
aufzuheben ist, zu bestimmen. Ferner werden andere Prozesse gesucht,
die die Ressource X gemeinsam verwenden, um alle gefundenen Prozessverwaltungsdaten
freizugeben und eine Nachricht auszugeben, die angibt, dass die
Ressource X ungültig
ist. In der Zwischenzeit unterbindet oder verhindert das Betriebssystem
alle Zugriffe von den Benutzeranwendungen auf die gemeinsame Ressource.
-
Dagegen
kann gemäß den Verfahren
der Erfindung die Adresse der Ressource erhalten werden, um die
Ressource zu entsperren, ohne dass es notwendig wäre, den
Zeigern zu folgen, um die Adresse der Ressource zu erhalten, weil
die Adresse bereits in der Kennung der Ressource X enthalten ist,
deren Zuweisung aufzuheben ist. Zusätzlich ist anhand der vorhergehenden
Beschreibung in Bezug auf die Ressourcenzuweisungsaufhebungsverarbeitung (§2.3.) verständlich,
dass das Betriebssystem das Ressourcenzugriffsrecht auf der Grundlage
nur des Ergebnisses des Vergleichs zwischen den Erzeugungsidentifikationsinformationen
S1, die in der der Ressource X zugewiesenen Kennung enthalten sind,
und den Erzeugungsidentifikationsinformationen S2, die in den ersten
Bits der Ressource X enthalten sind, steuert oder verwaltet. Demgemäß besteht
die dem Betriebssystem auferlegte Aufgabe nur in der Aufhebung der
Zuweisung der Ressource X.
-
Auf
diese Weise kann die Dauer des Zustands, in dem der Zugriff auf
die Ressource verhindert ist und der zwischen den aufeinander folgenden Prozessabschlussverarbeitungen
auftritt, nur auf die Zeit verringert werden, die an der Aufhebung
der Zuweisung der Ressource X beteiligt ist.
- (3)
In Zusammenhang mit der vorstehend beschriebenen Ressourcenzuweisungsaufhebungsverarbeitung
wird wiederum angenommen, dass ein Prozess C eine Ressource Y erzeugt
und der erzeugten Ressource Y die Adresse zuweist, die der Ressource
X in dem Zustand zugewiesen wurde, in dem die Ressource X nicht
zugewiesen oder freigegeben ist. In diesem Zustand gibt das Betriebssystem
an den Prozess B keine Informationen und keine Nachricht aus, wodurch
angegeben wird, dass die Zuweisung der Ressource X aufgehoben wurde.
Folglich kann eine Situation auftreten, in der der Prozess B versucht,
auf der Grundlage der in der Kennung des Prozesses B enthaltenen
Adressinformationen auf die Ressource Y zuzugreifen. Weil die Kennung
jedoch nicht nur die Adressinformationen, sondern auch die Erzeugungsidentifikationsinformationen
enthält
und weil die Erzeugungsidentifikationsinformationen zwischen der
der Ressource X zugewiesenen Kennung und der der Ressource Y zugewiesenen
Kennung verschieden sind, kann der Prozess B, der versucht, auf
die Ressource Y mit seiner eigenen Kennung zuzugreifen, nicht auf
die Ressource Y zugreifen. Auf diese Weise kann ein illegaler Zugriff
sicher unterbunden oder verhindert werden.
-
§3.
Andere Ausführungsformen
-
Viele
Merkmale und Vorteile der vorliegenden Erfindung sind anhand der
detaillierten Beschreibung offensichtlich. Weil zahlreiche Modifikationen und
Kombinationen Fachleuten leicht einfallen werden, soll die Erfindung
nicht auf die erläuterte
und beschriebene Konstruktion und Arbeitsweise beschränkt sein.
Modifikationen der vorstehend beschriebenen Ausführungsformen werden nachstehend
erwähnt.
-
§3.1.
System, das einen Systemtakt verwendet
-
Beim
Hochfahren des Systems wird ein 32-Bit-Systemtakt erzeugt, um die
verstrichene Zeit auf einer 10-μs-Basis
festzuhalten.
-
Wenn
eine Ressource erzeugt wird, wird der Wert des Systemtakts als die
Erzeugungsidentifikationsinformationen abgerufen, die dann an einer
ersten Adresse der Ressource gespeichert werden. Eine Kennung mit
64 Bits wird erzeugt, welche aus 32 MSBs (höherwertigen Bits), die der
Adresse der Ressource entsprechen, und 32 LSBs (niederwertigen Bits),
die den Erzeugungsidentifikationsinformationen entsprechen, bestehen.
-
Um
auf die Ressource zuzugreifen, werden die Erzeugungsidentifikationsinformationen
aus der als Argument des Systemaufrufs von der Benutzeranwendung
zum Betriebssystem übertragenen
Kennung extrahiert, woraufhin die extrahierten Erzeugungsidentifikationsinformationen
mit den an der ersten oder Anfangsadresse der Ressource gespeicherten
Erzeugungsidentifikationsinformationen verglichen werden. Wenn diese
Vergleichsergebnisse übereinstimmen,
wird der Zugriff auf die Ressource ermöglicht, d. h. zugelassen. Wenn
der Vergleich dagegen eine Diskrepanz zeigt, wird der Zugriff auf die Ressource
verhindert oder unterbunden, wobei eine Fehlermeldung zurückgegeben
wird.
-
§3.2.
System, das einen Zähler
verwendet
-
Wenn
das System aktiviert wird, wird ein einziger 32-Bit-Zähler in dem System erzeugt,
um die Häufigkeit
zu zählen,
mit der Ressourcen erzeugt werden, und es wird ein Anfangswert "0" als Erzeugungsidentifikationsinformationen
in den Zähler
eingegeben.
-
Nach
der Erzeugung einer Ressource werden die vorstehend erwähnten Erzeugungsidentifikationsinformationen
um eins inkrementiert und an der Anfangsadresse oder ersten Adresse
der Ressource gespeichert. Anschließend wird eine 64-Bit-Kennung erzeugt,
die der Adresse der Ressource entsprechende höherwertige 32 Bits und den
Erzeugungsidentifikationsinformationen entsprechende niederwertige
32 Bits aufweist.
-
Zum
Zugriff auf die Ressource wird die Ressourcenzugriffsverarbeitung
unter Verwendung der vorstehend erwähnten Kennung ähnlich der
in Abschnitt §3.1.
beschriebenen Verarbeitung ausgeführt.
-
Ferner
ermöglichen
die vorstehend mit Bezug auf die 17A bis 23 beschriebenen
Ressourcenzugriffsverfahren das Strukturieren eines sicheren Systems,
das den ungültigen
Zugriff auf die gemeinsame Ressource unterbindet oder verhindert, indem
es das Zugriffsverfahren auf die in 7 dargestellten
Verarbeitungsschritte 1302 und 1306 anwendet.
Dieses Verfahren zum Zugriff auf eine gemeinsame Ressource wird
nachstehend beschrieben.
-
Für die Zuweisung
der gemeinsamen Ressource wird die in 19 dargestellte
Verarbeitung ausgeführt,
um die Zuweisung der gemeinsamen Ressource zu bewirken. Zu dieser
Zeit wird die der gemeinsamen Ressource zugewiesene Kennung festgehalten,
um die Gültigkeit
der gemeinsamen Ressource unter Verwendung dieser Kennung nach dem
Zugriff auf die gemeinsame Ressource zu prüfen.
-
Als
nächstes
wird ein Verfahren zum Zugriff auf eine gemeinsame Ressource beschrieben.
-
Wenn
die in 7 dargestellten Verarbeitungen 1302 und 1306 ausgeführt werden,
um die Verarbeitung zum Zugriff auf die gemeinsame Ressource auszuführen, wird
die in 23 dargestellte Verarbeitung
zum Setzen des Zugriffs auf die gemeinsame Ressource ausgeführt. Zuerst
werden, bevor auf die gemeinsame Ressource zugegriffen wird, die
in der Kennung gespeicherten Erzeugungsidentifikationsinformationen
(602 in 17A) mit den Erzeugungsidentifikationsinformationen
(609 in 17A) der gemeinsamen Ressource
verglichen (Schritt 2702 in 23).
-
Wenn
eine Übereinstimmung
zwischen beiden Erzeugungsidentifikationsinformationen festgestellt
wird, wird entschieden, dass die Kennung der gemeinsamen Ressource
gültig
ist, d. h. dass die in der Kennung enthaltene Ressourcenadresse
(601 in 17A) gültig ist. Dementsprechend wird
auf die gemeinsame Ressource unter Verwendung der Ressourcenadresse
zugegriffen, um die Verarbeitung für die gemeinsame Ressource
auszuführen.
-
Wenn
dagegen eine Diskrepanz zwischen den beiden vorstehend erwähnten Erzeugungsidentifikationsinformationen
gefunden wird, bedeutet dies, dass die Kennung der gemeinsamen Ressource
ungültig
ist. Insbesondere bedeutet dies, beispielsweise unter der Annahme,
dass eine Diskrepanz der Erzeugungsidentifikationsinformationen
in dem in 7 dargestellten Verarbeitungsschritt 1306 auftritt,
dass die Zuweisung der gemeinsamen Ressource aus irgendeinem Grund
während
des Präemptionsermöglichungsintervalls
zwischen der Aufhebung des Präemptionsverhinderungszustands
(Schritt 1303 in 7) anschließend an
den Abschluss der in 7 dargestellten Verarbeitung 1302 und
der nächsten
Präemptionsverhinderung
(Schritt 1305 in 7) aufgehoben
wird. Demgemäß ist die
in der Kennung enthaltene Adresse der Ressource (gemeinsamen Ressource)
ungültig.
Folglich wird der Zugriff auf die gemeinsame Ressource unterbunden und
eine Fehlerverarbeitung (Schritt 2703 in 23) ausgeführt. Bei
der Fehlerverarbeitung kann die Präemptionsverhinderung oder -unterbindung und/oder
die Abbruchverhinderung nach Bedarf gelöscht werden.
-
Infolge
des vorstehend beschriebenen Verarbeitungsverfahrens kann die außerhalb
des Präemptionsverhinderungsintervalls
ausgeführte Aufhebung
der Zuweisung der gemeinsamen Ressource erfasst werden. Abgesehen
davon kann der Zugriff auf die ungültige Ressource, der einhergehend
mit der vorstehend erwähnten
Aufhebung der Zuweisung der gemeinsamen Ressource auftreten kann,
verhindert werden, wodurch die Ressource vor einer Zerstörung geschützt wird.
Auf diese Weise ist es möglich,
ein System zu strukturieren, das in der Lage ist, die gemeinsame
Ressource selbst dann mit erhöhter
Sicherheit zu verarbeiten, wenn das Präemptionsermöglichungsintervall im Intervall
oder Abschnitt zur Verarbeitung der gemeinsamen Ressource festgelegt
ist.
-
Wie
nun anhand der vorstehenden Beschreibung verständlich sein wird, kann gemäß den hier dargelegten
Lehren der Erfindung der Zusatzaufwand bei der Übersetzung zwischen der Adresse
und der Kennung sowie bei der Suche zum Prüfen des Vorhandenseins/Nichtvorhandenseins
des Zugriffsrechts verringert werden, wobei die Zugriffsleistung entsprechend
erhöht
wird. Abgesehen davon kann das Intervall oder der Abschnitt, in
dem der Zugriff auf die Ressource nach Abschluss des Prozesses verhindert
ist, verkürzt
werden. Zusätzlich
kann die Ressource vor einer Zerstörung infolge eines unzulässigen Zugriffs
auf die Ressource von einem Prozess, der kein Zugriffsrecht auf
die Ressource hat, geschützt
werden.