-
Technisches Gebiet
-
Ausführungsformen der Erfindung betreffen allgemein virtuelle Maschinen und insbesondere die Handhabung von Fehlern in der Umgebung einer virtuellen Maschine.
-
Allgemeiner Stand der Technik
-
Ein herkömmlicher Monitor einer virtuellen Maschine (Virtual Machine Monitor – VMM) läuft in der Regel auf einem Computer und stellt für andere Software die Abstraktion einer oder mehrerer virtueller Maschinen dar. Jede virtuelle Maschine kann als eine eigenständige Plattform fungieren und ihr eigenes ”Gastbetriebssystem” (d. h. ein Betriebssystem (BS), dessen Host der VMM ist) und andere Software ablaufen lassen, die kollektiv als Gast-Software bezeichnet wird. Die Gast-Software erwartet, so zuarbeiten, als liefe sie nicht in einer virtuellen Maschine, sondern auf einem eigenen Computer. Das heißt, die Gast-Software erwartet, verschiedene Ereignisse zu steuern und auf Hardware-Ressourcen zugreifen zu können. Zu den Hardware-Ressourcen können auf dem Prozessor befindliche Ressourcen (beispielsweise Steuerregister), Ressourcen, die sich in einem Speicher befinden (beispielsweise Deskriptortabellen), und Ressourcen, die sich auf einer zugrundeliegenden Hardware-Plattform befinden (beispielsweise Eingabe-Ausgabe-Geräte), gehören. Zu den Ereignissen können interne Interrupts, externe Interrupts, Ausnahmen, Plattformereignisse (beispielsweise Initialisierungsinterrupts (INIT) oder Systemverwaltungsinterrupts (SMIs)) und dergleichen gehören.
-
In der Umgebung einer virtuellen Maschine sollte der VMM die letztendliche Kontrolle über die Ereignisse und Hardware-Ressourcen, die im vorangegangenen Absatz beschrieben wurden, haben, um für einen korrekten Betrieb der Gast-Software, die in den virtuellen Maschinen läuft, und für den Schutz vor und für Gast-Software, die auf den virtuellen Maschinen läuft, zu sorgen. Um dies zu erreichen, erhält der VMM in der Regel die Kontrolle, wenn Gast-Software auf eine geschützte Ressource zugreift oder wenn sonstige Ereignisse (wie beispielsweise Interrupts oder Ausnahmen) eintreten. Wenn beispielsweise eine Operation in einer virtuellen Maschine, die von dem VMM unterstützt wird, eine Systemvorrichtung veranlaßt, einen Interrupt zu erzeugen, so wird die momentan laufende virtuelle Maschine unterbrochen, und die Kontrolle über den Prozessor geht an den VMM über. Der VMM erhält dann den Interrupt und handhabt den Interrupt selbst oder aktiviert eine entsprechende virtuelle Maschine und übergibt den Interrupt an diese virtuelle Maschine.
-
WO 02/052404 A offenbart einen für Gast-Software vorgesehenen Prozessor. Der Prozessor ermöglicht es der Gast-Software auf einer priviligierten Ebene zu arbeiten, die von der Gast-Software gewünscht ist. Wenn die Gast-Software versucht, eine durch den Prozessormodus beschränkte Operation auszuführen, wird der Prozessormodus verlassen, um die Steuerung der Operation auf einen virtuellen Maschinenmonitor zu übertragen, der außerhalb dieses Prozessormodus läuft.
-
Der Artikel ”VM/4: ACOS-4 virtual machine architecture von S. Nanba et al. in. ACM SIGRAPH Computer Architecture News, vol. 13, iss. 3 (Juni 1985), S. 171–178 offenbart eine Architektur einer virtuellen Maschine mit einem Dispatcher zum Dispatchen einer virtuellen Maschine und einem Steuerungsprogramm, das entsprechend einer erfassten Ausnahme eine Nachricht verfasst und ein Ausnahme-Flag einem Steuerungsblock eines virtuellen Prozessors setzt. Sobald der virtuelle Prozessor die Steuerung eines realen Prozessors erhält, beginnt der virtuelle Prozessor mit der Verarbeitung der Ausnahme durch Prüfen des Ausnahme-Flags und unter Einbeziehung der Nachricht.
-
Es ist die Aufgabe der vorliegenden Erfindung, ein Verfahren zur Unterstützung eines Prozessors bei der Handhabung von Fehlern in der Umgebung einer virtuellen Maschine mit einer Rechenplattform, die einen Monitor einer virtuellen Maschine und eine oder mehrere virtuelle Maschinen repräsentierende Gast-Software ausführt, bereitzustellen, mit dem einem Eintreten von zusätzlichen Fehlern entgegengewirkt werden kann, sowie eine entsprechende Vorrichtung.
-
Die Erfindung ist definiert durch ein Verfahren mit den Merkmalen gemäß Anspruch 1 sowie eine Vorrichtung mit den Merkmalen gemäß Anspruch 7.
-
Kurze Beschreibung der Zeichnungen
-
Die Erfindung kann am besten unter Bezug auf die folgende Beschreibung und die begleitenden Zeichnungen verstanden werden, die der Veranschaulichung der Ausführungsformen der Erfindung dienen.
-
1 veranschaulicht eine Ausführungsform einer Umgebung einer virtuellen Maschine, in der einige Ausführungsformen der vorliegenden Erfindung arbeiten können.
-
2 ist ein Flußdiagramm einer Ausführungsform eines Prozesses zur Handhabung von Fehlern in einer Umgebung einer virtuellen Maschine.
-
3 veranschaulicht ein beispielhaftes Format eines VMCS-Feldes, das Fehleridentifizierungsinformationen speichert.
-
4 ist ein Flußdiagramm einer Ausführungsform eines Prozesses zur Handhabung eines Fehlers in der Umgebung einer virtuellen Maschine unter Verwendung von Fehlerinformationen, die von einem VMM kommen.
-
Beschreibung von Ausführungsformen
-
Es werden ein Verfahren und eine Vorrichtung zur Handhabung eines Fehlers in der Umgebung einer virtuellen Maschine unter Verwendung von Fehlerinformationen, die von einem VMM kommen, beschrieben. In der folgenden Beschreibung werden zum Zweck der Erläuterung zahlreiche konkrete Details dargelegt. Dem Fachmann ist jedoch klar, daß Ausführungsformen der Erfindung auch ohne diese konkreten Details praktiziert werden können.
-
Einige Abschnitte der folgenden detaillierten Beschreibungen sind anhand von Algorithmen und symbolischen Darstellungen von Operationen an Datenbits innerhalb der Register oder Speicher eines Computersystems. Diese algorithmischen Beschreibungen und Darstellungen sind die vom Datenverarbeitungsfachmann verwendeten Mittel, um anderen Fachleuten das Wesentliche ihrer Arbeit auf die effektivste Weise zu übermitteln. Unter einem Algorithmus versteht man hier – und allgemein – eine in sich schlüssige Abfolge von Operationen, die zu einem gewünschten Ergebnis führt. Die Operationen sind jene, die physikalische Manipulationen von physikalischen Quantitäten erfordern. Gewöhnlich – wenn auch nicht notwendigerweise – haben diese Quantitäten die Form von elektrischen oder magnetischen Signalen, die gespeichert, übertragen, kombiniert, verglichen und anderweitig gehandhabt werden können. Es hat sich mitunter als zweckmäßig erwiesen, vor allem aus Gründen des allgemein verbreiteten Gebrauchs, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen oder dergleichen zu bezeichnen.
-
Man sollte jedoch bedenken, daß alle diese und ähnliche Begriffe den entsprechenden physikalischen Quantitäten zuzuordnen sind und lediglich zweckmäßige Etiketten sind, die diesen Quantitäten aufgeklebt werden. Sofern nicht ausdrücklich etwas anderes angegeben ist, wie den folgenden Besprechungen zu entnehmen ist, versteht es sich, daß Besprechungen, die Begriffe wie beispielsweise ”Verarbeitung” oder ”Berechnen” oder ”Errechnen” oder ”Feststellen” oder dergleichen verwenden, sich auf die Aktionen und Prozesse eines Computersystems oder einer ähnlichen elektronischen Rechenvorrichtung beziehen können, die Daten, welche als physikalische (elektronische) Quantitäten innerhalb der Register und Speicher des Computersystems dargestellt sind, in andere Daten, die in ähnlicher Weise als physikalische Quantitäten innerhalb der Speicher und Register des Computersystems oder sonstiger derartiger Informationsspeicher-, -übertragungs- oder -anzeigevorrichtungen dargestellt sind, handhabt und umwandelt.
-
In der folgenden detaillierten Beschreibung der Ausführungsformen wird auf die begleitenden Zeichnungen Bezug genommen. In den Zeichnungen bezeichnen gleiche Zahlen in den verschiedenen Ansichten im wesentlichen gleiche Komponenten. Es können andere Ausführungsformen verwendet und strukturelle, logische und elektrische Änderungen vorgenommen werden, ohne den Geltungsbereich der vorliegenden Erfindung zu verlassen. Des Weiteren versteht es sich, daß die verschiedenen Ausführungsformen der Erfindung zwar voneinander verschieden sind, sich aber nicht unbedingt gegenseitig ausschließen. Beispielsweise kann ein bestimmtes Merkmal, eine bestimmte Struktur oder ein bestimmtes Charakteristikum, das bei einer Ausführungsform beschrieben wird, auch in anderen Ausführungsformen enthalten sein.
-
Obgleich die folgenden Beispiele Ausführungsformen der vorliegenden Erfindung im Kontext von Ausführungseinheiten und Logikschaltungen beschreiben können, können auch andere Ausführungsformen der vorliegenden Erfindung mittels Software realisiert werden. Beispielsweise kann in einigen Ausführungsformen die vorliegende Erfindung als ein Computerprogrammprodukt oder eine Software bereitgestellt sein, die eine maschinen- oder computerlesbares Speichermedium enthält, auf dem Anweisungen gespeichert sind, die dafür verwendet werden können, einen Computer (oder sonstige elektronische Vorrichtungen) darauf zu programmieren, einen Prozeß gemäß der vorliegenden Erfindung auszuführen. In anderen Ausführungsformen könnten Schritte der vorliegenden Erfindung durch spezifische Hardware-Komponenten ausgeführt werden, die eine festverdrahtete Logik zum Ausführen der Schritte enthalten, oder durch eine beliebige Kombination aus programmierten Computerkomponenten und speziellen Hardware-Komponenten.
-
So kann ein maschinenlesbares Speichermedium einen beliebigen Mechanismus zum Speichern oder Übertragen von Informationen in einer Form enthalten, die von einer Maschine (beispielsweise einem Computer) gelesen werden kann, en (beispielsweise einer Computer), einschließlich beispielsweise Disketten, optische Disks, Compact-Disk-Nurlesespeicher (CD-ROMs) und magnetooptische Disks, Nurlesespeicher (ROMs), Direktzugriffsspeicher (RAM), löschbare programmierbare Nurlesespeicher (EPROM), elektrisch löschbare programmierbare Nurlesespeicher (EEPROM), magnetische oder optische Karten, Flash-Speicher, eine Übertragung über das Internet, elektrische, optische, akustische oder anderen Formen von ausgebreiteten Signalen (beispielsweise Trägerwellen, Infrarotsignale, digitale Signale usw.) oder dergleichen.
-
Des Weiteren kann ein Design mehrere Stufen durchlaufen – vom Entwurf über die Simulation bis hin zur Fertigung. Daten, die ein Design darstellen, können das Design auf verschiedene Weisen darstellen. Als erstes – wie es für Simulationen nützlich ist – kann die Hardware mittels einer Hardwarebeschreibungssprache oder einer anderen Funktionsbeschreibungssprache dargestellt werden. Außerdem kann ein Schaltkreisebenenmodell mit Logik- und/oder Transistorgattern auf einigen Stufen des Designprozesses erstellt werden. Des Weiteren erreichen die meisten Designs auf irgend einer Stufe eine Datenebene, welche die physikalische Anordnung von verschiedenen Vorrichtungen in dem Hardwaremodell darstellt. In dem Fall, wo herkömmliche Halbleiterfertigungstechniken eingesetzt werden, können Daten, die ein Hardwaremodell darstellen, die Daten sein, die das Vorhandensein oder Fehlen verschiedener Merkmale auf unterschiedlichen Maskenschichten für Masken, die zur Herstellung des integrierten Schaltkreises verwendet werden, spezifizieren. In jeder beliebigen Darstellung des Designs können die Daten in einer beliebigen Form eines maschinenlesbaren Speichermediums gespeichert sein. Eine optische oder elektrische Welle, die moduliert oder anderweitig erzeugt wurde, um derartige Informationen zu übertragen, ein Speicher oder ein magnetisches oder optisches Datenlager wie beispielsweise eine Disk kann das maschinenlesbare Speichermedium sein. Jedes dieser Speichermedien kann die Design- oder Software-Informationen ”tragen” oder ”anzeigen”. Wenn eine elektrische Trägerwelle, die den Code oder das Design anzeigt oder trägt, so übertragen wird, daß ein Kopieren, Puffern oder eine Neuübertragung des elektrischen Signals stattfindet, wird eine Kopie erstellt. Somit kann ein Kommunikationsanbieter oder ein Netzwerkanbieter Kopien eines Artikels (einer Trägerwelle) anfertigen, in dem Techniken der vorliegenden Erfindung verkörpert sind.
-
1 veranschaulicht die Umgebung 100 einer virtuellen Maschine, in der einige Ausführungsformen der vorliegenden Erfindung arbeiten können. In der Umgebung 100 einer virtuellen Maschine umfaßt die reine Plattformhardware 110 eine Rechenplattform, die beispielsweise in der Lage sein kann, ein standardmäßiges Betriebssystem (BS) und/oder einen Monitor einer virtuellen Maschine (VMM), wie beispielsweise einen VMM 112, auszuführen. Obgleich der VMM 112 in der Regel in Software implementiert ist, kann er eine reine Maschinenschnittstelle emulieren und in eine Software einer höheren Ebene exportieren. Solche Software einer höheren Ebene kann ein standardmäßiges oder Echtzeit-BS umfassen, kann eine stark verschlankte Betriebsumgebung mit begrenzter Betriebssystemfunktionalität sein oder braucht gar keine traditionellen BS-Einrichtungen zu enthalten. Alternativ kann beispielsweise der VMM 112 innerhalb oder auf einem anderen VMM laufen. VMMs und ihre typischen Merkmale und Funktionen sind dem Fachmann allgemein bekannt und können beispielsweise in Software, Firmware, Hardware oder mittels einer Kombination verschiedener Techniken implementiert sein.
-
Die Plattform-Hardware 110 enthält einen Prozessor 118 und einen Speicher 120. Der Prozessor 118 kann von einem beliebigen Typ sein, der in der Lage ist, Software auszuführen, wie beispielsweise ein Mikroprozessor, ein digitaler Signalprozessor, ein Mikro-Controller oder dergleichen. Obgleich in 1 nur ein einziger Prozessor 118 gezeigt ist, kann die Plattform-Hardware 110 einen oder mehrere solcher Prozessoren enthalten.
-
Der Speicher 120 kann von einem beliebigen Typ eines beschreibbaren/nicht-beschreibbaren Speichermediums (beispielsweise ein Direktzugriffsspeicher (RAM), ein Nurlesespeicher (ROM), ein magnetisches Diskspeichermedium, ein optisches Speichermedium, ein Flash-Speicherbaustein usw.) sowie eine elektrische, optische, akustische oder andere Form von ausgebreiteten Signalen (beispielsweise Trägerwellen, Infrarotsignale, digitale Signale usw.), eine beliebige Kombination der obigen Mittel oder irgend ein sonstiger Typ eines Maschinenspeichermediums sein, das von dem Prozessor 118 gelesen werden kann. Der Speicher 120 kann Anweisungen zur Vornahme der Ausführung von Verfahrensausführungsformen der vorliegenden Erfindung speichern.
-
Die Plattform-Hardware 110 kann von einem Personalcomputer (PC), einem Großrechner, einem handgehaltenen Gerät, einem tragbaren Computer, einer Settopbox oder einem sonstigen Rechensystem gebildet werden.
-
Der VMM 112 stellt für andere Software (d. h. ”Gast”-Software) die Abstraktion einer oder mehrerer virtueller Maschinen (VMs) dar, welche die gleiche Abstraktion oder andere Abstraktionen für die verschiedenen ”Gäste” darstellen können. 1 zeigt drei VMs, 130, 140 und 150. Die Gast-Software, die auf jeder VM läuft, kann ein Gast-BS enthalten, wie beispielsweise ein Gast-BS 154, 160 oder 170, und verschiedene Gast-Software-Anwendungen 152, 162 und 172.
-
Die Gast-BS 154, 160 und 170 erwarten, auf physikalischen Ressourcen (beispielsweise Prozessorregister, Speicher und Eingabe-Ausgabe(E/A)-Vorrichtungen) innerhalb entsprechender VMs (beispielsweise VM 130, 140 und 150), auf denen die Gast-BS laufen, zuzugreifen und sonstige Funktionen auszuführen. Beispielsweise erwartet die Gast-BS, Zugriff auf sämtliche Register, Caches, Strukturen, E/A-Geräte, Speicher und dergleichen je nach der Architektur des Prozessors und der Plattform, die in der VM dargestellt sind, zu haben. Die Ressourcen, auf die die Gast-Software zugreifen kann, kann als ”bevorrechtigt” oder ”nicht-bevorrechtigt” klassifiziert werden. Für bevorrechtigte Ressourcen ermöglicht der VMM 112 Funktionen, die von Gast-Software gewünscht wird, während er gleichzeitig die letztendliche Kontrolle über diese bevorrechtigten Ressourcen behält. Nicht-bevorrechtigte Ressourcen brauchen nicht unter der Kontrolle des VMM 112 zu stehen und sind der Gast-Software frei zugänglich.
-
Des Weiteren erwartet jede Gast-BS, verschiedene Fehlerereignisse zu handhaben, wie beispielsweise Ausnahmen (beispielsweise Seitenfehler, allgemeine Schutzfehler usw.), Interrupts (beispielsweise Hardware-Interrupts, Software-Interrupts) und Plattformereignisse (beispielsweise Initialisierungsinterrupts (INIT) und Systemverwaltungsinterrupts (SMIs)). Einige dieser Fehlerereignisse sind ”bevorrechtigt”, weil sie von dem VMM 112 gehandhabt werden müssen, um den ordnungsgemäßen Betrieb der VMs 130 bis 150 und den Schutz vor und für Gast-Software zu gewährleisten.
-
Wenn es zu einem bevorrechtigten Fehlerereignis kommt oder Gast-Software versucht, auf eine bevorrechtigte Ressource zuzugreifen, so kann die Kontrolle an den VMM 112 übertragen werden. Die Übertragung der Kontrolle von einer Gast-Software an den VMM 112 wird im vorliegenden Text als ein VM-Ausstieg bezeichnet. Nachdem er den Zugriff auf die Ressource ermöglicht hat oder das Ereignis entsprechend gehandhabt hat, kann der VMM 112 die Kontrolle an die GastSoftware zurückgeben. Die Übertragung der Kontrolle von dem VMM 112 an Gast-Software wird als ein VM-Einstieg bezeichnet. Bei einer Ausführungsform fordert der VMM 112 den Prozessor 118 auf, durch Ausführen einer VM-Einstiegsanweisung einen VM-Einstieg durchzuführen.
-
Bei einer Ausführungsform steuert der Prozessor 118 den Betrieb der VMs 130, 140 und 150 gemäß Daten, die in einer Steuerungsstruktur einer virtuellen Maschine (Virtual Machine Control Structure – VMCS) 126 gespeichert. Die VMCS 126 ist eine Struktur, die den Zustand von Gast-Software, den Zustand des VMM 112, Ausführungssteuerungsinformationen, die anzeigen, wie der VMM 112 den Betrieb von Gast-Software zu steuern wünscht, Informationen, welche die Übergänge zwischen dem VMM 112 und einer VM steuern, usw. enthalten. Bei einer Ausführungsform ist die VMCS im Speicher 120 gespeichert. Bei einigen Ausführungsformen werden mehrere VMCS-Strukturen verwendet, um mehrere VMs zu unterstützen.
-
Wenn ein bevorrechtigtes Fehlerereignis eintritt, so kann der VMM 112 den Fehler selbst handhaben, oder er kann entscheiden, daß der Fehler durch eine entsprechende VM gehandhabt werden muß. Wenn der VMM 112 entscheidet, daß der Fehler durch eine VM gehandhabt werden soll, so fordert der VMM 112 den Prozessor 118 auf, diese VM aufzurufen und den Fehler an diese VM zu übergeben. Bei einer Ausführungsform bewerkstelligt der VMM 112 dies durch Setzen eines Fehlerindikators auf einen Übergabewert und Erzeugen einer VM-Einstiegsanforderung. Bei einer Ausführungsform ist der Fehlerindikator in der VMCS 126 gespeichert.
-
Erfindungsgemäß enthält der Prozessor 118 eine Fehlerübergabelogik 124, welche die Anforderung der VMM 112 für einen VM-Einstieg erhält und feststellt, ob der VMM 122 die Übergabe eines Fehler an die VM angefordert hat. Die Fehlerübergabelogik 124 nimmt diese Feststellung anhand des momentanen Wertes des in der VMCS 126 gespeicherten Fehlerindikators vor. Wenn die Fehlerübergabelogik 124 feststellt, daß der VMM die Übergabe des Fehlers an die VM angefordert hat, so übergibt sie den Fehler an die VM, wenn die Kontrolle an diese VM übergeht.
-
Bei einer Ausführungsform beinhaltet die Übergabe des Fehlers die Suche nach einer Umleitungsstruktur für einen Eintrag, der dem übergebenen Fehler zugeordnet ist; das Extrahieren eines Deskriptors des Speicherortes einer Routine, die dafür vorgesehen ist, diesen Fehler zu handhaben, aus diesem Eintrag; und das Springen an den Anfang der Routine unter Verwendung des Deskriptors. Routinen, die dafür vorgesehen sind, entsprechende Interrupts, Ausnahmen oder sonstige Fehler zu handhaben, werden als ”Verarbeiter” bezeichnet. Bei einigen Anweisungssatzarchitekturen (ISAs) werden einigen Fehlern Fehlercodes zugeordnet, die möglicherweise auf den Stapel geschoben werden müssen (oder in einem Hardware-Register oder über sonstige Mittel bereitgestellt werden müssen), bevor an den Anfang des Verarbeiters gesprungen wird.
-
Während der Übergabe eines Fehlers kann der Prozessor 118 eine oder mehrere Adressübersetzungen ausführen, wobei eine Adresse aus einer virtuellen in eine physikalische Form umgewandelt wird. Beispielsweise kann die Adresse der Interrupttabelle oder die Adresse des zugehörigen Verarbeiters eine virtuelle Adresse sein. Der Prozessor muß möglicherweise auch verschiedene Überprüfungen während der Übergabe eines Fehlers ausführen. Beispielsweise kann der Prozessor Übereinstimmungsüberprüfungen wie beispielsweise die Validierung von Segmentierungsregistern und Zugriffsadressen (was zu Grenzverletzungsfehlern, ”Segment-nicht-vorhanden”-Fehlern, Stapelfehlern usw. führen kann), Erlaubnisebenenüberprüfungen, die zu Schutzfehlern (beispielsweise allgemeinen Schutzfehlern) führen können, usw. ausführen.
-
Adreßübersetzungen und Überprüfungen während der Fehlervektorierung können zu einer Vielfalt von Fehlern führen, wie beispielsweise Seitenfehlern, allgemeinen Schutzfehlern usw. Einige Fehler, zu denen es während der Übergabe eines momentanen Fehlers kommt, können einen VM-Ausstieg verursachen. Wenn beispielsweise der VMM 112 VM-Ausstiege wegen Seitenfehlern anfordert, um den physikalischen Speicher zu schützen und zu virtualisieren, so führt ein Seitenfehler, zu dem es während der Übergabe eines momentanen Fehlers an die VM kommt, zu einem VM-Ausstieg.
-
Die Fehlerübergabelogik 124 wirkt dem oben angesprochenen möglichen Eintreten von zusätzlichen Fehlern entgegen, indem sie überprüft, ob die Übergabe des momentanen Fehlers erfolgreich war. Wenn die Fehlerübergabelogik 124 feststellt, daß die Übergabe nicht erfolgreich war, so stellt sie des Weiteren fest, ob ein resultierender zusätzlicher Fehler einen VM-Ausstieg verursacht. Wenn ja, so generiert die Fehlerübergabelogik 124 einen VM-Ausstieg. Wenn nicht, so übergibt die Fehlerübergabelogik 124 den zusätzlichen Fehler an die VM.
-
2 ist ein Flußdiagramm eines Prozesses 200 zur Handhabung von Fehlern in einer Umgebung einer virtuellen Maschine. Der Prozeß kann durch eine Verarbeitungslogik ausgeführt werden, die Hardware (beispielsweise Schaltkreise, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (wie beispielsweise jene, die auf einem Allzweckcomputersystem oder einer dedizierten Maschine läuft) oder eine Kombination aus beidem umfaßt. Erfindungsgemäß wird der Prozeß 200 durch die Fehlerübergabelogik 124 von 1 ausgeführt.
-
Wenden wir uns 2 zu, wo der Prozeß 200 damit beginnt, daß die Verarbeitungslogik eine Anforderung für den Übergang der Kontrolle an eine VM von einem VMM erhält (Verarbeitungsblock 202). Bei einer Ausführungsform wird die Anforderung für einen Übergang der Kontrolle über eine VM-Einstiegsanweisung erhalten, die von dem VMM ausgeführt wird.
-
Am Entscheidungskasten 204 stellt die Verarbeitungslogik fest, ob der VMM eine Übergabe eines Fehlers an die VM, die aufgerufen werden soll, angefordert hat. Ein Fehler kann ein interner Interrupt (beispielsweise ein Software-Interrupt), ein externer Interrupt (beispielsweise ein Hardware-Interrupt), eine Ausnahme (beispielsweise ein Seitenfehler), ein Plattformereignis (beispielsweise Initialisierungsinterrupts (INIT) oder Systemverwaltungsinterrupts (SMIs)) oder irgend ein sonstiges Fehlerereignis sein. Bei einer Ausführungsform stellt die Verarbeitungslogik fest, ob der VMM die Übergabe eines Fehlers angefordert hat, indem sie den momentanen Wert eines durch den VMM verwalteten Fehlerindikators liest Der Fehlerindikator kann sich in der VMCS oder in irgend eine sonstigen Datenstruktur befinden, auf die der VMM und die Verarbeitungslogik 200 zugreifen können. Wenn – bei einer Ausführungsform – der VMM einen Fehler an eine VM übergeben haben möchte, so setzt der VMM den Fehlerindikator auf den Übergabewert und erzeugt dann eine Anforderung für eine Übertragung der Kontrolle an diese VM. Wenn während eines VM-Einstiegs keine Fehlerübergabe benötigt wird, so setzt der VMM den Fehlerindikator auf einen Nicht-Übergabewert, bevor er die Übertragung der Kontrolle an die VM anfordert. Dies wird weiter unten unter Bezug auf 3 besprochen.
-
Wenn die Verarbeitungslogik feststellt, daß der VMM eine Übergabe eines Fehlers angefordert hat, so übergibt die Verarbeitungslogik den Fehler an die VM, während die Kontrolle an die VM übergeht (Verarbeitungsblock 206). Die Verarbeitungslogik überprüft dann, ob die Übergabe des Fehlers erfolgreich war (Entscheidungskasten 208). Wenn ja, so endet der Prozeß 200. Wenn nicht, so stellt die Verarbeitungslogik fest, ob ein resultierender zusätzlicher Fehler einen VM-Ausstieg verursacht (Entscheidungskasten 210). Wenn ja, so erzeugt die Verarbeitungslogik einen VM-Ausstieg (Verarbeitungsblock 212). Wenn nicht, so übergibt die Verarbeitungslogik den zusätzlichen Fehler an die VM (Verarbeitungsblock 214), und überprüft – unter Rückkehr zum Verarbeitungsblock 208 –, ob dieser zusätzliche Fehler erfolgreich übergeben wurde. Wenn ja, so endet der Prozeß 200. Wenn nicht, so kehrt die Verarbeitungslogik zum Entscheidungskasten 210 zurück.
-
Wenn die Verarbeitungslogik feststellt, daß der VMM keine Übergabe eines Fehlers angefordert hat, so überträgt die Verarbeitungslogik die Kontrolle an die VM, ohne fehlerbezogene Operationen auszuführen (Verarbeitungsblock 218).
-
Wenn bei einer Ausführungsform die Verarbeitungslogik einen Fehler an eine VM übergeben muß, so sucht sie eine Umleitungsstruktur (beispielsweise die Interrupt-Deskriptorentabelle in der Anweisungssatzarchitektur (ISA) des Intel® Pentium® 4 (im vorliegenden Text als die IA-32 ISA) bezeichnet) für einen Eintrag, der dem übergebenen Fehler zugeordnet ist, extrahiert aus diesem Eintrag einen Deskriptor eines Verarbeiters, der diesem Fehler zugeordnet ist, und springt unter Verwendung des Deskriptors an den Anfang des Verarbeiters. Die Interrupt-Deskriptorentabelle kann unter Verwendung von Fehleridentifizierungsinformationen, wie beispielsweise eines Fehleridentifikators und eines Fehlertyps (beispielsweise eines externes Interrupts, eines internen Interrupts, eines nicht-maskierbaren Interrupts (NMI), einer Ausnahme usw.) durchsucht werden. Bei einer Ausführungsform sind bestimmte Fehler (beispielsweise einige Ausnahmen) Fehlercodes zugeordnet, die auf den Stapel geschoben werden müssen (oder in einem Hardware-Register oder über sonstige Mittel bereitgestellt werden müssen), bevor an den Anfang des Verarbeiters gesprungen wird. Bei einer Ausführungsform werden die Fehleridentifizierungsinformationen und der zugehörige Fehlercode durch den VMM unter Verwendung einer bezeichneten Datenstruktur bereitgestellt. Bei einer Ausführungsform ist die bezeichnete Datenstruktur Teil der VMCS. 3 veranschaulicht ein beispielhaftes Format eines VMCS-Feldes, das Fehleridentifizierungsinformationen speichert. Dieses VMCS-Feld wird als ein Fehlerinformationsfeld bezeichnet.
-
Wenden wir uns 3 zu. Bei einer Ausführungsform ist das Fehlerinformationsfeld ein 32-Bit-Feld, in dem die ersten 8 Bits einen Identifikator eines Fehlers (beispielsweise eines Interrupts oder einer Ausnahme) speichern, die nächsten 2 Bits den Fehlertyp (beispielsweise externer Interrupt, Software-Interrupt, NMI, Ausnahme usw.) kennzeichnen, Bit 11 anzeigt, ob gegebenenfalls ein Fehlercode, der diesem Fehler zugeordnet ist, einem entsprechenden Verarbeiter zur Verfügung zu stellen ist (durch Schieben auf den Stapel, in einem Hardware-Register gespeichert usw.), und Bit 31 ein Fehlerindikator ist, der angibt, ob ein Fehler an auf eine VM zu übergeben ist, wie oben besprochen.
-
Wenn Bit 11 des Fehlerinformationsfeldes anzeigt, daß dem Verarbeiter ein Fehlercode zur Verfügung zu stellen ist, so wird auf ein zweites VMCS-Feld zugegriffen, um den Fehlercode zu erhalten, der diesem Fehler zugeordnet ist. Das zweite VMCS-Feld wird als ein Fehlercodefeld bezeichnet.
-
Wenn bei einer Ausführungsform der VMM einen Fehler an eine VM übergeben haben möchte, so speichert der VMM den Fehleridentifikator und den Fehlertyp in dem Fehlerinformationsfeld und setzt den Fehlerindikator (Bit 31) auf einen Übergabewert (beispielsweise Bit 31 = 1). Wenn der Fehler einem Fehlercode zugeordnet ist, der dem Verarbeiter zur Verfügung zu stellen ist, so setzt der VMM außerdem Bit 11 auf einen Übergabewert (beispielsweise Bit 11 = 1) und speichert den Fehlercodewert im Fehlercodefeld in der VMCS.
-
4 ist ein Flußdiagramm eines Prozesses 400 zur Handhabung eines Fehlers in der Umgebung einer virtuellen Maschine unter Verwendung von Fehlerinformationen, die von einem VMM kommen. Der Prozeß kann durch eine Verarbeitungslogik ausgeführt werden, die Hardware (beispielsweise Schaltkreise, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (wie beispielsweise jene, die auf einem Allzweckcomputersystem oder einer dedizierten Maschine läuft) oder eine Kombination aus beidem umfaßt. Der Prozeß 400 kann durch die Fehlerübergabelogik 124 von 1 ausgeführt werden.
-
Wenden wir uns 4 zu. Der Prozeß 400 beginnt damit, daß eine Verarbeitungslogik eine Ausführung einer VM-Einstiegsanweisung durch die VMM erkennt (Verarbeitungsblock 402). In Reaktion darauf greift die Verarbeitungslogik auf ein Fehlerindikatorbit zu, das durch den VMM kontrolliert wird (Verarbeitungsblock 403), und stellt fest, ob ein Fehler an die VM, die aufgerufen werden soll, zu übergeben ist (Entscheidungskasten 404). Wenn nicht, so ignoriert die Verarbeitungslogik übrigen Fehlerinformationen und führt den angeforderten VM-Einstieg aus (Verarbeitungsblock 406). Wenn ja, so erlangt die Verarbeitungslogik Fehlerinformationen aus einem Fehlerinformationsfeld in der VMCS (Verarbeitungsblock 408) und stellt fest, ob ein Fehlercode, der diesem Fehler zugeordnet ist, an den Verarbeiter des Fehlers zu übergeben ist (Entscheidungskasten 410). Wenn ja, so erlangt die Verarbeitungslogik den Fehlercode aus einem Fehlercodefeld in der VMCS (Verarbeitungsblock 412). Wenn nicht, so schreitet die Verarbeitungslogik direkt zum Verarbeitungsblock 414 voran.
-
Beim Verarbeitungsblock 414 übergibt die Verarbeitungslogik den Fehler an die VM, während der VM-Einstieg ausgeführt wird. Die Verarbeitungslogik überprüft dann, ob die Übergabe des Fehler erfolgreich war (Entscheidungskasten 416). Wenn ja, so endet der Prozeß 400. Wenn nicht, so stellt die Verarbeitungslogik fest, ob ein resultierender zusätzlicher Fehler einen VM-Ausstieg verursacht (Entscheidungskasten 418). Wenn ja, so generiert die Verarbeitungslogik einen VM-Ausstieg (Verarbeitungsblock 420). Wenn nicht, so übergibt Verarbeitungslogik den zusätzlichen Fehler an die VM (Verarbeitungsblock 422) und überprüft – unter Rückkehr zum Verarbeitungsblock 416 –, ob dieser zusätzliche Fehler erfolgreich übergeben wurde. Wenn ja, so endet der Prozeß 400. Wenn nicht, so kehrt die Verarbeitungslogik zum Entscheidungskasten 418 zurück.
-
Damit wurden nun ein Verfahren und eine Vorrichtung zur Handhabung von Fehlern in einer Umgebung einer virtuellen Maschine beschrieben. Es versteht sich, daß die obige Beschreibung veranschaulichen und nicht einschränken soll. Dem Fachmann werden beim Lesen und Verstehen der obigen Beschreibung viele weitere Ausführungsformen einfallen. Der Geltungsbereich der Erfindung ist somit anhand der begleitenden Ansprüche zusammen mit dem vollen Geltungsbereich von Äquivalenten, zu denen diese Ansprüche berechtigt sind, zu bestimmen.