-
TECHNISCHES GEBIET
-
Ausführungsformen der vorliegenden Erfindung betreffen im Allgemeinen Computersysteme und insbesondere die Betriebsverwaltung und/oder Steuerung von Operationen virtueller Maschinen innerhalb von Computersystemen.
-
STAND DER TECHNIK
-
Ein Virtuelles-Maschinen-System gestattet ein derartiges Unterteilen einer gegenständlichen Maschine, daß die zugrundeliegende Hardware der Maschine als eine oder mehrere unabhängig arbeitende Virtuelle Maschinen (VMs) erscheint. Ein Virtueller-Maschinen-Monitor (VMM) läuft auf einem Computer und präsentiert anderer Software eine Abstraktion einer oder mehrerer VMs. Jede VM kann als eine sich selbst enthaltende Plattform fungieren, welche ihr eigenes Betriebssystem (OS) und/oder ihre eigene Anwendungs-Software ablaufen läßt. Software, die innerhalb einer VM ausgeführt wird, wird als Gast-Software bezeichnet. Es wird auf Hall, J. S. Virtualizing the VAX architecture. In: Proceedings of the 28th International Symposium on Computer Architecture, 1991, pp 380–389 hingewiesen.
-
Die Gast-Software erwartet, daß so arbeiten zu könnnen, als wenn sie auf einem dedizierten Computer durchgeführt würde, statt auf einer VM. Das bedeutet, daß die Gast-Software erwartet, daß sie verschiedene Ereignisse steuert und Zugriff auf Hardware-Ressourcen des Computers (z. B. der gegenständlichen Maschine) besitzt. Die Hardware-Ressourcen der gegenständlichen Maschine können einen oder mehrere Prozessoren, auf dem (den) Prozessor(en) befindliche Betriebsmittel (z. B. Steuerungsregister, Cache-Speicher und anderes), Speicher (und Strukturen, welche sich im Speicher befinden, z. B. Deskriptor-Tabellen) und andere Betriebsmittel (z. B. Eingabe-Ausgabe-Vorrichtungen) umfassen, die sich in der gegenständlichen Maschine befinden. Die Ereignisse können Unterbrechungen, Ausnahmebehandlungen, Plattformereignisse (z. B. Initialisierungs-(INIT) oder Systemverwaltungsunterbrechungen (SMIs)) und dergleichen umfassen.
-
Der VMM kann einen Gast-Software-Zustand bedarfsweise in dem (den) Prozessor(en), den Vorrichtungen, dem Speicher und den Registern der gegenständlichen Maschine hin- und hertauschen. Der (die) Prozessor(en) kann (können) einen beliebigen Zustand während Übergängen zwischen einer VM und dem VMM hin- und hertauschen. Der VMM kann das Leistungsvermögen einer VM in manchen Situationen durch Gestatten eines unmittelbaren Zugriffs auf die zugrundeliegende gegenständliche Maschine verbessern. Dies kann insbesondere angebracht sein, wenn eine Operation im nicht privilegierten Modus in der Gast-Software durchgeführt wird, der den Zugriff auf die gegenständliche Maschine einschränkt, oder wenn Operationen keine Hardware-Ressourcen in der gegenständlichen Maschine verwenden, für die der VMM die Steuerung behalten möchte. Der VMM wird als der Host der VMs betrachtet.
-
Der VMM gewinnt die Steuerung zurück, wann immer eine Gast-Operation die korrekte Ausführung des VMM oder einer der nicht ausgeführten VM beeinträchtigen kann. Gewöhnlich untersucht der VMM derartige Operationen, wobei er bestimmt, ob ein Problem existiert, bevor er gestattet, daß die Operation mit der zugrundeliegenden gegenständlichen Maschine fortgesetzt oder die Operation im Namen eines Gasts emuliert wird. Beispielsweise kann der VMM ein Zurückgewinnen der Steuerung benötigen, wenn der Gast auf E/A-Vorrichtungen zugreift, wenn er versucht die Maschinenkonfiguration zu verändern (z. B. durch Verändern von Steuerungsregisterwerten), wenn er versucht auf bestimmte Speicherbereiche zuzugreifen und dergleichen.
-
Existierende gegenständliche Maschinen, die eine Operation einer VM unterstützen, steuern die Ausführungsumgebung einer VM unter Verwendung einer Struktur, die hier als eine Virtuelle-Maschinen-Steuerungsstruktur (VMCS) bezeichnet wird. Die VMCS wird in einem Speicherbereich gespeichert und enthält beispielsweise den Zustand des Gastes, den Zustand des VMM und Steuerungsinformationen, die bezeichnen, unter welchen Bedingungen der VMM während einer Ausführung des Gastes die Steuerung zurückgewinnen möchte. Der eine oder die mehreren Prozessoren in der gegenständlichen Maschine lesen Informationen aus der VMCS aus, um die Ausführungsumgebung der VM und des VMM zu bestimmen und um das entsprechende Verhalten der Gast-Software zu erzwingen.
-
Der (die) Prozessor(en) der gegenständlichen Maschine lädt (laden) und speichert (speichern) den Maschinenzustand, wenn ein Übergang in (d. h. Eintritt) oder aus (d. h. Austritt) einer VM auftritt. Herkömmliche Architekturen führen aus, daß ein vorbestimmter Zustandssatz, wie in den Prozessor-Spezifikationen definiert, in einer ähnlichen Weise wie andere Systemstrukturen, Befehlscodierungen und Maschinenverhaltensweisen geladen und gespeichert wird. Der VMM ist unmittelbar nach diesen Spezifikationen codiert. Diese Strukturierung schränkt die Flexibilität der Implementierung des VMM ein.
-
Deshalb gibt es einen Bedarf an verbesserten Implementierungen von Verfahren zum Eintritt in und zum Austritt aus VMs. Diese Implementierungen und Verfahren sollten eine bessere Verwaltung und Steuerung der Operationen von VM gestatten.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 ist ein Diagramm einer VM-Architektur gemäß einer Ausführungsform der Erfindung.
-
2A ist ein Ablaufdiagramm eines Verfahrens zum Verwalten einer VM-Übergangsoperation gemäß einer Ausführungsform der Erfindung.
-
2B ist ein Ablaufdiagramm eines Verfahrens zum Laden eines Maschinenzustands während einer VM-Übergangsoperation gemäß einer Ausführungsform der Erfindung.
-
2C ist ein Ablaufdiagramm eines Verfahrens zum Speichern eines Maschinenzustands während einer VM-Übergangsoperation gemäß einer Ausführungsform der Erfindung.
-
3 ist ein Ablaufdiagramm eines Verfahrens zum Durchführen von Ladeoperationen während eines VM-Übergangs gemäß einer Ausführungsform der Erfindung.
-
4 ist ein Ablaufdiagramm eines Verfahrens zum Durchführen von Speicheroperationen während eines VM-Übergangs gemäß einer Ausführungsform der Erfindung.
-
5 ist ein Ablaufdiagramm eines Verfahrens zum Bestimmen eines Werts eines Zustandsaktionsindikators während einer VM-Übergangsoperation gemäß einer Ausführungsform der Erfindung.
-
BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
-
Es werden neue Verfahren, Vorrichtungen und Systeme zum Verwalten von Übergängen während einer Operation einer VM beschrieben. In der folgenden ausführlichen Beschreibung der Ausführungsformen wird auf die beiliegenden Zeichnungen Bezug genommen, die ein Teil der Beschreibung bilden und bei denen auf dem Wege der Darstellung insbesondere spezifische Ausführungsformen der Erfindung gezeigt werden, die in die Praxis umgesetzt werden können. Diese Ausführungsformen werden ausreichend ausführlich beschrieben, um Durchschnittfachleuten zu ermöglichen sie zu verstehen und zu implementieren, es versteht sich, daß andere Ausführungsformen eingesetzt werden können und daß bauliche, logische und elektrische Veränderungen vorgenommen werden können, ohne den Gedanken und den Schutzumfang der vorliegenden Offenbarung zu verlassen. Die folgende ausführliche Beschreibung ist deshalb nicht in einem einschränkenden Sinn zu verstehen, und der Schutzumfang der Ausführungsformen der hier offenbarten Erfindungen wird nur von den angefügten Ansprüchen definiert.
-
1 illustriert eine Ausführungsform einer Virtuellen-Maschinen-Umgebung 100, in der die vorliegende Erfindung arbeiten kann. Bei dieser Ausführungsform umfaßt eine gegenständliche Maschine 110 eine Rechnerplattform, welche beispielsweise in der Lage sein kann, ein Standard-Betriebssystem (OS) oder einen Virtuellen-Maschinen-Monitor (VMM), wie beispielsweise einen VMM 125, auszuführen. Der VMM 125 kann, obwohl er typischerweise in Software implementiert wird, eine Maschinenschnittstelle für eine Software höherer Ebene emulieren und exportieren. Eine derartige Software höherer Ebene kann ein Standard- oder Echtzeit-OS umfassen, kann eine hochgradig abgespeckte Betriebsumgebung mit begrenzter OS-Funktionalität sein, und braucht keine herkömmlichen OS-Einrichtungen und dergleichen umfassen. Ersatzweise kann der VMM 125 beispielsweise innerhalb oder auf einem anderen VMM aufgesetzt laufen. Der VMM 125 kann beispielsweise als Hardware, Software und Firmware oder durch eine Kombination verschiedener Verfahren implementiert werden. VMMs und ihre typischen Merkmale und Funktionalität sind Durchschnittsfachleuten wohlbekannt.
-
Die gegenständliche Maschine 110 kann ein Personal-Computer (PC), ein Mainframe-Computer, ein tragbares Gerät, ein tragbarer Computer, eine Set-Top-Box, ein intelligentes Gerät oder ein beliebiges anderes Rechnersystem oder -Vorrichtung sein. Die gegenständliche Maschine 110 umfaßt einen Prozessor 112 und einen Speicher 120. Zusätzlich kann die gegenständliche Maschine 110 verschiedene andere nicht gezeigte Eingabe/Ausgabe-Vorrichtungen umfassen.
-
Der Prozessor 112 kann ein beliebiger Prozessortyp sein, der in der Lage ist, Software auszuführen, wie beispielsweise ein Mikroprozessor, ein digitaler Signalprozessor, ein Mikrosteuergerät oder dergleichen. Der Prozessor 112 kann Mikrocode, Makrocode, Software, programmierbare Logik oder hart codierte Logik zum Durchführen der Ausführung von Ausführungsformen für Verfahren der vorliegenden Erfindung umfassen. Obwohl in 1 nur ein derartiger Prozessor 112 gezeigt wird, versteht es sich, daß ein oder mehrere Prozessoren in einem System vorhanden sein können.
-
Der Speicher 120 kann eine Festplatte, eine Diskette, ein Schreib-/Lesespeicher (RAM), ein Nur-Lese-Speicher (ROM), ein Flash-Speicher, ein beliebiges anderes Maschinenmedium, die durch Prozessor 112 lesbar ist, oder eine Kombination der oben stehenden Vorrichtungen sein. Der Speicher 120 kann Befehle und/oder Daten zum Durchführen der Ausführung der Verfahrensausführungsformen der vorliegenden Erfindung speichern.
-
Der VMM 125 präsentiert anderer Software (d. h. der ”Gast-”Software) die Abstraktion einer oder mehrerer virtuellen Maschinen (VMs), die den verschiedenen Gästen die gleichen oder unterschiedliche Abstraktionen bereitstellen kann. 1 zeigt drei VM 132, 142 und 152. Die Gast-Software, die auf jeder VM abläuft, kann ein Gast-OS, wie beispielsweise ein Gast-OS 134, 144 oder 154, und verschiedene Gast-Software-Anwendungen 136, 146 und 156 umfassen. Jedes der Gast-OS 134, 144 und 154 erwartet, daß es innerhalb der VMs 132, 142 und 152, auf denen die Gast-OS 134, 144 oder 154 laufen, auf gegenständliche Betriebsmittel (z. B. Register des Prozessors 112, Speicher 120 und E/A-Vorrichtungen) zugreift und verschiedene Ereignisse, einschließlich Unterbrechungen, welche von Systemvorrichtungen während des Betriebs der VMs 132, 142 und 152 erzeugt wurden, behandelt.
-
Der Prozessor 112 steuert den Betrieb der VMs 132, 142 und 152 gemäß Daten, die in der VMCS 122 gespeichert sind. Die VMCS 122 kann im Speicher 120 (wie in 1 gezeigt), innerhalb des Prozessors 112, in einem beliebigen anderen Ort oder in jeder Kombination von Speicherorten gespeichert sein. Die VMCS 122 stellt eine Speicherung für den Maschinenzustand des VMM 125 und der Gast-Software bereit. Zusätzlich kann sie Indikatoren umfassen, um den Betrieb einer VM einzuschränken oder auf andere Weise zu steuern und um Übergänge zwischen einer VM und dem VMM 125 zu steuern. Die VMCS 122 ist durch den VMM 125 zugänglich. Die VMCS muß kein zusammenhängender Speicherbereich oder Speicherungsbereich sein. Deshalb kann die VCMS bei manchen Ausführungsformen logisch aus mehreren Speichern oder Speicherungsorten zusammengesetzt und es kann darauf zugegriffen werden.
-
Ein Übergang von dem VMM 125 an die Gast-Software wird ”VM-Eintritt” genannt. Ein Übergang aus einer Gast-Software zu dem VMM 120 wird ”VM-Austritt” genannt. Zusammen werden VM-Eintritte und VM-Austritte als ”VM-Übergänge” bezeichnet. Bei einer Ausführungsform kann ein VMM 125 einen VM-Eintritt durch Ausführen eines bestimmten Befehls zu initiieren, um den VM-Eintritt zu bewirken. Bei einer Ausführungsform können VM-Austritte explizit von der VM verlangt werden (z. B. durch Ausführen eines speziellen Befehls zum Bewirken des VM-Austritts). Bei manchen Ausführungsformen verlangt die VM einen Übergang nicht unmittelbar, sondern statt dessen erfordert irgendein Ereignis (z. B. eine Schutzverletzung, eine Unterbrechung und dergleichen) oder ein Befehl, welcher von einer VM ausgeführt wird, einen VM-Austritt, wie es durch Steuerungen in der VMCS 122 oder durch die Architektur des Virtuellen-Maschinen-Systems bestimmt wird (z. B. wenn ein bestimmtes Steuer-Bit in der VMCS gesetzt ist, dann bewirken Ausführungen des INVLPG-Befehls VM-Austritte; jedes Auftreten einer nicht maskierbaren Unterbrechung bewirkt einen VM-Austritt).
-
Während VM-Übergängen kann der Prozessor 112 aufgrund verschiedener Elemente des Maschinenzustands handeln. Wie Durchschnittsfachleute erkennen, können einem Maschinenzustand verschiedene architektonische Komponenten beispielsweise in dem (den) Prozessor(en), den E/A-Vorrichtungen, dem Chipsatz usw. zugeordnet sein. Dementsprechend verwenden Beschreibungen verschiedener Ausführungsformen der vorliegenden Erfindung den Ausdruck ”Maschinenzustand” im Rahmen seiner herkömmlichen Bedeutung, welche um einige Komponenten erweitert wurde, welche traditionell nicht als architektonisch angesehen werden. Folglich kann ein Maschinenzustand Universal- und Fließkommaregister (z. B. in der Befehlssatzarchitektur (ISA) des Pentium IV von Intel, welcher als IA-32 ISA, EAX, EDX, ST3 und dergleichen bezeichnet wird), Steuerregister (z. B. im IA-32 ISA, CR0, CR3 und dergleichen), Befehlszeiger (z. B. im IA-32 ISA, EIP), Verarbeitungskennzeichen (z. B. im IA-32 ISA, EFLAGS und dergleichen), Modell-spezifische Register (MRSs) (z. B. im IA-32 ISA, DEBUGCTL, MTRRs, TSC und dergleichen), Segmentregister (z. B. im IA-32 ISA, CS, SS, TR und dergleichen, welche Selektor-, Basis-, Begrenzungs- und AT-Byte-Felder umfassen), einen zusätzlichen internen (architektonischen oder nicht architektonischen) Maschinenzustand (z. B. Schlafzustand, Unterbrechbarkeitsinformationen, Ablaufmaschinenzustand), einen Zustand, welcher die Speicherverwaltung betrifft (z. B. PDPTRs, Inhalte eines Translation-Look-Aside-Puffers (TLB), Chipsatz-Register, einen E/A-Vorrichtungszustand und anderes umfassen. Entsprechend ist nicht vorgesehen, daß die Beispielliste der oben stehend präsentierten Informationen erschöpfend ist, und sie kann durch andere Informationen erweitert werden. Weiterhin erkennen Durchschnittsfachleute die hier präsentierten Akronyme unmittelbar.
-
Das VM-System 100 stellt eine flexible Architektur zum Implementieren von Mechanismen bereit, die verwendet werden, wenn das Laden und/oder das Speichern eines Maschinenzustands während Übergängen (z. B. Eintritten und Austritten) zwischen Gast-VM (z. B. 132, 142 und 152) und einem Host-VMM 125 verwaltet werden.
-
2A illustriert ein Ablaufdiagramm eines Verfahrens 200 zum Verwalten von VM-Übergangsoperationen gemäß einer Ausführungsform der Erfindung. Der Prozeß kann durch Verarbeitungslogik durchgeführt werden, die Hardware (z. B. einen Schaltkomplex, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (welche z. B. auf einem Universal-Computersystem oder einer dedizierten Maschine ausgeführt wird) oder eine Kombination aus beidem umfassen kann.
-
Bei 210 erkennt der Prozessor 112, daß gerade ein VM-Übergang stattfindet. Der VM-Übergang kann ein VM-Austritt oder ein VM-Eintritt sein. Dementsprechend wird bei 220 eine Prüfung durchgeführt um zu bestimmen, ob der VM-Übergang eine VM-Austrittsoperation ist.
-
Falls der Prozessor 112 einen VM-Eintritt ausführt, kann der Prozessor 112 eine Anzahl an Operationen zur Vorbereitung der Steuerungsübergabe von einem VMM zu einer VM durchführen. Beispielsweise kann der Prozessor 112 bei 230 den VMM-Maschinenzustand speichern, bei 240 den VM-Maschinenzustand laden und schließlich bei 250 die Steuerung an die VM übergeben.
-
Falls der Prozessor 112 einen VM-Austritt behandelt, kann der Prozessor 112 eine Anzahl an Operationen zur Vorbereitung der Steuerungsübergabe an einen VMM von einer VM durchführen. Beispielsweise kann der Prozessor 112 bei 260 einen VM-Maschinenzustand speichern, bei 270 einen VMM-Maschinenzustand laden und schließlich bei 280 die Steuerung an den VMM übergeben.
-
Ausführungsformen von Verfahren zum Laden (z. B. bei 240 und/oder bei 270 in 2) und zum Speichern (z. B. bei 230 und/oder bei 260 in 2) eines Maschinenzustands während VM-Übergängen werden in 2B bzw. 2C illustriert.
-
Es versteht sich, daß andere Aktionen während der Verarbeitung eines VM-Eintritts oder eines VM-Austritts auftreten können, welche in der 2A, 2B und 2C nicht dargestellt sind. Beispielsweise kann es nötig sein, daß die Gültigkeit und die Konsistenz des Zustands, welcher gerade bei einem VM-Eintritt oder VM-Austritt geladen wird, sichergestellt werden müssen.
-
2B illustriert ein Verfahren 202 zum Laden eines Zustands während eines VM-Übergangs. Das Verfahren kann durch Verarbeitungslogik durchgeführt werden, die Hardware (z. B. einen Schaltkomplex, dedizierte Logik, programmierbare Logik, Mikrocode und dergleichen), Software (welche z. B. auf einem Universal-Computersystem oder auf einer dedizierten Maschine ausgeführt wird) oder eine Kombination aus beidem umfassen kann.
-
Anfänglich wird bei 222 bestimmt, ob irgendwelche Elemente des Maschinenzustands verblieben sind, die verarbeitet werden müssen. Falls keine Elemente des Maschinenzustands zur Verarbeitung verblieben sind, wird das Verfahren beendet. Andernfalls wird bei 232 ein Wert eines Steuer-Bits bestimmt. Diese Steuer-Bits und ihre Bestimmungen werden nachfolgend ausführlich diskutiert. Wenn, wie bei 242 bestimmt, das Bit nicht gesetzt ist (das Bit einen Wert von 0 aufweist), kehrt die Steuerung zu 222 zurück. Andernfalls (das Bit ist mit einem Wert von 1 gesetzt) wird bei 252 ein Wert, der dem Element des Maschinenzustands entspricht, bestimmt. Die Bestimmung des Werts wird nachfolgend diskutiert. Dieser Wert wird dann bei 262 in dem Maschinenzustand installiert. Die Steuerung kehrt dann zu 222 zurück, um zu bestimmen, ob weitere Elemente des Maschinenzustands verblieben sind.
-
2C illustriert ein Verfahren 204 zum Speichern eines Maschinenzustands während eines VM-Übergangs. Das Verfahren kann durch Verarbeitungslogik durchgeführt werden, die Hardware (z. B. einen Schaltkomplex, dedizierte Logik, programmierbare Logik, Mikrocode und dergleichen), Software (welche z. B. auf einem Universal-Computersystem oder einer dedizierten Maschine ausgeführt wird) oder eine Kombination aus beidem umfassen kann.
-
Zunächst wird bei 224 bestimmt, ob irgendwelche Elemente des Maschinenzustands verblieben sind, die verarbeitet werden müssen. Falls keine Elemente des Maschinenzustands zur Verarbeitung verblieben sind, wird das Verfahren terminiert. Andernfalls wird bei 234 ein Wert eines Steuer-Bits bestimmt. Diese Steuer-Bits und ihre Bestimmungen werden nachfolgend ausführlich diskutiert. Wenn, wie bei 244 bestimmt, das Bit nicht gesetzt ist (das Bit einen Wert von 0 aufweist), kehrt die Steuerung zu 224 zurück. Andernfalls (das Bit ist mit einem Wert von 1 gesetzt) wird bei 254 ein Wert, welcher dem Element des Maschinenzustands entspricht, bestimmt. Die Bestimmung des Werts wird nachfolgend diskutiert. Dieser Wert wird dann bei 264 gespeichert. Die Steuerung kehrt dann zu 224 zurück, um zu bestimmen, ob weitere Elemente des Maschinenzustands verblieben sind.
-
Bei einer Ausführungsform umfaßt die VMCS zwei Sätze von Steuer-Bits, die der Steuerung des VMM unterliegen. Diese Steuer-Bits werden als VM-Eintrittssteuerungen und VM-Austrittssteuerungen bezeichnet. Die VM-Eintrittssteuerungen informieren den Prozessor während eines VM-Eintritts darüber, welcher VMM-Maschinenzustand gespeichert werden soll und welcher VM-Maschinenzustand geladen werden soll. Die VM-Austrittssteuerungen informieren den Prozessor während eines VM-Austritts darüber, welcher VM-Maschinenzustand gespeichert werden soll und welcher VMM-Maschinenzustand geladen werden soll.
-
Nur beispielhaft können die VM-Eintrittssteuerungen als eine Bit-Folge mit einer Länge von 6 dargestellt werden, wobei jeder Bit-Ort innerhalb der Bit-Folge eine Aktion oder Nicht-Aktion auf einem bestimmten Element des Maschinenzustands identifiziert oder repräsentiert. Beispielsweise können der Bit-Ort innerhalb der Folge und das zugeordnete Element des Maschinenzustands wie folgt dargestellt werden:
Bit-Ort | Prozessor-Aktion und zugeordnet es Element des Maschinenzustands |
0 | Speichern – VMM-DR7 |
1 | Speichern – VMM-CR3 |
2 | Speichern – VMM-CR4 |
3 | Laden – Gast-DR7 |
4 | Laden – Gast-CR3 |
5 | Laden – Gast CR4 |
-
In einer ähnlichen Weise können die VM-Austrittssteuerungen als eine Bit-Folge innerhalb der VMCS mit einer Länge von 4 dargestellt werden. Genauso können der Bit-Ort innerhalb der Folge und die zugeordnete Aktion für das Element des Maschinenzustands wie folgt dargestellt werden:
Bit-Ort | Prozessor-Aktion und zugeordnetes Element des Maschinenzustands |
0 | Speichern – Gast-CR3 |
1 | Speichern – Gast-CR4 |
2 | Laden – VMM-CR3 |
3 | Laden – VMM-CR4 |
-
Falls der VMM bei einem VM-Eintritt in den VM-Eintrittssteuerungen (Bit-Nummer 0) das ”Speichern – VMM-DR7”-Bit gesetzt aufweist, speichert der Prozessor dann den aktuellen Wert des DR7-Registers. Bei einer Ausführungsform wird der Wert des DR7-Registers in der VMCS gespeichert. Falls umgekehrt das ”Speichern – VMM-DR7”-Bit in den VM-Eintrittssteuerungen gelöscht ist, speichert der Prozessor dann den DR7-Registerwert nicht. Die VM-Eintrittssteuer-Bits ”Speichern – VMM-CR3” und ”Speichern – VMM-CR4” (z. B. Bit-Nummer 1 bzw. 2) verhalten sich in einer ähnlichen Weise.
-
Falls genauso der VMM das VM-Eintrittssteuer-Bit ”Speichern – Gast-DR7” (z. B. Bit-Nummer 4) gesetzt aufweist, lädt der Prozessor dann das DR7-Register. Bei einer Ausführungsform ist der geladene Wert im DR7-Feld der Gast-VM in der VMCS eingeschlossen. Falls das VM-Eintrittssteuer-Bit ”Laden – DR7” gelöscht ist, lädt der Prozessor das DR7-Register dann nicht. Wieder verhalten sich die Steuer-Bits ”Laden – Gast-CR3” und ”Laden – Gast-CR4” (z. B. Bit-Nummer 4 bzw. 5) in einer entsprechenden Weise. Die VM-Austrittssteuer-Bits arbeiten auf ähnlichen Wegen zum Steuern des Speicherns des Maschinenzustands der Gast-VM und des Ladens des Maschinenzustands des Host-VMM beim VM-Austritt.
-
Bei diesem Beispiel steuern die VM-Eintritts- und VM-Austrittssteuerungen nicht die gleichen Elemente des Maschinenzustands; da die VM-Eintrittssteuerungen Bits umfassen, welche DR7 repräsentieren, und die VM-Austrittssteuerungen keine umfassen. Wie Durchschnittsfachleute jedoch unmittelbar anerkennen, können die VM-Eintritts- und VM-Austrittssteuerungen die gleichen Elemente des Maschinenzustands steuern, und es ist vorgesehen, daß derartige Repräsentationen innerhalb des Schutzumfangs der verschiedenen Ausführungsformen für die vorliegende Erfindung fallen. Außerdem sollte die bestimmte Auswahl des Maschinenzustands, der dieses Beispiel repräsentiert, nicht als einschränkend angesehen werden.
-
Obwohl das oben stehend präsentierte Beispiel eine Darstellung zum Verstehen einer Ausführungsform der vorliegenden Erfindung bereitstellt, ist es nicht vorgesehen, daß die Erfindung derartig eingeschränkt wird. In allen Szenarien muß beispielsweise der geladene Wert kein Wert in der VMCS sein, und der gespeicherte Wert muß kein Wert unmittelbar aus dem Maschinenzustand sein (wie es bei den oben stehend beschriebenen Ausführungsformen der Fall ist).
-
Bei dem oben stehend gegebenen Beispiel kann der Prozessor einen Wert für ein Element des Maschinenzustands aus oder in der VMCS laden oder speichern. Ersatzweise kann der Prozessor einen Festwert für ein Element des Maschinenzustands laden oder speichern. Weiterhin kann der Prozessor einen Wert laden oder speichern, der dynamisch berechnet wurde. Schließlich kann der Prozessor keine Aktion hinsichtlich eines Elements des Maschinenzustands vornehmen (es wird kein Wert geladen oder gespeichert). Diese alternativen Mechanismen zum Bestimmen des Werts, welcher geladen oder gespeichert werden soll, werden nachfolgend beschrieben.
-
Der Prozessor kann einen festen (d. h. konstanten oder vorbestimmten) Wert für ein Element des Maschinenzustands laden oder speichern. Beispielsweise kann der Prozessor bei einem VM-Austritt einen Festwert in das EFLAGS-Register laden. Das bedeutet, daß es keine VMM-EFLAGS gibt, die in der VMCS repräsentiert ist. Statt dessen erzwingt der Prozessor vor einem Übergang der Steuerung an den VMM, daß das EFLAGS-Register in dem Prozessor einen Festwert oder einen vorbestimmten Wert (z. B. 0x2 oder andere Werte) aufweist. Auf diese Weise ”erzwingt” der Prozessor den Wert eines Elements des Maschinenzustands. In gleicher Weise kann der Prozessor einen Wert erzwingen, der beim VM-Eintritt in der VMCS gespeichert wurde, einen Wert erzwingen, der beim VM-Eintritt in den Maschinenzustand geladen wurde, und/oder einen Wert erzwingen, der beim VM-Austritt in der VMCS gespeichert wurde.
-
Auf diese Weise müssen nicht alle Elemente des Maschinenzustands explizit in der VMCS repräsentiert sein. Dieses Verfahren stellt einen flexiblen Mechanismus zum Abdecken zusätzlicher Elemente des Maschinenzustands bereit, ohne eine große oder schwerfällige VMCS zu erzeugen. Zusätzlich kann dieses Erzwingen eines Maschinenzustands oder gespeicherter Werte das Leistungsvermögen der Implementierung eines VM-Austritts und eines VM-Eintritts durch ein Reduzieren der Anzahl an Zugriffen, die auf die VMCS nötig sind, und durch ein Reduzieren einer Konsistenz- und Fehlerprüfung verbessern, welche beim VM-Eintritt und/oder beim VM-Austritt erforderlich ist.
-
Weiter kann der Prozessor einen Wert berechnen, der dann in den Maschinenzustand geladen oder in der VMCS gespeichert wird. Dieser berechnete Wert wird auf der Grundlage des Werts von einem oder mehreren Elementen des Maschinenzustands, der Werte, die innerhalb der VMCS eingeschlossen sind, und dergleichen dynamisch bestimmt. Beispielsweise kann der Wert, der beim VM-Austritt in das EIP-Register geladen wird, durch Laden eines VMM-EIP-Feldwerts aus der VMCS und Laden des EIP-Registers mit diesem EIP-Wert, der durch irgendeinen berechneten Wert erhöht wurde, wobei der berechnete Wert von der Ursache des VM-Austritts abhängt, berechnet werden.
-
Eine dynamische Berechnung eines Elements des Maschinenzustands kann eine effizientere Implementierung eines VMM gestatten. Bei dem obenstehend gegebenen Beispiel gestattet die dynamische Berechnung des EIP beim VM-Austritt beispielsweise dem VMM, Handler für individuelle VM-Austrittsquellen aufzubauen, wobei die Notwendigkeit, den Austrittsgrund in der VMM-Software zu decodieren, entfällt.
-
Schließlich kann der Prozessor während eines VM-Übergangs keine Aktion hinsichtlich eines Elements des Maschinenzustands vornehmen. Beispielsweise kann der Prozessor die Werte der Universalregister (z. B. im IA-32 ISA, EAX, EDX und dergleichen) unverändert lassen, wenn ein Übergang aus einer VM zum VMM stattfindet.
-
Der Prozessor bestimmt die entsprechende Aktion, die während eines VM-Übergangs hinsichtlich eines Elements des Maschinenzustands vorzunehmen ist, indem ein ”Zustandsaktionsindikator” evaluiert wird. Der Zustandsaktionsindikator bestimmt, welche Aktion vorgenommen werden soll. Der Wert eines Zustandsaktionsindikators (”Zustandsaktionsindikatorwert”) kann den Prozessor anweisen, Zustandsinformationen aus der VMCS zu laden oder Zustandsinformationen in der VMCS zu speichern. Der Zustandsaktionsindikatorwert kann den Prozessor auch anweisen, zu erzwingen, daß ein fester oder vorbestimmter Wert geladen oder gespeichert wird, keine Aktion hinsichtlich eines bestimmten, betrachteten Elements des Maschinenzustands vorzunehmen oder einen berechneten Wert zu laden oder zu speichern.
-
Die oben stehend diskutierten VM-Eintritts- und VM-Austrittssteuerungen sind Beispiele von Zustandsaktionsindikatoren. Bei diesem Beispiel verwendet der Prozessor Felder der VMCS als Zustandsaktionsindikatoren. Jedes Bit in der VM-Eintritts- oder VM-Austrittssteuerung entspricht einem einzelnen Element des Maschinenzustands. Wenn ein Bit gesetzt ist, zeigt es dem Prozessor an, daß das Element des Maschinenzustands aus/in der VMCS geladen/gespeichert werden soll; Wenn es gelöscht ist, wird das Element des Maschinenzustands ignoriert. Bei alternativen Ausführungsformen kann ein einzelnes Bit bestimmen, ob ein Element des Maschinenzustands geladen werden soll oder auf einen Festwert gezwungen werden soll. Bei noch weiteren Ausführungsformen können die Zustandsaktionsindikatoren mehr als ein einzelnes Bit sein, und sie können ein komplexeres Verhalten codieren. Beispielsweise kann der Zustandsaktionsindikator 2 Bits sein, die 4 Werte gestatten, um die oben stehend beschriebenen Mechanismen des Ladens, des Erzwingens, des Berechnens und des Ignorierens zu unterscheiden.
-
Ein Zustandsaktionsindikator kann einem bestimmten VM-Übergang (z. B. allen VM-Austritten), einem bestimmten Element des Maschinenzustands (wie bei der oben stehend ausführlich erklärten Ausführungsform der VM-Eintritts- und VM-Austrittssteuerung) und/oder mehreren Elementen des Maschinenzustands (z. B. einem einzelnen Zustandsaktionsindikator, der beim VM-Austritt das Laden aller Universalregister in den Prozessor steuert) zugeordnet sein.
-
Ein Zustandsaktionsindikatorwert kann aus einem Wert bestimmt werden, der aus der VMCS erfaßt wurde (wie bei den oben stehenden Beispielen), kann ein Festwert (d. h. ein vorbestimmter Wert) sein oder kann ein dynamisch berechneter Wert sein. Nachfolgend wird jede dieser Möglichkeiten diskutiert.
-
Ein Zustandsaktionsindikator kann unter der Steuerung des VMM in der VMCS gespeichert werden. Beispiele von Zustandsaktionsindikatoren, welche in der VMCS gespeichert werden, wurden oben stehend ausführlich diskutiert.
-
Ein Zustandsaktionsindikator kann vorbestimmt sein. Wenn der Wert des Zustandsaktionsindikators ein fester oder ein vorbestimmter Wert ist, weist der VMM keine unmittelbare Steuerung über die Aktionen auf, die der Prozessor bei VM-Übergängen an einem entsprechenden Element des Maschinenzustands vornimmt. Beispielsweise kann der Prozessor den Wert des EIP-Registers während einer VM-Eintrittsverarbeitung durchgehend nicht speichern, einen Gast-Wert für das EIP-Register aus der VMCS während einer VM-Eintrittsverarbeitung durchgehend laden und/oder das EIP-Register während einer VM-Austrittsverarbeitung durchgehend laden.
-
Ein Zustandsaktionsindikator kann dynamisch berechnet werden. Falls der Zustandsaktionsindikator ein dynamisch berechneter Wert ist, kann der Zustandsaktionsindikator dann von einem oder mehreren Werten abhängen, welche einem oder mehreren Elementen des Maschinenzustands, einem oder mehreren Feldern in der VMCS und dergleichen zugeordnet sind.
-
Wenn beispielsweise der Prozessor in dem IA-32 ISA gegenständliche Adreßerweiterungen (im PAE-Modus) auf einen VM-Eintritt oder VM-Austritt nachfolgend verwendet, lädt der Prozessor die Einträge für die Seitenverzeichniszeiger-Tabellen (PDPTRs) aus der VMCS. Wenn der Prozessor sich nicht in einem PAE-Modus befindet, werden die PDTRs in dem Prozessor dann auf 0 gezwungen. Zum Bestimmen, ob sich der Prozessor im PAE-Modus befindet, untersucht der Prozessor das PAE-Bit in dem CR4-Register. Folglich kann gesagt werden, daß der Prozessor eine dynamische Bestimmung oder Berechnung des Zustandsaktionsindikatorwerts vorgenommen hat. Wenn das PAE-Bit gesetzt ist, weist der Zustandsaktionsindikator den Prozessor dann an, ”aus der VMCS zu laden”. Wenn das PAE-Bit gelöscht ist, weist der Zustandsaktionsindikator den Prozessor dann an, ”einen Wert zu erzwingen” (z. B. einen Wert von 0 zu erzwingen). Es ist zu beachten, daß das hier beschriebene Verarbeiten zum Bestimmen, ob sich der Prozessor im PAE-Modus befindet, vereinfacht ist, um verschiedene Ausführungsformen der vorliegenden Erfindung deutlich zu erklären. Ein weiteres Verarbeiten kann erforderlich sein, um diese Bestimmung vorzunehmen, was von Durchschnittsfachleuten unmittelbar erkannt und verstanden wird.
-
Bei einem anderen Beispiel kann der Prozessor die Basis- und Begrenzungsfelder für ein Segmentregister laden, wenn der Wert eines Selektors eines Segments nicht null ist oder falls sich der Prozessor im V86-Modus befindet. Um diese Bestimmung vorzunehmen, untersucht der Prozessor zwei Teile der Maschinenzustandsinformationen: den Wert des Selektors für das betrachtete Segment und den Wert eines VM-Bits in einem EFLAGS-Register. Wenn der Selektor nicht null ist oder wenn das VM-Bit im EFLAGS gesetzt ist, dann wird der Prozessor angewiesen, auf andere Weise ”aus der VMCS zu laden”, der Prozessor nimmt keine Aktion vor. Es ist zu beachten, daß die hier beschriebene Verarbeitung zum Bestimmen, ob es nötig ist, die Basis- und Begrenzungsfelder zu laden, vereinfacht ist, um verschiedene Ausführungsformen der vorliegenden Erfindung deutlich zu erklären. Es kann weitere Verarbeitung erforderlich sein, um diese Bestimmung vorzunehmen, was von Durchschnittsfachleuten unmittelbar erkannt und verstanden wird.
-
Wie dem Durchschnittsfachleuten jetzt offenkundig ist, können die hier beschriebenen Verfahren zur dynamischen Steuerung des Ladens und des Speicherns des Maschinenzustands während eines Übergangs zwischen einem VMM und VMs verwendet werden. Übergänge in und aus einem VMM treten unter Verwendung einer VMCS und eines Prozessors mit flexibler Befehlslogik auf, wie oben stehend beispielhaft präsentiert wurde. Weiterhin muß nicht jedes Element des Maschinenzustands und nicht jede Aktion, welche der Prozessor vorgenommen hat, allein innerhalb der VMCS bejahend deklariert oder repräsentiert werden.
-
3 illustriert ein Ablaufdiagramm eines Verfahrens 300 zum Durchführen des Ladens eines Elements des Maschinenzustands während eines VM-Übergangs gemäß einer Ausführungsform der Erfindung. 3 kann innerhalb des Entwurfs eines Prozessors für eine Maschine implementiert werden. Das Verfahren kann durch Verarbeitungslogik durchgeführt werden, welche Hardware (z. B. einen Schaltkomplex, dedizierte Logik, programmierbare Logik, Mikrocode und dergleichen), Software (die z. B. auf einem Universal-Computersystem oder einer dedizierten Maschine ausgeführt wird) oder eine Kombination aus beidem umfassen kann.
-
Bei 310 bestimmt der Prozessor den Zustandsaktionsindikator für das betrachtete Element des Maschinenzustands. Bei 320 untersucht der Prozessor den Zustandsaktionsindikator. Wenn der Zustandsaktionsindikatorwert anzeigt, daß das betrachtete Element des Maschinenzustands aus der VMCS geladen werden muß, wird bei 330 der Wert für das Element des Maschinenzustands geladen und bei 335 in das entsprechende betrachtete Element des Maschinenzustands installiert. Wenn der Zustandsaktionsindikatorwert jedoch anzeigt, daß, wie bei 340 bestimmt, das betrachtete Element des Maschinenzustands erzwungen werden muß, installiert der Prozessor bei 350 den vorbestimmten oder erzwungenen Wert in dem entsprechenden Element des Maschinenzustands. Weiterhin kann der Zustandsaktionsindikatorwert anzeigen, daß von dem Prozessor keine Aktion hinsichtlich des betrachteten Elements des Maschinenzustands bei 360 vorgenommen werden muß, so daß der Prozessor keine Aktion vornimmt (der Prozessor modifiziert das betrachtete Element des Maschinenzustands nicht).
-
Wenn die Evaluierung des Zustandsaktionsindikators bei 360 negativ ist (er nicht anzeigt, daß keine Aktion hinsichtlich des betrachteten Elements des Maschinenzustands erforderlich ist), dann kann gefolgert werden, daß eine dynamische Berechnung erforderlich ist. Natürlich kann bei manchen Ausführungsformen eine affirmative Prüfung des Zustandsaktionsindikators vorgenommen werden, um zu bestimmen, ob eine Berechnung notwendig ist, ohne irgendeine Störung dieses zu bewirken. Dementsprechend wird ein Wert für das betrachtete Element des Maschinenzustands bei 370 berechnet und bei 380 innerhalb des Elements des Maschinenzustands installiert. Der Prozessor kann den Wert für das Element des Maschinenzustands durch Untersuchen eines oder mehrerer Elemente des Maschinenzustands, durch Untersuchen eines Werts in der VMCS und/oder durch Untersuchen eines Steuerungsindikatorwerts und so weiter dynamisch berechnen. Wenn die Untersuchung weiterhin einmal vorgenommen wurde, kann der Prozessor eine oder mehrere Transformationen (z. B. eine Berechnung) durchführen, um den Wert für das betrachtete Element des Maschinenzustands herzustellen. Folglich kann der Prozessor verschiedene Daten verwenden und führt verschiedene Aktionen durch, um den Wert für das Element des Maschinenzustands zu erzeugen.
-
Das Verfahren 300 wird für jedes Element des Maschinenzustands wiederholt, obwohl dies in 3 nicht dargestellt wird. Zusätzlich können, wie oben stehend diskutiert, jedem Zustandsaktionsindikator ein oder mehrere Elemente des Maschinenzustands zugeordnet sein.
-
4 illustriert ein Ablaufdiagramm eines Verfahrens 400 zum Durchführen des Speicherns eines Elements des Maschinenzustands während eines VM-Übergangs gemäß einer Ausführungsform der Erfindung. Das Verfahren 400 wird innerhalb der Prozessorarchitekturen implementiert. Das Verfahren kann durch Verarbeitungslogik durchgeführt werden, welche Hardware (z. B. einen Schaltkomplex, dedizierte Logik, programmierbare Logik, Mikrocode und dergleichen), Software (welche beispielsweise auf einem Universal-Computersystem oder einer dedizierten Maschine läuft) oder eine Kombination aus beidem umfassen kann.
-
Bei 410 bestimmt der Prozessor 112 den Zustandsaktionsindikator für das betrachtete Element des Maschinenzustands. Bei 420 untersucht der Prozessor 112 den Zustandsaktionsindikator. Wenn der Zustandsaktionsindikator eine Speicherung des betrachteten Elements des Maschinenzustands in der VMCS erfordert, wird das betrachtete Element des Maschinenzustands bei 430 in einem oder mehreren Feldern der VMCS gespeichert. Wenn dies nicht der Fall ist, wird bei 440 der Zustandsaktionsindikatorwert geprüft, um zu bestimmen, ob ein Festwert in der VMCS gespeichert werden muß, und wenn dies so ist, wird der Festwert bei 450 in einem oder mehreren Feldern der VMCS gespeichert. Unter manchen Umständen kann der Zustandsaktionsindikatorwert den Prozessor anweisen, keine Aktion durchzuführen, wie bei 460 dargestellt.
-
Bei 470 wird entsprechend dem Element des Maschinenzustands ein Wert dynamisch bestimmt. Der berechnete Wert wird dann in einem oder mehreren Feldern der VMCS bei 480 gespeichert. Der Prozessor kann den Wert durch Untersuchen eines oder mehrerer Elemente des Maschinenzustands, durch Untersuchen eines Werts in der VMCS und/oder durch Untersuchen eines Steuerungsindikatorwerts usw. dynamisch berechnen. Wenn die Untersuchung weiterhin einmal vorgenommen wurde, kann der Prozessor eine oder mehrere Transformationen (z. B. eine Berechnung) durchführen, um den berechneten Wert herzustellen, welcher in dem einen oder den mehreren Feldern der VMCS gespeichert ist. Folglich kann der Prozessor verschiedene Daten verwenden, und er führt verschiedene Aktionen durch, um den berechneten Wert zu erzeugen.
-
Das Verfahren 400 kann für jedes Element des Maschinenzustands wiederholt werden, obwohl dies in 4 nicht dargestellt wird. Zusätzlich können, wie oben stehend diskutiert, jedem Zustandsaktionsindikator ein oder mehrere Elemente des Maschinenzustands zugeordnet werden.
-
5 illustriert ein Ablaufdiagramm eines Verfahrens 500 zum Bestimmen eines Werts eines Zustandsaktionsindikators während einer VM-Übergangsoperation (z. B. Block 310 in 3 und Block 410 in 4) gemäß einer Ausführungsform der Erfindung. Das Verfahren kann durch Verarbeitungslogik durchgeführt werden, welche Hardware (z. B. einen Schaltkomplex, dedizierte Logik, programmierbare Logik, Mikrocode und dergleichen), Software (welche beispielsweise auf einem Universal-Computersystem oder einer dedizierten Maschine läuft) oder eine Kombination aus beidem umfassen kann.
-
Bei 505 bestimmt der Prozessor 112 das betrachtete Element des Maschinenzustands, den Typ des verarbeiteten VM-Übergangs und ob ein Laden oder Speichern eines Zustands verarbeitet wird. Auf der Grundlage der bestimmten Informationen bestimmt der Prozessor bei 507, ob die Architektur vorschreibt, daß der Zustandsaktionsindikator, welcher diesem Element des Maschinenzustands zugeordnet ist, ein Festwert ist, aus der VMCS geladen oder berechnet wurde.
-
Falls der Zustandsaktionsindikator bei 510 ein Festwert ist, wird dann bei 520 der feste Zustandsaktionsindikatorwert bestimmt.
-
Wenn der Zustandsaktionsindikator bei 530 aus der VMCS erfaßt werden muß, wird bei 540 der Zustandsaktionsindikatorwert aus der VMCS geladen.
-
Wenn der Zustandsaktionsindikator bei 550 dynamisch bestimmt oder berechnet muß, werden bei 550 die Berechnungen durchgeführt, um den Zustandsaktionsindikatorwert zu bestimmen. Die dynamische Bestimmung oder Berechnung kann beispielsweise ein Laden verschiedener Felder innerhalb der VMCS (einschließlich der Steuerungsvektorfeldwerte), ein Untersuchen verschiedener Elemente des Maschinenzustands, ein Untersuchen verschiedener Elemente eines VM- und/oder VMM-Zustands, ein Untersuchen ein oder mehrerer Steuerungsindikatorwerte und/oder ein Transformieren (z. B. ein Durchführen von Berechnungen) auf der Grundlage der untersuchten Informationen umfassen.
-
Bei manchen Ausführungsformen können die Bestimmung des Zustandsaktionsindikatorwerts und die Evaluierung nicht explizit sein. Der Prozessor kann mit dem Wissen entworfen sein, daß eine bestimmte Situation eine bestimmte Aktion verlangt. Beispielsweise kann die Logik in einem Prozessor ein Element des Maschinenzustands unbedingt auf einen bestimmten Wert zwingen, ohne irgendeinen Zustandsaktionsindikatorwert explizit zu evaluieren. Folglich sollte das explizite Prüfen, welches hinsichtlich der 5 beschrieben wurde, nicht als einschränkend angesehen werden.
-
Die Ausführungsformen der vorliegenden Erfindung stellen ein verbessertes Verarbeiten von VM-Übergängen bereit. Dies wird durch ein flexibles Verkörpern des Verarbeitens innerhalb des Prozessors erzielt, welcher eine VMCS verwendet, muß jedoch nicht vollständig auf Informationen angewiesen sein, die innerhalb der VMCS zum Durchführen eines VM-Übergangs bereitgestellt werden.
-
Durchschnittsfachleute erkennen jetzt an, daß die Implementierung eines Prozessors gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung das Laden und das Speichern eines Maschinenzustands während VM-Übergängen verwalten und steuern kann. Insbesondere stellen diese Ausführungsformen dem VMM die Flexibilität bereit, um die Semantik des Ladens und des Speicherns eines Maschinenzustands während VM-Übergängen vorzuschreiben, wie es von der Architektur gestattet wird. Dies muß nicht mit einer starren VMCS erzielt werden, welche alle Instanzen von Elementen des Maschinenzustands berücksichtigt, und nicht alles Speichern und Laden eines Maschinenzustands bei VM-Übergängen muß explizit durch den VMM durch Steuerungen in der VMCS geleitet werden.
-
Es versteht sich, daß oben stehende Beschreibung beispielhaft und nicht restriktiv gedacht ist. Durchschnittsfachleuten werden beim Durchsehen der oben stehenden Beschreibung viele andere Ausführungsformen offenkundig werden. Der Schutzumfang der Ausführungsformen der Erfindung sollte deshalb unter Bezugnahme auf die angefügten Ansprüche, zusammen mit dem vollen Schutzumfang der Äquivalente, zu denen diese Ansprüche berechtigen, bestimmt werden.
-
In der vorangehenden Beschreibung der Ausführungsformen werden verschiedene Merkmale zum Zweck der Rationalisierung der Offenbarung zusammen in einer einzelnen Ausführungsform gruppiert. Dieses Offenbarungsverfahren darf nicht so interpretiert werden, daß es eine Absicht wiedergibt, daß die beanspruchten Ausführungsformen der Erfindung mehr Merkmale erfordern, als ausdrücklich in jedem Anspruch dargestellt sind. Statt dessen liegt, wie die folgenden Ansprüche wiedergeben, der erfinderische Gegenstand in weniger als allen Merkmalen einer einzelnen offenbarten Ausführungsform. Folglich werden die folgenden Ansprüche hiermit in die Beschreibung der Ausführungsformen einbezogen, wobei jeder Anspruch für sich selbst als eine separate beispielhafte Ausführungsform steht.