-
Die
vorliegende Erfindung bezieht sich auf die Betriebsmittel-Ablaufsteuerung
in einem Computer.
-
Universelle
Betriebssysteme auf der Unternehmensebene, sowohl für Arbeitsplatzrechner
als auch für
Server, sind herkömmlich
für die
effiziente Verwendung der Betriebsmittel konstruiert. Die Anwendungen
nutzen einen gemeinsamen Satz der Betriebsmittel gemeinsam, die
anfangs entsprechend ihrer Priorität und dann in einer fair gewichteten
Weise geplant werden. Die Ergebnisse dieses Zugangs sind sowohl
eine effiziente als auch eine faire Verteilung der Betriebsmittel
auf die Anwendungen auf der Benutzerebene. Bestimmte Anwendungen
jedoch, insbesondere Multimedia-Verarbeitungsanwendungen, sind inhärent empfindlich
gegen die Verfügbarkeit
der Betriebsmittel. Im Ergebnis führt die Verwendung prioritätsgestützter Betriebsmittel-Verbandspolitiken
oft dazu, dass derartigen Anwendungen die Erfüllung ihrer Verarbeitungsziele
misslingt.
-
US 5.812.844 offenbart ein
Verfahren der CPU-Ablaufsteuerung unter Verwendung der Ablaufsteuerung,
bei der der früheste
Termin zuerst geplant wird, für
die Teilprozesse. Es gibt jedoch keine Idee der Betriebsmittelzulassung
in dieser Erfindung, wobei deshalb die Garantien nur nach bestem
Bemühen (Best
Effort) sind, wobei die Ablaufsteuerung nur auf einer einzelnen
Ebene, basierend auf Teilprozessen erfolgt. Die von der Prozesspriorität und/oder
Dringlichkeit abhängige
Ablaufsteuerung ist nicht enthalten. EP-A-O 789 638 offenbart einen
weiteren Zugang zur CPU-Ablaufsteuerung, in dem eine Anzahl von
Prozessen als eine Gruppe vorhanden ist. Die Gruppe wird dann wieder 'geplant', indem ihre Priorität vergrößert wird,
obwohl die Ablaufsteuerung nicht garantieren kann, dass ein Prozess
innerhalb einer Gruppe geplant wird.
-
Üblicherweise
ist für
den Prozess der Ablaufsteuerung in der Stufe, in der dem Prozess
der Zugriff auf ein Betriebsmittel gewährt wird, eine relativ komplexe
Verarbeitung erforderlich. Die vorliegende Erfindung ermöglicht eine
Verringerung der Komplexität der
Verarbeitung in der Stufe der Gewährung des Zugriffs, indem sie
für eine
Reservierung der Betriebsmittel im Voraus sorgt.
-
Gemäß der vorliegenden
Erfindung wird ein Verfahren für
das Management der Betriebsmittelverwendung in einem Computer geschaffen,
wie es im Anspruch 1 dargelegt ist. Das Verfahren umfasst die folgenden
Schritte: Ausführen
eines ersten Prozesses, um eine Reservierung für den Zugriff auf ein Betriebsmittel
in Abhängigkeit
von einer Betriebsmittelanforderungskommunikation von einem Anwendungsprozess
vorzunehmen; Ausführen
eines zweiten Prozesses, um Anforderungen für einen Zugriff auf das Betriebsmittel
von dem Anwendungsprozess in Abhängigkeit
von der Reservierung zu gewähren; Erzeugen
eines Ablaufsteuerungsmittels, das ein oder mehrere Verfahren besitzt,
um Reservierungsanforderungen für
mehrere verschiedene Betriebsmittel zu verarbeiten, und eine betriebsmittelspezifische
Reservierungsverarbeitung beginnt; Erzeugen eines Reservierungsmittels,
das ein oder mehrere Verfahren besitzt, um Reservierungen für den Zugriff auf
ein Betriebsmittel vorzunehmen; wobei der Anwendungsprozess ein
Verfahren des Ablaufsteuerungsmittels aufruft, wobei das Verfahren
eine erste Betriebsmittelzugriffsanforderungsdefinition als einen
Parameter verwendet; wobei das Verfahren des Ablaufsteuerungsmittels
ein Reservierungsverfahren des Reservierungsmittels aufruft, um
eine Reservierung für
den Anwendungsprozess vorzunehmen, wobei das Reservierungsverfahren
eine zweite Betriebsmittelzugriffsanforderungsdefinition als einen
Parame ter verwendet; Ausführen
eines betriebsmittelspezifischen Ablaufsteuerungsprozesses, um den
Zugriff auf ein Betriebsmittel in Abhängigkeit von der durch das
Reservierungsmittel vorgenommenen Reservierung zu gewähren; und
Verwenden des Betriebsmittels für
die Zwecke des Anwendungsprozesses. Die Reservierungsanforderung
kann durch eine Anwendung per se oder durch einen Unterprozess oder
eine Komponente von ihr ausgeführt
werden. Außerdem
kann der Zugriff auf irgendeinen Prozess einer Anwendung oder für eine spezielle
Untereinheit der Anwendung gewährt
werden, für
die die Reservierungsanforderung vorgenommen worden ist.
-
Das
Vornehmen von Reservierungen und das Gewähren von Zugriff auf Anwendungsebene unterstützt die
Ausführungsformen
der vorliegenden Erfindung, die vorgesehen ist, um mit Vermächtnis-Code
zu arbeiten. Wo jedoch alle Anwendungen für ein Betriebssystem geschrieben
sind, das ein Ablaufsteuerungsverfahren gemäß der vorliegenden Erfindung
verwendet, sind eine Reservierung und Zugriffsgewährung auf
Komponenten- oder Teilprozess-Ebene bevorzugt.
-
Vorzugsweise übersetzt
das Verfahren des Ablaufsteuerungsmittels die erste Betriebsmittelanforderungsdefinition
in eine zweite Betriebsmittelanforderungsdefinition. Der Vorteil
dessen ist, dass die Betriebsmittelanforderung durch einen Programmierer
in einer von der Hardware unabhängigen
Weise definiert werden kann, und dass das Ablaufsteuerungs-Objekt
für eine
spezielle Plattform diese vom Programmierer erzeugte Betriebsmittelanforderung in
einer potentiell nichtlinearen Weise auf der Grundlage der Eigenschaften
der speziellen Plattform übersetzen
kann.
-
Ein
Verfahren gemäß der vorliegenden
Erfindung kann auf die Zu weisung von CPU-Zeit, den Zugriff auf Massenspeichervorrichtungen,
z. B. Festplattenlaufwerke, optische Plattenlaufwerke und dergleichen,
und das Speichermanagement angewendet werden.
-
Vorzugsweise
umfasst in dem Fall des Zugriffs auf einen Massenspeicher der erste
Prozess des Zuweisen einer oder mehrerer "Lotterielos"-Nummern für diese Anwendung oder einen
Prozess von ihr in Abhängigkeit
von der zweiten Betriebsmittelzugriffsanforderungsdefinition und
das Speichern der Anforderung für
den Zugriff auf eine Massenspeichervorrichtung von den Anwendungsprozessen;
das Erzeugen einer im Wesentlichen zufälligen Lotterielosnummer; und,
falls der Lotterielosnummer kein Anwendungsprozess zugewiesen worden
ist, Weiterleiten der gespeicherten Anforderung zu einem Massenspeichervorrichtungs-Ansteuerungsprozess
für den
Zugriff von einem Anwendungsprozess, der anhand eines vorgegebenen
Prioritätensetzungskriteriums
ausgewählt
wird, und andernfalls Weiterleiten einer gespeicherten Anforderung
für den
Zugriff von einem Anwendungsprozess, dem die Lotterielosnummer zugewiesen
wurde, zu einem Massenspeichervorrichtungs-Treiberprozess.
-
Die
Mehrheit der Mehrprozessbetriebs-Betriebssysteme, einschließlich Windows
NT, Unix und Linux, verwenden einen als Round-Robin bekannten Ablaufsteuerungsalgorithmus.
Am Ende eines Zeitschlitzes oder wenn ein Teilprozess seine Zeitscheibe
aufgehoben hat, startet der Abwickler den ersten Teilprozess, der
in der Warteschlange mit der höchsten
Priorität
wartet (einige Warteschlangen sind leer). Es werden zusätzliche
Techniken verwendet, um das Verhungern zu verhindern, indem die
Priorität
lang wartender Teilprozesse dynamisch vergrößert wird.
-
Es
wird außerdem
ein Verfahren für
die Ablaufsteuerung des Zugriffs auf eine CPU geschaffen, das in
einem Verfahren für
das Management der Betriebsmittelverwendung in einem Computer gemäß der vorliegenden
Erfindung implementiert sein kann, wobei das Verfahren die folgenden
Schritte umfasst: Erzeugen eines eindimensionales Reservierungsanforderungsmusters;
Mischen des Reservierungsanforderungsmusters mit einem eindimensionalen CPU-Zugriffssteuerungsmuster,
das leere CPU-Zugriffszeitschlitze sowie reservierte CPU-Zugriffszeitschlitze
repräsentiert,
ohne das Reservierungsanforderungsmuster oder die reservierten CPU-Zeitgriffsschlitze
in dem Reservierungsanforderungsmuster wesentlich zu stören.
-
Das
Reservierungsanforderungsmuster kann kürzer als das CPU-Zugriffssteuerungsmuster sein,
wobei in diesem Fall das Reservierungsanforderungsmuster effektiv
durch die Wiederholung des Mischprozesses erweitert wird. Vorzugsweise
umfasst der Mischungsschritt das Verschieben eines nicht leeren
Zeitschlitzelements des Reservierungsanforderungsmusters oder des
CPU-Zugriffssteuerungsmusters in der Weise, dass die Muster gemischt
werden können,
ohne dass irgendeines der reservierten CPU-Zugriffszeitschlitz-Elemente
gelöscht
oder überschrieben
wird. Noch bevorzugter wird das verschobene, nicht leere Zeitschlitzelement um
einen Betrag verschoben, der in dem Zeitschlitzelement definiert
ist. In jedem Element können
sowohl Vorwärts-
als auch Rückwärts-Verschiebungen oder
Verschiebungsgrenzen enthalten sein.
-
Es
wird ein Verfahren für
das Gewähren
des Zugriffs auf eine CPU geschaffen, das in einem Verfahren für das Management
der Betriebsmittelverwendung in einem Computer gemäß der vorliegenden
Erfindung implementiert sein kann, wobei das Verfahren umfasst: Erzeugen
eines eindimensionalen CPU-Zugriffssteuerungsmusters, bei dem jedes Element
mit einer Menge der CPU-Zugriffszeit in Beziehung steht; und am
Ende eines Betrags der CPU-Zugriffszeit:
Gewähren eines
Zugriffs auf irgendeinen der anstehenden Prozesse, der eine Priorität hat, die
größer als
ein vorgegebener Pegel ist; und dann, falls das nächste Musterelement
leer ist, Gewähren
des Zugriffs auf einen anstehenden Prozess, der ein vorgegebenes
Prioritätensetzungskriterium
(z. B. Round-Robin-Kriterium) erfüllt, andernfalls Gewähren des
Zugriffs auf einen Prozess, der in dem Musterelement identifiziert
wird.
-
Vorzugsweise
wird nach einem Eintrag für den
Prozess in irgendeiner von mehreren Warteschlangen mit verschiedener
Priorität
gesucht, wobei der Zugriff in Bezug auf den Eintrag für den Prozess mit
der höchsten
Priorität
gewährt
wird. Alternativ wird der Zugriff auf den in dem Musterelement identifizierten
Prozess gewährt,
wenn keine belegte Prozesswarteschlange vorhanden ist, deren Priorität höher als
jene der Warteschlange ist, in der der Prozess vorhanden ist. Vorzugsweise
wird ein eindimensionales CPU-Zugriffssteuerungsmuster durch ein
Verfahren für
die Ablaufsteuerung des Zugriffs auf eine CPU gemäß der vorliegenden
Erfindung erzeugt.
-
Nun
werden Ausführungsformen
der vorliegenden Erfindung beispielhaft unter Bezugnahme auf die
beigefügte
Zeichnung beschrieben, worin:
-
1 ein
Blockschaltplan eines universellen Computers ist;
-
2 ein
Blockschaltplan der Software-Komponenten ist, die in einem Computer
verkörpert
sind, der die Betriebsmittel-Ablaufsteue rung gemäß der vorliegenden Erfindung
verwendet;
-
3 einen
Teil eines Verfahrens für
die Reservierung von CPU-Zeit gemäß der vorliegenden Erfindung
veranschaulicht;
-
4 ein
Ablaufplan ist, der den Betrieb der sekundären Ablaufsteuerung der CPU
nach 2 veranschaulicht; und
-
5 ein
Ablaufplan ist, der eine alternative Weise des Betriebs der CPU-Ablaufsteuerung
nach 2 veranschaulicht.
-
In 1 umfasst
ein universeller Computer eine CPU 1, einen RAM 2,
einen ROM 3, eine Videoschnittstellenkarte 4,
einen Festplattenlaufwerks-Controller 5, eine Tastaturschnittstelle 6 und eine
Mausschnittstelle 7, die alle durch einen kombinierten
Daten- und Adressenbus 8 miteinander verbunden sind. Ein
Videomonitor 9 ist mit dem Ausgang der Videoschnittstellenkarte 4 verbunden.
Ein Festplattenlaufwerk 10 ist mit dem Festplattenlaufwerks-Controller 5 verbunden.
Eine Tastatur 11 ist mit dem Eingang der Tastaturschnittstelle 6 verbunden, während eine
Maus 12 mit dem Eingang der Mausschnittstelle 7 verbunden
ist.
-
Der
universelle Computer arbeitet unter der Steuerung eines Mehrprozessbetriebs-Betriebssystems.
Das Betriebssystem kann ein bekanntes Betriebssystem, wie z. B.
Windows NT, Unix oder Linux, aber mit modifizierter Betriebsmittel-Ablaufsteuerung,
damit sie arbeitet, wie im Folgenden beschrieben wird, sein.
-
Um
die gemeinsame Benutzung der Betriebsmittel bereitzustellen, umfasst
in 2 das Betriebssystem eine Abwicklerkomponente 11, eine
primäre
Ablaufsteuerungs-Komponente 12, eine CPU-Reservierungskomponente 13,
eine Festplattenlaufwerks-Reservierungskomponente 14, eine Speicherreservierungskomponente 15,
eine sekundäre
CPU-Ablaufsteuerung 16, eine sekundäre Festplattenlaufwerks-Ablaufsteuerung 17 und
einen Speicherausgleichsmanager 19.
-
Die
Abwicklerkomponente 11 hält Warteschlangen von Teilprozessen
aufrecht, die die Bearbeitung durch die CPU 1 erwarten.
Ein Teilprozess kann einen Prioritätswert zwischen 0 und 31 besitzen,
wobei 31 die höchste
Priorität
ist, wobei die Abwicklerkomponente 11 für jede Priorität eine separate Warteschlange
aufrechterhält.
Folglich befinden sich alle Teilprozesse mit der Priorität 0 in einer
Warteschlange, befinden sich alle Teilprozesse mit der Priorität 1 in einer
weiteren Warteschlange usw. Innerhalb jeder Warteschlange werden
neue Teilprozesse zum Ende der Warteschlange hinzugefügt, die
nach einem FIFO-Prinzip arbeitet.
-
Die
sekundäre
CPU-Ablaufsteuerung 16 ist dafür verantwortlich, den Teilprozessen
in einer Weise, die im Folgenden ausführlicher beschrieben wird, Zugriff
auf die CPU 1 zu gewähren.
Die sekundäre Festplattenlaufwerks-Ablaufsteuerung 17 führt eine Lotterie
aus, um den Zugriff auf das Festplattenlaufwerk 10 zu bestimmen.
-
Die
primäre
Ablaufsteuerung 12 übersetzt die
abstrakten Betriebsmittelreservierungsanforderungen auf hoher Ebene,
die durch die oder zugunsten der Anwendungskomponenten 22 ausgeführt werden,
in eine Form, die für
die Verwendung durch die Reservierungskomponenten 13, 14, 15 geeignet ist.
Die Reservierungskomponenten 13, 14, 15 versuchen,
die angeforderten Betriebsmittel zu reservieren.
-
Eine
garantierte Dienstanwendung 21 für die Verwendung mit der vorliegenden
Ausführungsform setzt
sich aus mehreren Komponenten 22 zusammen, die eine Instanz
bilden, wie es notwendig ist. Jede Komponente 22 umfasst
wenigstens einen Teilprozess 23. Der Konstrukteur 24 jeder
Komponente 22 enthält
eine Prozedur, die die CPU-, Festplattenlaufwerks- und Speicherreservierungsverfahren
der primären
Ablaufsteuerung 12 aufruft. Die Komponente 22 gibt
ihr Niveau des Bedarfs an einem Betriebsmittel durch das Weiterleiten
der Prozess-ID der Anwendung (die für die Anwendung 21 eindeutig
ist) und einer Angabe der erforderlichen Menge des Betriebsmittels
als Parameter, wenn die Reservierungsverfahren aufgerufen werden,
und optional einer Dauer für
die Reservierung an. Alternativ kann die Anwendung 21 selbst
oder eine Management-Entität eine
Reservierung zugunsten der garantierten Dienstanwendung 21 vornehmen.
Eine Best-Effort-Dienstanwendung 25 setzt sich aus mehreren Komponenten 26 zusammen,
die eine Instanz bilden, wie es notwendig ist. Die Komponenten 26 der Best-Effort-Dienstanwendung
führen
keine Betriebsmittelreservierungen aus oder besitzen keine für sie vorgenommenen
Reservierungen.
-
Es
wird nun der Fall eine Anforderung für CPU-Zeit betrachtet, wobei,
wenn das CPU-Reservierungsverfahren der primären Ablaufsteuerung 12 durch
den Konstrukteur 24 einer Anwendungskomponente aufgerufen
wird, das CPU-Reservierungsverfahren einen Prozentsatz der Betriebsmittelzeit,
der als ein Reservierungsparameter empfangen wird, in eine Komponenten-"Signatur" abbildet. Die Komponentensignatur
umfasst eine eindimensionale Anordnung aus bis zu 256 Elementen,
wobei jedes Element ein Datensatz ist, der Felder für die Prozess-ID
der Anwendung für
die Komponente 22, eine Reservierungs-ID, die Vorwärtsflexibilität und die
Rückwärtsfle xibilität umfasst.
Anfangs sind die Felder der Elemente der Anordnung leer. Die Felder
der ausgewählten
Elemente der Anordnung werden dann unter Verwendung der Parameter
des durch die Komponente 22 ausgeführten Aufrufs gefüllt. Falls
z. B. der Wert des Prozentsatzes im Aufruf 10 % beträgt, wird jedes
zehnte Element der Anordnung gefüllt,
während
jedes fünfte
Element der Anordnung gefüllt
wird, wenn der Wert des Prozentsatzes 20 % beträgt. Diese Abbildung zielt im
Allgemeinen darauf, die am feinsten granulierte mögliche Reservierungssignatur zu
erreichen.
-
Sobald
die Komponentensignatur vervollständigt worden ist, wird auf
Anforderung durch die primäre
Ablaufsteuerung 12 eine Instanz der CPU-Reservierungskomponente 13 gebildet.
Wenn eine Instanz der CPU-Reservierungskomponente 13 gebildet
wird, leitet die primäre
Ablaufsteuerung 12 die Komponentensignatur, die Anwendungs-
und die Reservierungs-IDs und irgendeine Dauer über einen Verfahrensaufruf
zur CPU-Reservierungskomponente 13 weiter.
-
Die
CPU-Reservierungskomponente 13 versucht dann, die Komponentensignatur
in eine Kopie 31 einer Master-Signatur 32 zu mischen.
Die Komponentensignatur wird kopiert, um die vollen Längen der
Signaturanordnungen 31, 32 zu füllen, die
durch die CPU-Reservierungskomponente 13 und die sekundäre CPU-Ablaufsteuerung 16 verwendet
werden. Eine Reservierungssignatur von 25 % wird z. B. auf eine
1-in-4-Schlitz-Signatur abgebildet, die 64-mal wiederholt wird.
Falls sich irgendwelche Elemente der Komponentensignatur mit vorhandenen Reservierungen überschneiden
(siehe 3), versucht die CPU-Reservierungskomponente 13,
die sich überschneidenden
Elemente der Komponentensignatur entsprechend ihrer Werte der Vorwärts- und Rückwärtsflexibilität zu verlegen
und die sich über schneidenden
Elemente der Kopie 31 der Master-Signatur 32 entsprechend
ihrer Vorwärts-
und Rückwärtsflexibilitäten zu verlegen,
bis die Komponentensignatur in die Kopie 31 der Master-Signatur 32 passt.
Falls dies nicht erreicht werden kann, wird eine Ausnahme verursacht
und über
die primäre
Ablaufsteuerung 12 zurück
zur Komponente 22 übertragen. Falls
die Mischung erreicht wird, wird die Master-Signatur 32 entsprechend
der modifizierten Kopie 31 aktualisiert, wobei diese Informationen
zurück
zur primären
Ablaufsteuerung 12 übertragen
werden. Die primäre
Ablaufsteuerung 12 schickt dann die Reservierungs-ID zur
aufrufenden Komponente 22 zurück.
-
Die
CPU-Reservierungskomponente 13 erhält immer wenigstens eine vorgegebene
minimale Anzahl von Elementen der Master-Signatur 32 aufrecht,
die für
den Satz der Best-Effort-Anwendungen 25 frei sind. Jedes
Element der Master-Signatur 32 entspricht einer Zeitscheibe
für den
CPU-Zugriff, z. B. 20 ms. Die CPU-Reservierungskomponente 13 löscht automatisch
Reservierungen, die mit einem Parameter der Dauer angefordert worden
sind, der zeitlich abgelaufen ist.
-
Die
sekundäre
CPU-Ablaufsteuerung 16 verwendet die Master-Signatur 32 zyklisch,
um die CPU-Zeit den Komponenten 22 zuzuweisen. Die Verwendung
der zugewiesenen CPU-Zeit durch die Teilprozesse 32 innerhalb
einer Komponente 22 liegt in der Verantwortlichkeit des
Anwendungsprogrammierers.
-
Die
auf der Priorität
basierende Ablaufsteuerung wird verwendet, um die Teilprozesse 23 zu
planen, die Teilprozesse mit sehr hoher Priorität (über dem Prioritätsniveau 15)
sind, die für
die Integrität des
Systems wesentlich sind. Dies bedeutet, dass die Teilprozesse 23,
die zeitkritischen Aufgaben des Betriebssystems zugeordnet sind,
dem Prozess der Reservierung und der Zulassung nicht unterzogen werden,
wie oben beschrieben worden ist. Die Master-Signatur 32 wird
spezifisch für
die Prioritätsniveaus
0–15 verwendet.
Der Grund für
diesen Zugang ist, die Unterstützung
für Vermächtnis-Code
des Betriebssystems und Dienste, die für die Stabilität des Systems
wesentlich sind, möglich
zu machen.
-
Die
sekundäre
CPU-Ablaufsteuerung 16 verwendet den Standard-Round-Robin-Ablaufsteuerungsalgorithmus
für die
Teilprozesse mit einer Priorität,
die größer als
15 ist. Im Allgemeinen erfordern diese Teilprozesse keine vollständige Zeitscheibe, wobei
sie deshalb hinsichtlich der CPU-Zugriffszeit vernachlässigbar
sind.
-
In 4 führt die
sekundäre
CPU-Ablaufsteuerung 16 wiederholt den folgenden Prozess
aus. Die sekundäre
CPU-Ablaufsteuerung 16 bestimmt, ob im Abwickler 11 ein
neuer Teilprozess anstehend ist (Schritt s1). Falls ein neuer Teilprozess
anstehend ist, bestimmt die sekundäre CPU-Ablaufsteuerung 16,
ob gegenwärtig
ein Teilprozess ausgeführt
wird (Schritt s2). Falls gegenwärtig
ein Teilprozess ausgeführt
wird, bestimmt sie, ob der neue anstehende Prozess eine höhere Priorität als der
ablaufende Teilprozess besitzt (in diesem Kontext besitzt ein Teilprozess
eines garantierten Dienstes "Priorität" gegenüber einem
Teilprozess eines Best-Effort-Dienstes mit derselben Priorität) (Schritt
s3). Falls die Priorität
des neuen Teilprozesses höher
ist, reißt
die sekundäre CPU-Ablaufsteuerung 16 den
ablaufenden Teilprozess an sich, fertigt den neuen Teilprozess ab
und legt den an sich gerissenen Teilprozess an den Kopf der Warteschlange
seines Prioritätsniveaus
im Abwickler 11 (Schritt s4).
-
Falls
im Schritt s1 ein neuer Teilprozess nicht bereit ist oder im Schritt
s2 kein Teilprozess abläuft, bestimmt
die sekundäre
CPU-Ablaufsteuerung 16, ob
die aktuelle Zeitscheibe abgelaufen ist (Schritt s5). Wenn die aktuelle
Zeitscheibe nicht abgelaufen ist, dann kehrt der Prozess zum Schritt
s1 zurück,
andernfalls fertigt er den Teilprozess (Schritt s7) am Kopf der
Abwickler-Warteschlange für
die höchste Priorität, die größer als
15 ist, ab (Schritt s6).
-
Falls
im Schritt s6 keine Teilprozesse mit Prioritäten größer als 15 anstehend sind,
inspiziert die sekundäre
CPU-Ablaufsteuerung 16 das nächste Element der Master-Signatur
(Schritt s8). Falls das Element leer ist, fertigt die sekundäre CPU-Ablaufsteuerung 16 den
Teilprozess von der Spitze der Warteschlange mit der höchsten Priorität ab, die
nicht leer ist (Schritt s9). Falls das Element nicht leer ist, sucht
die sekundäre
CPU-Ablaufsteuerung 16 in der belegten Warteschlange mit
der höchsten
Priorität
im Abwickler 11 nach einem Teilprozess, der zu der Anwendung
gehört
und der durch das Element der Master-Signatur identifiziert wird
(Schritt s10). Wenn einer gefunden wird, dann wird er abgefertigt
(Schritt s11), andernfalls wird der Teilprozess von der Spitze der
Warteschlange abgefertigt (Schritt s12), wobei die sekundäre CPU-Ablaufsteuerung 16 versucht, die
Reservierung zu verlegen (Schritt s13). Diese dynamische Schlitzverschiebung
kann nur bis zum Betrag des nächsten
Schlitzes, der durch dieselbe garantierte Dienstanwendung 21 reserviert
ist, ausgeführt
werden. Die Reservierung wird in ihre richtige Position für den nächsten Zyklus
durch die Master-Signatur und falls die Master-Signatur durch die CPU-Reservierungskomponente 13 aktualisiert
wird zurückgeführt.
-
Es
sollte angegeben werden, dass die Best-Effort-Dienstanwendung 25 die
Möglichkeit
besitzt, dass ihre Teilprozesse 26 abgefertigt werden, wann
immer ein Teilprozess eines garantierten Dienstes in den Schritten
s8 und s10 nicht bedient werden kann.
-
Wenn
eine Komponente 22 der garantierten Dienstanwendung 21 zerstört wird,
kann ihr Zerstörer 27 ein
Reservierungsannullierungsverfahren der primären Ablaufsteuerung 12 aufrufen,
wobei er die Reservierungs-ID als einen Parameter weiterleitet.
Die primäre
Ablaufsteuerung 12 ruft dann ein Annullierungsverfahren
der CPU-Reservierungskomponente 13 auf,
das die Schlitzreservierungen der aufrufenden Komponente aus der
Kopie 31 der Master-Signatur 32 entfernt und dann
die Master-Signatur 32 aktualisiert.
-
Es
wird nun der Fall des Plattenzugriffs betrachtet, wobei ein IRP
(E/A-Anforderungspaket) eine eingekapselte Anforderung ist, die
die Verarbeitungsanforderungen definiert, einschließlich des
Typs der auszuführen
Operation (Lesen und Schreiben), der Anzahl der zu manipulieren
Bytes, der Synchronie der Anforderung usw.
-
Der
Konstrukteur 24 einer Komponente 22 enthält eine
Prozedur, um die garantierte Dienstanwendung 21 für den Plattenzugriff
zu registrieren. Dieser Prozess ruft ein Plattenzugriffs-Reservierungsverfahren
der primären
Ablaufsteuerung 12 mit einem Bedarfsniveau-Indikator, normalerweise
einem Prozentsatz, als einen Parameter auf. Die primäre Ablaufsteuerung 12 ruft
dann ein Plattenzugriffs-Reservierungsverfahren der Festplattenlaufwerks-Reservierungskomponente 14 mit
dem Bedarfsniveau-Indikator als einen Parameter auf. Dann weist
die Festplattenlaufwerks-Reservierungskomponente 14 eine
Anzahl von "Lotterielosen" der Anwendung 21,
die die Komponente 22 enthält, in Abhängigkeit vom Bedarfniveau-Indikator
zu. Die Anzahl der ausgegebenen Lotterielose kann vergrößert werden,
wie der Bedarfniveau-Indikator vergrößert wird. Die Komponente 22 kann
eine abstrakte Reservierung hinsichtlich einer Klassenkennung anfordern, die
die primäre
Ablaufsteuerung 12 verwenden kann, um auf eine ständige Nachschlagetabelle
Bezug zu nehmen, die den geeigneten Bedarfniveau-Indikator abbildet.
-
Wenn
ein Teilprozess 23, der zu einer garantierten Dienstanwendung 21 gehört, den
Plattenzugriff erfordert, sendet er ein IRP an einen E/A-Manager 20 des
Betriebssystems, das dann über
die Dateisystemkomponente 30 des Betriebssystems zur sekundären Festplatten-Ablaufsteuerung 17 weitergeleitet
wird. Die Dateisystemkomponente 30 des Betriebssystems
vergrößert die
Granularität
der Zugriffsanforderung, z. B. von einer Anforderung für einen
großen
Datenblock zu vielen kleinen Datenblöcken. Wenn das IRP die sekundäre Festplatten-Ablaufsteuerung 17 erreicht,
wird es entsprechend der Prozess-ID der garantierten Dienstanwendung
in eine Warteanordnung gesetzt. Die sekundäre Festplattenlaufwerks-Ablaufsteuerung 17 führt eine
Lotterie aus, indem sie zufällig "Los"-Nummern erzeugt. Falls
die gewinnende Anwendung ein IRP in der Warteanordnung besitzt,
wird der gewinnenden Anwendung 21 der Plattenzugriff gewährt, wobei
das längste
wartende IRP für
die gewinnende Anwendung zum physikalischen Plattenlaufwerks-Ansteuerungsprozess 32 weitergeleitet
wird. Wenn es keinen gewinnenden Losinhaber gibt oder der gewinnenden
Losinhaber kein IRP besitzt, das für die Bearbeitung bereit ist,
dann wird ein alternatives IRP über
ein einfaches zyklisches Auswahlschema geplant, das die IRPs von
der Best-Effort-Dienstanwendung 25 enthält.
-
Wenn
eine Komponente 22 der garantierten Dienstanwendung 21 zerstört wird,
bestimmt ihr Zerstörer 27,
ob sie die einzige Instanz einer Komponente 22 der Anwendung 21 ist.
Falls sie die letzte derartige Instanz ist, ruft er ein Verfahren
zur Annullierung des Plattenzugriffs der primären Ablaufsteuerung 12 auf,
die wiederum ein Annullierungsverfahren der Festplattenlaufwerks-Reservierungskomponente 14 aufruft.
Die Festplattenlaufwerks-Reservierungskomponente 14 hebt
dann die Zuweisung der der Anwendung 21 zugewiesenen Lose
auf.
-
Es
wird nun der Fall des Speicherzugriffs betrachtet, wobei jede Anwendung 21, 25 ihren
eigenen virtuellen Adressenraum aufrechterhält, der ein Satz von Speicheradressen
ist, die für
ihre Teilprozesse für
die Verwendung verfügbar
sind. Dieser Adressenraum ist viel größer als der RAM 2 des
Computers. Wenn eine Komponente 22, 26 auf den
virtuellen Speicher ihrer Anwendung Bezug nimmt, führt sie dies
mit einem Zeiger aus, der von einem Manager für den virtuellen Speicher verwendet
wird, um die Speicherstelle im RAM 2 zu bestimmen, auf
die die virtuelle Adresse abgebildet wird. Einige Teile des Speichers
können
jedoch tatsächlich
auf der Platte 10 oder in einem externen Speicher gespeichert
sein. Dies bedeutet, dass Daten oder Code, auf die bzw. den selten
zugegriffen wird, auf der Platte 10 gehalten werden, wobei
folglich der RAM 2 für
die bessere Verwendung zurückgehalten
wird. Um dieses Schema zu unterstützen, wird das Management des
Speichers in Blöcken
mit fester Größe ausgeführt, die
als "Seiten" bekannt sind, die
normalerweise 4 Kb oder 8 Kb groß sind. Wenn eine Komponente 22 auf
eine Adresse Bezug nimmt, deren Seite sich nicht im RAM 2 befindet,
dann tritt ein Seitenfehler auf. Dies löst einen Prozess aus, der als "Seitenwechsel" bekannt ist, dessen
Aufgabe es ist, die den Fehler verursachende Seite innerhalb der
Seitendatei zu lokalisieren und dann die Seite in den RAM 2 zu
laden. Wenn es nicht ausreichend Raum im RAM 2 gibt, dann muss
eine Seite zuerst ausgelagert und in die Seitendatei geschrieben
werden. Jeder Prozess erhält
jedoch normalerweise eine minimale Anzahl von Seiten aufrecht, die
im RAM 2 eingeschlossen sind, die als der "Arbeitssatz" bekannt sind.
-
Alle
modernen Betriebssysteme schützen den
Speicher im Allgemeinen in drei Formen: die physikalische Hardware
verweigert jedem Teilprozess das Zugreifen auf den virtuellen Adressenraum von
anderen Komponenten, zwischen den Betriebsarten wird eine Unterscheidung
getroffen, die Kernbetriebsart (Ring 0), die den Teilprozessen Zugriff
auf den Systemcode und die Daten erlaubt, und die Anwenderbetriebsart
(Ring 3), die dies nicht tut, und es gibt einen seitengestützten Schutzmechanismus,
in dem jede virtuelle Seite einen Satz von Merkern aufrechterhält, die
den erlaubten Zugriffstyp bestimmen. Diese Mechanismen zielen jedoch
darauf ab, die Speicherbetriebsmittel einer Komponente vor unerwünschter
Störung
durch andere unberechtigte Prozesse im System zu schützen. Sie
verhindern nicht, dass ein Prozess mehr als seinen angemessenen Anteil
des Speichers verbraucht.
-
Um
das Verständnis
des Zugangs der vorliegenden Erfindung zur Implementierung der Steuerung
der Größe des Arbeitssatzes
zu unterstützen, wird
das Managementschema des Arbeitssatzes in Windows NT kurz beschrieben.
Jeder Komponente werden, wenn sie erzeugt wird, zwei Schwellenwerte zugeordnet,
eine minimale Größe des Arbeitssatzes und
eine maximale Größe des Arbeitssatzes.
Das Minimum definiert die kleinste Anzahl von Seiten, für die der
Manager des virtuellen Speichers versucht, sie gleichzeitig im physikalischen
Speicher eingeschlossen zu halten, während das Maximum einen Expansionsbereich
definiert, der verwendet werden kann, falls die Komponente eine
beträchtliche
Anzahl von Seitenfehlern verursacht. Wenn der Arbeitssatz zu klein
ist, dann zieht sich die Komponente eine große Anzahl von Seitenwechseloperationen
zu, wobei sie sich folglich durch das kontinuierliche Auslagern
von Seiten in den und aus dem externen Speicher einen beträchtlichen
Organisationsaufwand zuzieht. Falls alternativ der Arbeitssatz zu
groß ist,
treten wenige Seitenfehler auf, aber der physikalische Speicher kann
Code und/oder Daten halten, auf die selten Bezug genommen wird,
wobei folglich der Gesamtwirkungsgrad verringert ist. In Windows
NT stellt der Speichermanager (MM) die Arbeitssätze einmal in jeder Sekunde,
in Reaktion auf Seiten-Einlese-Operationen oder wenn der freie Speicher
unter einen gegebenen Schwellenwert fällt ein. Falls freier Speicher im Überfluss
vorhanden ist, entfernt der MM Seiten, auf die selten Bezug genommen
wird, nur aus den Arbeitssätzen
der Komponenten, deren aktuelle Größe über einem gegebenen Minimum
liegt, dies ist als aggressives Beschneiden bekannt. Falls jedoch
freier Speicher knapp ist, kann der MM das Beschneiden von Seiten
von jeder Komponente erzwingen, bis er eine angemessene Anzahl von
Seiten erzeugt, sogar jenseits des minimalen Schwellenwertes. Selbstverständlich werden
Komponenten, die ausgedehnte Arbeitssätze besitzen, gegenüber denjenigen
bevorzugt beschnitten, die die minimale Größe des Arbeitssatzes besitzen.
-
In
der vorliegenden Ausführungsform
enthält der
Konstrukteur 24 einer Komponente 22 eine Prozedur,
um einen Arbeitssatz zu reservieren. Diese Prozedur ruft ein Speicherreservierungsverfahren der
primären
Ablaufsteuerung 12 auf, die wiederum ein Verfahren der
Speicherreservierungskomponente 15 aufruft. Die Speicherreservierungskomponente 15 übersetzt
diese Anforderung in die geeignete Expansion einer vorgegebenen
minimalen Größe des Arbeitssatzes.
Die minimale Größe des Arbeitssatzes regelt
die Anzahl der Seiten, die eine Anwendung 21 gleichzeitig
in den RAM 2 einschließen
(oder anheften) kann. Folglich führt
eine Komponente 22, die wünscht, einen Teil des Speichers
zu reservieren, die Reservierungsanforderung über die primäre Ablaufsteuerung 12 zur
Speicherreservierungskomponente 15 aus, die dann die Schwellenwerte
des Arbeitssatzes dementsprechend vergrößert. Diese Einstellung wird
durch die Aufrufe des Betriebssystems unterstützt. Es ist dann die Verantwortlichkeit
der Komponente, die Seiten in den RAM 2 anzuheften, wie
es erforderlich ist. Der Prozess des Anheftens wird auf der Grundlage
des wer zuerst kommt, mahlt zuerst, arbitriert. Falls nicht ausreichend
physikalische Seiten verfügbar
sind, weist das Betriebssystem die Anforderung für das Anheften zurück, wobei
deshalb erwartet wird, dass die Komponente 22 ihre reservierten
Seiten unverzüglich
nach der Zuweisung anheftet.
-
Wenn
es nicht ausreichend freie physikalische Speicherbetriebsmittel
gibt, dann versucht die Speicherreservierungskomponente 15,
die Prozesse der Best-Effort-Dienstanwendungen 25 zu zwingen, die
Seiten zurück
in den Dateispeicher zu schreiben, bis ausreichend freie physikalische
Seiten verfügbar sind.
Wenn nicht ausreichend Raum geschaffen werden kann, dann wird die
Reservierung zurückgewiesen.
Wie bei den anderen Betriebsmittelmodulen ist ein Teil des RAM 2 für einen
minimalen Best-Effort-Dienst reserviert. Dies wird durch das Aufrechterhalten
einer Zählung
der Gesamtzahl der physikalischen Seiten, die unter dem garantierten
Dienst verwendet werden, und das Überprüfen dieser gegen einen Teil
der physikalischen Gesamtseitenkapazität unterstützt. Es sollte außerdem angegeben
werden, dass durch die potentielle Expansion des Arbeitssat zes außer dem
Best-Effort-Dienst der 'Best-Effort'-Dienst streng ein
minimaler garantierter Dienst ist (definiert durch das System, dem
eine minimale Größe des Arbeitssatzes
zugeordnet ist). Es wird angenommen, dass die Prozesse die primäre Ablaufsteuerung 12 nicht
umgehen können
und die Größe ihres
eigenen Arbeitssatzes direkt ändern.
Schließlich
werden spezielle Überlegungen
für die
Seiten angestellt, die für
die Zwecke des gemeinsam benutzten Speichers verwendet werden. Wenn
irgendein Client einer gemeinsam benutzten Seite eine Reservierung
ertragen hat, dann ist die Seite als reserviert klassifiziert, selbst
wenn andere Clients keine Reservierung vorgenommen haben können.
-
Eine
zweite Ausführungsform
ist dieselbe wie die oben beschriebene erste Ausführungsform, mit
Ausnahme der Art des Betriebs der sekundären CPU-Ablaufsteuerung 16.
Der Betrieb der CPU-Ablaufsteuerung der zweiten Ausführungsform
wird nun beschrieben.
-
In
den 2 und 4 führt die sekundäre CPU-Ablaufsteuerung 16 wiederholt
den folgenden Prozess aus. Die sekundäre CPU-Ablaufsteuerung 16 bestimmt,
ob im Abwickler 11 ein neuer Teilprozess anstehend ist
(Schritt s101). Falls ein neuer Teilprozess anstehend ist, bestimmt
die sekundäre CPU-Ablaufsteuerung 16,
ob gegenwärtig
ein Teilprozess ausgeführt
wird (Schritt s102). Falls gegenwärtig ein Teilprozess ausgeführt wird,
bestimmt sie, ob der neue anstehende Teilprozess eine höhere Priorität als der
ablaufende Teilprozess besitzt (in diesem Kontext besitzt ein Teilprozess
eines garantierten Dienstes "Priorität" gegenüber einem
Teilprozess eines Best-Effort-Dienstes
mit derselben Priorität) (Schritt
s103). Falls die Priorität
des neuen Teilprozesses höher
ist, reißt
die sekundäre
CPU-Ablaufsteuerung 16 den ablaufenden Teilprozess an sich, fertigt
den neuen Teilprozess ab und legt den an sich gerissenen Teilprozess
an den Kopf der Warteschlange seines Prioritätsniveaus im Abwickler 11 (Schritt
s104).
-
Falls
im Schritt s101 ein neuer Teilprozess nicht bereit ist oder im Schritt
s102 kein Teilprozess ausgeführt
wird, bestimmt die sekundäre
CPU-Ablaufsteuerung 16, ob die aktuelle Zeitscheibe abgelaufen
ist (Schritt s105). Wenn die aktuelle Zeitscheibe nicht abgelaufen
ist, dann kehrt der Prozess zum Schritt s101 zurück, andernfalls fertigt er
den Teilprozess (Schritt s107) am Kopf der Abwickler-Warteschlange
für die
höchste
Priorität,
die größer als
15 ist, ab (Schritt s106).
-
Falls
im Schritt s106 keine Teilprozesse mit Prioritäten größer als 15 anstehend sind,
inspiziert die sekundäre
CPU-Ablaufsteuerung 16 das nächste Element der Master-Signatur
(Schritt s108). Falls das Element leer ist, fertigt die sekundäre CPU-Ablaufsteuerung 16 den
Teilprozess von der Spitze der Warteschlange mit der höchsten Priorität ab, die
nicht leer ist (Schritt s109). Falls das Element nicht leer ist, sucht
die sekundäre
CPU-Ablaufsteuerung 16 in einer Warteschlange im Abwickler 11 nach
einem Teilprozess, der zu der Anwendung gehört und der durch das Element
der Master-Signatur identifiziert wird (Schritt s110), wobei sie
von der Warteschlange mit der Priorität 15 zur Warteschlange
mit der niedrigsten Priorität
hin und vom Kopf jeder Warteschlange bis zu ihrem Ende sucht. Wenn
einer gefunden wird, dann wird er abgefertigt (Schritt s111), andernfalls
wird der Teilprozess von der Spitze der belegten Warteschlange mit
der höchsten
Priorität
abgefertigt (Schritt s112), wobei die sekundäre CPU-Ablaufsteuerung 16 versucht,
die Reservierung zu verlegen (Schritt s113). Diese dynamische Schlitzverschiebung
kann nur bis zu dem Betrag des nächsten
Schlitzes, der durch dieselbe garantierte Dienstanwendung 21 reserviert
ist, ausgeführt
werden. Die Reservierung wird in ihre richtige Position für den nächsten Zyklus durch
die Master-Signatur und falls die Master-Signatur durch die CPU-Reservierungskomponente 13 aktualisiert
wird zurückgeführt.
-
Es
sollte angegeben werden, dass die Best-Effort-Dienstanwendung 25 die
Möglichkeit
besitzt, dass ihre Teilprozesse 96 abgefertigt werden, wann
immer ein Teilprozess eines garantierten Dienstes in den Schritten
s108 und s110 nicht bedient werden kann.
-
Die
vorliegende Erfindung ist unter Bezugnahme auf Anwendungen beschrieben
worden, die Komponenten umfassen, die wiederum einen oder mehrere
Teilprozesse umfassen. Es ist klar, dass die vorliegende Erfindung
nicht auf diese Situation eingeschränkt ist und in einem System
implementiert sein kann, in dem die Anwendungsprogramme nicht unter
Verwendung objektorientierter Sprachen aufgebaut sind.
-
Während die
vorliegende Erfindung unter Bezugnahme auf den Zugriff auf eine
CPU, eine Festplatte und einen Speicher beschrieben worden ist,
ist klar, dass sie auf die Ablaufsteuerung des Zugriffs auf andere
Betriebsmittel angewendet werden kann.
-
Es
ist klar, dass der Begriff "Lotterielos" bildlich verwendet
wird.