DE112011103845T5 - Verwalten einer verschachtelten virtualisierten Umgebung - Google Patents

Verwalten einer verschachtelten virtualisierten Umgebung Download PDF

Info

Publication number
DE112011103845T5
DE112011103845T5 DE112011103845T DE112011103845T DE112011103845T5 DE 112011103845 T5 DE112011103845 T5 DE 112011103845T5 DE 112011103845 T DE112011103845 T DE 112011103845T DE 112011103845 T DE112011103845 T DE 112011103845T DE 112011103845 T5 DE112011103845 T5 DE 112011103845T5
Authority
DE
Germany
Prior art keywords
software
feature
features
mode
hardware unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112011103845T
Other languages
English (en)
Other versions
DE112011103845B4 (de
Inventor
Abel Gordon
Shmuel Ben-Yehuda
Nadav Yosef Har'El
Ben-Ami Sour
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112011103845T5 publication Critical patent/DE112011103845T5/de
Application granted granted Critical
Publication of DE112011103845B4 publication Critical patent/DE112011103845B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45566Nested virtual machines

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Ein Verfahren zum Verwalten einer Virtualisierungsumgebung weist auf: Erkennen eines ersten Satzes durch eine Hardwareeinheit unterstützter Merkmale durch eine erste Software, wobei die erste Software auf der Hardwareeinheit ausgeführt wird; Erkennen eines zweiten Satzes von Merkmalen, die auf einer zweiten Software ausgeführt werden, wobei die zweite Software durch die erste Software mit dem zweiten Satz von Merkmalen gestartet wird; Verfügbarmachen eines oder mehrerer Merkmale in dem zweiten Satz von Merkmalen für die zweite Software, wobei die zweite Software die verfügbar gemachten Merkmale erkennt und für eine durch die zweite Software gestartete dritte Software freigibt; und Emulieren eines ersten Merkmals, ohne eine Unterbrechung zu verursachen, sodass die Steuerung an die zweite Software übertragen wird, als Reaktion auf das Feststellen, dass es sich bei dem ersten Merkmal um ein verfügbar gemachtes Merkmal handelt, das nicht in dem ersten Satz von Merkmalen enthalten ist, wobei dem ersten Merkmal ein oder mehrere kritische Ereignisse zugehörig sind.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung betrifft allgemein die Virtualisierung in einem Datenverarbeitungssystem und insbesondere das Verbessern der Systemleistung in einer verschachtelten Virtualisierungsumgebung.
  • HINTERGRUND
  • In einem Datenverarbeitungssystem kann durch eine Host-Software oder einen Hypervisor eine simulierte Datenverarbeitungsumgebung oder eine virtuelle Maschine (VM) für eine Gast-Software bereitgestellt werden, die auf dem Hypervisor ausgeführt wird. Die VM ermöglicht die Gast-Software so auszuführen, als würde sie direkt auf der zugrunde liegenden Hardware oder einer physischen Maschine ausgeführt.
  • Eine typische physische Maschine (z. B. ein Prozessor) arbeitet in mindestens zwei Modi: einem Modus ohne Rootberechtigung und einem Modus mit Rootberechtigung. Die physische Maschine arbeitet im Allgemeinen im Modus ohne Rootberechtigung, um die nicht privilegierten Anweisungen der Gast-Software auszuführen, kann jedoch in den Modus mit Rootberechtigung wechseln, sobald sie eine privilegierte Anweisung erkennt, die durch den Hypervisor bearbeitet werden muss. Das Wechseln zwischen den Modi wird im Allgemeinen als Trapping (Abfangen) bezeichnet.
  • VMs werden üblicherweise auf der Grundlage herkömmlicher Softwarevirtualisierungskonzepte realisiert, um Virtualisierungsmerkmale wie beispielsweise Serverkonsolidierung, Fehlerbegrenzung, Sicherheit und Ressourcenverwaltung zu unterstützen. Die meisten der Virtualisierungsmerkmale werden durch beträchtliche Leistungseinbußen aufgrund von Unterbrechungen erkauft, die jedes Mal verursacht werden, wenn die Gast-Software auf ein Virtualisierungsmerkmal zugreift.
  • KURZDARSTELLUNG
  • Die vorliegende Erfindung betrifft Verfahren, Systeme und Computerprogrammprodukte, die das Verbessern der Systemleistung in einer verschachtelten virtualisierten Umgebung ermöglichen.
  • Gemäß einer Ausführungsform wird ein Verfahren zum Verbessern der Systemleistung in einer verschachtelten virtualisierten Umgebung bereitgestellt. Das Verfahren weist auf: Erkennen eines ersten Satzes durch eine Hardwareeinheit unterstützter Merkmale durch eine erste Software, wobei die erste Software auf der Hardwareeinheit ausgeführt wird; Erkennen eines zweiten Satzes von Merkmalen, mit denen eine zweite Software ausgeführt werden soll, wobei die zweite Software durch die erste Software mit dem zweiten Satz von Merkmalen gestartet wird; Verfügbarmachen eines oder mehrerer Merkmale in dem zweiten Satz von Merkmalen für die zweite Software, wobei die zweite Software die verfügbar gemachten Merkmale erkennt und für eine durch die zweite Software gestartete dritte Software freigibt; und Emulieren eines ersten Merkmals ohne Auslösen einer Unterbrechung, sodass die Steuerung an die zweite Software übertragen wird, als Reaktion auf das Ermitteln, dass es sich bei dem ersten Merkmal um ein verfügbar gemachtes Merkmal handelt, dass nicht in dem ersten Satz von Merkmalen enthalten ist, wobei dem ersten Merkmal ein oder mehrere kritische Ereignisse zugehörig sind.
  • Gemäß einer oder mehreren Ausführungsformen wird ein System bereitgestellt, das eine oder mehrere Logikeinheiten aufweist. Die eine oder mehreren Logikeinheiten sind so konfiguriert, dass sie den oben offenbarten Verfahren zugehörige Funktionen und Operationen ausführen. Gemäß noch einer weiteren Ausführungsform wird ein Computerprogrammprodukt bereitgestellt, das ein computerlesbares Speichermedium mit einem computerlesbaren Programm aufweist. Das computerlesbare Programm veranlasst den Computer, wenn es auf diesem ausgeführt wird, die den oben offenbarten Verfahren zugehörigen Funktionen und Operationen auszuführen.
  • Im Folgenden werden zusätzlich zu bestimmten Alternativen eine oder mehrere der oben offenbarten Ausführungsformen ausführlich unter Bezugnahme auf die beiliegenden Figuren dargelegt. Der offenbarte Gegenstand ist jedoch nicht auf eine bestimmte offenbarte Ausführungsform beschränkt.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Nunmehr werden Ausführungsformen lediglich beispielhaft unter Bezugnahme auf die beiliegenden Zeichnungen beschrieben, wobei:
  • 1A und 1B Schaubilder von beispielhaften verschachtelten Virtualisierungsumgebungen gemäß einer Ausführungsform sind.
  • 2 ein Ablaufplan eines Verfahrens zum Freigeben von Virtualisierungsmerkmalen für eine Gast-Software gemäß einer Ausführungsform ist.
  • 3 ein Ablaufplan eines Verfahrens zum Zugreifen auf ein Virtualisierungsmerkmal gemäß einer Ausführungsform ist.
  • 4 und 5 Funktionsschaubilder von Hardware- und Softwareumgebungen sind, in denen ein System der vorliegenden Erfindung gemäß einer oder mehrerer Ausführungsformen funktionieren kann.
  • Merkmale, Elemente und Aspekte, die in verschiedenen Figuren mit denselben Bezugszeichen bezeichnet werden, stellen dieselben, gleichwertige oder ähnliche Merkmale, Elemente oder Aspekte gemäß einer oder mehreren Ausführungsformen dar.
  • DETAILLIERTE BESCHREIBUNG
  • Im Folgenden werden zahlreiche spezielle Details dargelegt, um eine ausführliche Beschreibung verschiedener Ausführungsformen bereitzustellen. Bestimmte Ausführungsformen können ohne diese speziellen Details oder mit einigen geringfügigen Änderungen umgesetzt werden. In manchen Fällen werden bestimmte Merkmale weniger detailliert beschrieben, um andere Aspekte nicht zu verschleiern. Die Detailtreue bei jedem der Elemente oder Merkmale ist nicht als Bewertung der Neuheit oder Bedeutung eines Merkmals gegenüber anderen Merkmalen auszulegen.
  • 1A zeigt eine verschachtelte Virtualisierungsumgebung, in der mehrere Hypervisor und unterschiedliche Gast-Software verschachtelt auf einer physischen Maschine ausgeführt werden. Zum Beispiel kann ein erster Hypervisor direkt auf der physischen Maschine, ein zweiter Hypervisor als erste Gast-Software auf dem ersten Hypervisor und auf dem zweiten Hypervisor eine zweite Gast-Software ausgeführt werden. In einer solchen Umgebung können Interaktionen zwischen verschiedenen Softwareebenen dazu beitragen, dass es durch Software-Virtualisierung zu Leistungseinbußen kommt.
  • Durch hardwaregestützte Virtualisierung können die durch Software-Virtualisierung bedingten Leistungseinbußen verringert werden. Bei der hardwaregestützten Virtualisierung werden ein oder mehrere Virtualisierungsmerkmale nicht durch die Software, sondern durch die physische Maschine unterstützt, sodass die Anzahl der in einer verschachtelten Virtualisierungsumgebung verursachten Unterbrechungen verringert wird. Es ist wünschenswert, Systeme zu realisieren, in denen die durch Software-Virtualisierung bedingten Leistungseinbußen durch hardwaregestützte Virtualisierungstechnologien angemessen verringert werden, wobei viele Virtualisierungsmerkmale unter Verwendung von Software realisiert werden.
  • 1B zeigt eine beispielhafte verschachtelte Virtualisierungsumgebung 100 gemäß einer Ausführungsform, die eine physische Maschine 110 und drei Virtualisierungsebenen aufweist. Die Stammebene (L0) weist einen Hypervisor 120 auf; die Ebene 1 (L1) weist einen Gast-Hypervisor 130 auf; und die Ebene 2 (L2) weist eine Gast-Software 140 auf. Der L0-Hypervisor 120 wird direkt auf der physischen Maschine 110 ausgeführt und realisiert eine VM für den L1-Gast-Hypervisor 130. Der L1-Gast-Hypervisor 130 wird auf dem L0-Hypervisor 120 ausgeführt und realisiert eine VM für den L2-Gast 140. Der L1-Gast-Hypervisor 130 und der L2-Gast 140 können jeweils mit einem Satz von Virtualisierungsmerkmalen gestartet werden. Jedes der Merkmale kann durch eine Hardware (d. h. die physische Maschine 110) oder eine Software (d. h. den zugrunde liegenden Host-Hypervisor) unterstützt werden.
  • 1B und 2 zeigen, dass der L0-Hypervisor 120 gemäß einer Ausführungsform so konfiguriert werden kann, dass er einen ersten Satz durch die physische Maschine 110 (P200) unterstützter Merkmale erkennt. Der L0-Hypervisor 120 kann den L1-Gast-Hypervisor 130 mit einem zweiten Satz von Merkmalen starten (P210). Gemäß einer Ausführungsform kann der zweite Satz von Merkmalen Merkmale enthalten, die nicht in dem ersten Satz enthalten sind, solange der L0-Hypervisor 120 so konfiguriert ist, dass er solche Merkmale emuliert.
  • Für jedes Merkmal in dem zweiten Satz, das nicht in dem ersten Satz enthalten ist (d. h. nicht durch die physische Maschine 110 unterstützt wird), macht der L0-Hypervisor 120 das Merkmal wahlweise dem L1-Hypervisor 130 verfügbar (P220). Ein in diesem Zusammenhang verwendetes Merkmal verfügbar zu machen bedeutet, dass das Merkmal durch den Hypervisor der nächsten Ebene erkennbar gemacht wird. Wenn das Merkmal dem L1-Hypervisor 130 verfügbar gemacht wird, erkennt der L1-Hypervisor 130 das Merkmal und gibt es frei, um den L2-Gast 140 auszuführen (d. h. macht das Merkmal verfügbar, wenn der L2-Gast 140 ausgeführt wird) (P230). Auf diese Weise wird das Merkmal durch den L1-Hypervisor verwendet, wobei der L1-Hypervisor die physische Maschine anweist, ein dem Merkmal zugehöriges kritisches Ereignis abzuwickeln, ohne eine Unterbrechung zu erzeugen.
  • 1B und 3 zeigen, dass die physische Maschine 110 gemäß einer Ausführungsform so konfiguriert ist, dass sie zumindest in einem L0-Modus, einem L1-Modus oder einem L2-Moduls arbeitet (P300). Als Reaktion darauf, dass der L1-Hypervisor den L2-Gast 140 startet, führt die physische Maschine 110 den L2-Gast 140 im L2-Modus aus (P310). Während die physische Maschine 110 im L2-Modus arbeitet, kann sie angewiesen werden, ein erstes Ereignis (d. h. ein kritisches Ereignis oder eine privilegierte Anweisung) auszuführen, die einem ersten Merkmal zugehörig ist (P320). Wenn die physische Maschine 110 ein Virtualisierungsmerkmal unterstützt, das erste Ereignis abzuwickeln (P330), wickelt die physische Maschine 110 das erste Ereignis ab, ohne eine Unterbrechung auszulösen (P340).
  • Anderenfalls wechselt die physische Maschine 110 in den L0-Modus, und der L0-Hypervisor 120 bearbeitet das erste Ereignis durch Emulieren des ersten Merkmals, ohne eine Unterbrechung in den L1-Modus zu verursachen (d. h. ohne Eingreifen durch den L1-Hypervisor 130) (P350). Mit anderen Worten, die Notwendigkeit, eine durch die physische Maschine 110 nicht unterstützte privilegierte Anweisung auszuführen, bewirkt eine Übergabe der Steuerung an den L0-Hypervisor 120, sodass die physische Maschine 120 wieder zur Ausführung des L0-Hypervisor 120 zurückkehrt. Da dem L1-Hypervisor 130 vorgetäuscht wird, dass das erste Merkmal vorhanden ist, besteht darüber hinaus keine Notwendigkeit für einen Wechsel zwischen dem L1- und dem L2-Modus.
  • Obwohl beim Emulieren eines Merkmals Prozessorzyklen in Anspruch genommen werden, können durch Verfügbarmachen des Merkmals für den L1-Hypervisor 130 die Leistungseinbußen deutlich verringert werden, die durch Unterbrechungen zwischen den Virtualisierungsebenen L0, L1 und L2 verursacht werden. Durch Verfügbarmachen des angeforderten Merkmals und Emulieren dieses Merkmals auf der Ebene L0 gemäß einer Ausführungsform multiplext der L0-Hypervisor wirksam eine Unterstützung des Merkmals in einer Ebene auf mehrere Virtualisierungsebenen und verringert dadurch den Umfang der Interaktionen zwischen den mehreren verschachtelten Ebenen, die anderenfalls einbezogen würden. Mit anderen Worten, die obigen Systeme und Verfahren können die Systemleistung in Fällen verbessern, in denen ein Virtualisierungsmerkmal durch die Hardware nicht unterstützt wird.
  • Gemäß einer Ausführungsart können die oben unter Bezugnahme auf 2 und 3 bereitgestellten Prozesse auf erweiterte oder verschachtelte Seitentabellen (EPT/NPT) angewendet werden. EPT/NPT ist ein hardwaregestütztes Merkmal, das eine Virtualisierung einer Speicherverwaltungseinheit (MMU) bereitstellt. Einige Prozessoren verwenden einen ausschließlich auf Software basierenden Mechanismus, der als Schattenseitentabellen bezeichnet wird, um eine Virtualisierung einer MMU bereitzustellen. Die Schattenseitentabellen können aufgrund einer Unterbrechung, die durch Seitenfehler, Seitentabellenaktualisierungen und Zugriffe auf Seitentabellen-Zeigerregister verursacht werden, zu hohen Leistungseinbußen führen.
  • Die durch Schattenseitentabellen verursachten Leistungseinbußen können verringert werden, indem der L0-Hypervisor so konfiguriert wird, dass er erkennt, ob das EPT/NPT-Merkmal durch den Prozessor unterstützt wird. Wenn das EPT/NPT-Merkmal nicht durch den Prozessor unterstützt wird, macht der L0-Hypervisor das EPT/NPT-Merkmal einem L1-Hypervisor verfügbar, und der L1-Hypervisor erkennt das EPT/NPT-Merkmal und gibt dieses zum Ausführen durch den L2-Gast frei (d. h. macht das EPT/NPT-Merkmal verfügbar, wenn der L2-Gast ausgeführt wird).
  • Während der Ausführung des L2-Gastes durch den Prozessor kann der Prozessor angewiesen werden, ein dem EPT/NPT-Merkmal zugehöriges Ereignis zu erzeugen (z. B. einen Seitenfehler, eine Seitentabellenaktualisierung, einen Zugriff auf ein Seitentabellen-Zeigerregister oder ein anderes einschlägiges Ereignis) und in den L0-Modus zu wechseln, wo der L0-Hypervisor das EPT/NPT-Merkmal durch Erzeugen einer Schattenseitentabelle emuliert, um den L2-Gast unter Verwendung einer durch den L1-Hypervisor bereitgestellten L2-Seitentabelle auszuführen. Im Vergleich zu dem Szenario, in dem der L0-Hypervisor einen ersten Satz von Schattenseitentabellen zum Ausführen des L1-Hypervisor verwendet und der L1-Hypervisor einen zweiten Satz von Schattenseitentabellen zum Ausführen des L2-Gastes verwendet, ermöglichen die oben bereitgestellten Prozesse dem L0-Hypervisor, eine MMU-Virtualisierung für den L2-Gast ohne Eingreifen durch den L1-Hypervisor bereitzustellen.
  • Gemäß weiteren Ausführungsarten können die oben unter Bezugnahme auf 2 und 3 bereitgestellten Prozesse auf Merkmale angewendet werden wie beispielsweise Stammelement-Eingabe/Ausgabe-Virtualisierung (SR-IOV), Hardware-Virtualisierungs-(VMX/SVM)Erweiterungen und Interruptneuzuordnung, ohne darauf beschränkt zu sein. Gemäß einer Ausführungsart kann der L0-Hypervisor zum Beispiel dem L1-Hypervisor eine SR-IOV-Einheit sogar dann verfügbar machen, wenn es keine solche Einheit gibt. Durch das Verfügbarmachen der Einheit kann der L0-Hypervisor zum Beispiel in die Lage versetzt werden, L2-Eingabe/Ausgabe-(E/A)Operationen direkt, ohne Eingreifen des L1-Hypervisor, abzuwickeln.
  • Gemäß einer weiteren Ausführungsart kann der L0-Hypervisor VMX/SVM-Erweiterungen dem L1-Hypervisor verfügbar machen, wenn dieser auf einem x86-Prozessor oder auf einem x86-Prozessor im unteren Bereich ohne VMX/SVM-Erweiterungen ausgeführt wird. Obwohl der L0-Hypervisor zum Virtualisieren der x86-Architektur einen älteren binären Umsetzungsmechanismus verwendet, kann dieser dem L1-Hypervisor VMX/SVM-Erweiterungen verfügbar machen. Mit einer solchen Konfiguration kann die Binärumsetzung vollständig durch den L0-Hypervisor unterstützt und verbessert werden, indem dieser ermittelt, welche durch den L2-Gast verursachten Ereignisse durch den L0-Hypervisor verwaltet werden müssen.
  • Gemäß den obigen Ausführungen können Hypervisor, die auf das Ausführen auf einer Hardware mit VMX/SVM-Erweiterungen (z. B. KVM und Hyper-V) beschränkt sind, als Gast-Hypervisor auf einer Plattform ohne die VMX/SVM-Erweiterungen ausgeführt werden. Wenn VMX/SVM-Erweiterungen aktualisiert werden, um das Umlenken von Interrupts direkt an einen Gast zu unterstützen, kann der L0-Hypervisor diese Merkmale ferner einem L1-Hypervisor verfügbar machen, um Interrupts ohne Eingreifen durch den L1-Hypervisor direkt dem L2-Gast zuzuführen.
  • Gemäß verschiedenen Ausführungsformen kann der beanspruchte Gegenstand der Erfindung als Kombination sowohl von Hardware- als auch Softwareelementen oder alternativ entweder vollständig in Form von Hardware oder vollständig in Form von Software realisiert werden. Ferner können hierin offenbarte Datenverarbeitungssysteme und Programmsoftware eine gesteuerte Datenverarbeitungsumgebung aufweisen, die als Hardwarekomponenten oder Logikcode dargestellt werden können, der zum Umsetzen von Verfahren und Prozessen ausgeführt wird, die die hierin angestrebten Ergebnisse liefern. Die Verfahren und Prozesse wandeln, wenn sie durch ein Universal-Datenverarbeitungssystem oder eine entsprechende Maschine ausgeführt werden, die Universalmaschine in eine Spezialmaschine um.
  • Die Umgebung eines Datenverarbeitungssystems gemäß einer beispielhaften Ausführungsform kann unter Bezugnahme auf 4 und 5 aus einer Hardwareumgebung 1110 und einer Softwareumgebung 1120 bestehen. Die Hardwareumgebung 1110 kann Logikeinheiten, Schaltungen oder andere Vorrichtungen und Ausrüstungen aufweisen, die eine Ausführungsumgebung für die Komponenten der Softwareumgebung 1120 bereitstellen. Die Softwareumgebung 1120 wiederum kann die ausführbaren Anweisungen, darunter die zugrunde liegenden Betriebseinstellungen und Konfigurationen für die verschiedenen Komponenten der Hardwareumgebung 1110 bereitstellen.
  • Die hierin offenbarte Anwendungssoftware und der Logikcode können unter Bezugnahme auf 4 in Form eines computerlesbaren Codes realisiert werden, der auf einem oder mehreren Datenverarbeitungssystemen ausgeführt wird, die durch die beispielhafte Hardwareumgebung 1110 dargestellt werden. Die veranschaulichte Hardwareumgebung 1110 kann einen Prozessor 1101 aufweisen, der durch einen Systembus 1100 mit einem oder mehreren Speicherelementen verbunden ist. Die Speicherelemente können zum Beispiel einen lokalen Speicher 1102, ein Speichermedium 1106, einen Cachespeicher 1104 oder andere durch einen Computer nutzbare oder computerlesbare Medien aufweisen. Im Rahmen dieser Offenbarung kann ein durch einen Computer nutzbares oder computerlesbares Speichermedium ein beliebiges zum Aufzeichnen fähiges Produkt beinhalten, das dazu verwendet werden kann, einen Programmcode zu enthalten, zu speichern, zu verbreiten, weiterzuleiten oder zu transportieren.
  • Bei einem computerlesbaren Speichermedium kann es sich um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitermedium, System, eine entsprechende Vorrichtung oder Einheit handeln. Das computerlesbare Speichermedium kann auch in einem Verbreitungsmedium uneingeschränkt in dem Maße realisiert werden, dass eine solche Ausführungsart zwingend als Gegenstand der Erfindung anzusehen ist. Als Beispiele eines computerlesbaren Speichermediums können je nach Eignung ein Halbleiterspeicher, ein Magnetband, eine wechselbare Computerdiskette, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), eine starre Magnetplatte, eine optische Platte oder eine Trägerwelle infrage kommen. Neueste Beispiele von optischen Platten betreffen einen Compact Disc-Nur-Lese-Speicher (CD-ROM), eine Lese/Schreib-Compact Disc (CD-R/W), eine digitale Videoplatte (DVD), eine hochauflösende Videoplatte (HD-DVD) oder eine Blue-rayTM-Disc.
  • Gemäß einer Ausführungsform lädt der Prozessor 1101 ausführbaren Code vom Speichermedium 1106 in den lokalen Speicher 1102. Der Cachespeicher 1104 optimiert die Verarbeitungszeit durch Bereitstellen von temporärem Speicher, der die Anzahl der Ladeoperationen für den auszuführenden Code zu verringern hilft. Eine oder mehrere Benutzerschnittstelleneinheiten 1105 (z. B. Tastatur, Zeigeeinheit usw.) und ein Anzeigebildschirm 1107 können entweder direkt oder zum Beispiel über eine zwischengeschaltete E/A-Steuereinheit 1103 mit den anderen Elementen in der Hardwareumgebung 1110 verbunden sein. Eine Datenübertragungs-Schnittstelleneinheit 1108 wie beispielsweise ein Netzadapter kann bereitgestellt werden, um die Hardwareumgebung 1110 in die Lage zu versetzen, über zwischengeschaltete private oder öffentliche Netze (z. B. das Internet) Daten mit lokalen oder räumlich entfernten Datenverarbeitungssystemen, Druckern und Speichereinheiten auszutauschen. Leitungsgebundene oder drahtlose Modems und Ethernet-Karten stellen lediglich einige beispielhafte Typen von Netzadaptern dar.
  • Zu beachten ist, dass die Hardwareumgebung 1110 bei bestimmten Ausführungsarten möglicherweise einige oder alle der obigen Komponenten enthält oder zusätzliche Komponenten aufweisen kann, um eine zusätzliche Funktionalität oder ein zusätzliches Dienstprogramm bereitzustellen. Je nach vorgesehenem Verwendungszweck und Konfiguration kann es sich bei der Hardwareumgebung 1110 um einen Arbeitsplatz- oder Laptop-Computer oder eine wahlweise in ein eingebettetes System integrierte Datenverarbeitungseinheit wie beispielsweise eine Set-Top-Box, einen persönlichen digitalen Assistenten (PDA), eine persönliche Medienwiedergabeeinheit, eine mobile Datenübertragungseinheit (z. B. ein Mobiltelefon) oder andere ähnliche Hardwareplattformen handeln, die über Fähigkeiten zur Datenverarbeitung oder Datenspeicherung verfügen.
  • Gemäß einigen Ausführungsformen fungiert die Datenübertragungsschnittstelle 1108 als Datenübertragungsanschluss, um ein Mittel zum Austauschen von Daten mit einem oder mehreren Datenverarbeitungssystemen durch Senden und Empfangen von digitalen, elektrischen, elektromagnetischen oder optischen Signalen bereitzustellen, die analoge oder digitale Datenströme transportieren, die verschiedene Arten von Informationen darstellen, unter anderem Programmcode. Die Datenübertragung kann mittels eines lokalen oder eines fernen Netzwerks, alternativ über Funk oder ein anderes Medium erfolgen, darunter, ohne darauf beschränkt zu sein, die Verbreitung über eine Trägerwelle.
  • Die hierin bereitgestellten Software-Elemente, die auf den veranschaulichten Hardware-Elementen ausgeführt werden, sind gemäß logischen oder funktionellen Beziehungen definiert, die ihrem Wesen nach beispielhaft sind. Dabei ist jedoch zu beachten, dass die entsprechenden Verfahren, die durch die beispielhaften Software-Elemente realisiert werden, auch in den Hardware-Elementen zum Beispiel durch konfigurierte und programmierte Prozessoren, anwendungsspezifische integrierte Schaltungen (ASICs), feldprogrammierbare Gate-Arrays (FPGAs) und digitale Signalprozessoren (DSPs) codiert sein können.
  • Die Softwareumgebung 1120 von 5 kann allgemein in zwei Klassen eingeteilt werden, die eine System-Software 1121 und eine Anwendungs-Software 1122 aufweisen und auf einer oder mehreren Hardwareumgebungen 1110 ausgeführt werden. Gemäß einer Ausführungsform können die hier offenbarten Verfahren und Prozesse als System-Software 1121, Anwendungs-Software 1122 oder eine Kombination derselben realisiert werden. Die System-Software 1121 kann Steuerprogramme wie beispielsweise ein Betriebssystem (OS) oder ein Datenverwaltungssystem aufweisen, das einen oder mehrere Prozessoren 1101 (z. B. Mikrocontroller) in der Hardwareumgebung 1110 anweisen kann, wie sie funktionieren und Daten verarbeiten sollen. Die Anwendungs-Software 1122 kann, ohne darauf beschränkt zu sein, Programmcode, Datenstrukturen, Firmware, residente Software, Mikrocode oder eine beliebige andere Form von Informationen oder Routinen aufweisen, die durch einen Prozessor 1101 gelesen, analysiert oder ausgeführt werden können.
  • Mit anderen Worten, die Anwendungs-Software 1122 kann als Programmcode realisiert werden, der in ein Computerprogrammprodukt in Form eines durch Computer ausführbaren oder computerlesbaren Speichermediums eingebettet ist, das einen Programmcode zur Verwendung durch oder in Verbindung mit einem Computer oder einem beliebigen System zum Ausführen von Anweisungen bereitstellt. Darüber hinaus kann die Anwendungs-Software 1122 ein oder mehrere Computerprogramme aufweisen, die auf der Grundlage einer System-Software 1121 ausgeführt werden, nachdem sie von Speichermedien 1106 in den lokalen Speicher 1102 geladen wurden. In einer Client-Server-Architektur kann die Anwendungs-Software 1122 Client-Software und Server-Software aufweisen. Gemäß einer Ausführungsform kann die Client-Software zum Beispiel auf dem Client-Datenverarbeitungssystem ausgeführt werden, das von einem Server-Datenverarbeitungssystem verschieden und trennbar ist, auf dem die Server-Software ausgeführt wird.
  • Die Softwareumgebung 1120 kann auch eine Browser-Software 1126 zum Zugreifen auf Daten aufweisen, die über lokale oder ferne Datenverarbeitungsnetze verfügbar sind. Ferner kann die Softwareumgebung 1120 eine Benutzeroberfläche 1124 (z. B. eine grafische Benutzeroberfläche (GUI)) zum Empfangen von Benutzerbefehlen und -daten aufweisen. Es wird wiederholt darauf hingewiesen, dass die oben beschriebenen Hardware- und Software-Architekturen und -umgebungen lediglich als Beispiel dienen. Demgemäß können eine oder mehrere Ausführungsformen auf einem beliebigen Typ von Systemarchitektur, funktioneller oder logischer Plattform oder Verarbeitungsumgebung umgesetzt werden.
  • Ferner sollte klar sein, dass der Logikcode, die Programme, Module, Prozesse, Verfahren und die Reihenfolge, in der die betreffenden Prozesse jedes Verfahrens ausgeführt werden, lediglich als Beispiel dienen. Je nach Ausführungsart können die Prozesse oder alle zugrunde liegenden Teilprozesse und Verfahren in einer beliebigen Reihenfolge oder gleichzeitig ausgeführt werden, sofern aus der vorliegenden Offenbarung nichts anderes hervorgeht. Sofern nicht anderweitig ausdrücklich angegeben, ist die Definition von Logikcode in Verbindung mit dieser Offenbarung nicht auf eine bestimmte Programmiersprache bezogen oder beschränkt und kann ein oder mehrere Module aufweisen, die auf einem oder mehreren Prozessoren in verteilten, nicht verteilten, Einzelprozessor- oder Mehrprozessorumgebungen ausgeführt werden können.
  • Dem Fachmann ist einsichtig, dass eine Softwareumgebung Firmware, residente Software, Mikrocode usw. beinhalten kann. Bestimmte Komponenten, die Software oder Hardware enthalten oder Software- und Hardware-Aspekte in sich vereinen, können hierin als „Schaltung”, „Modul” oder „System” bezeichnet werden. Darüber hinaus kann der Gegenstand der Erfindung als Computerprogrammprodukt umgesetzt werden, das in einem oder mehreren computerlesbaren Speichermedien mit einem darauf verkörperten computerlesbaren Programmcode realisiert ist. Es kann eine beliebige Kombination von einem oder mehreren computerlesbaren Speichermedien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder um ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich zum Beispiel, ohne darauf beschränkt zu sein, um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine entsprechende Vorrichtung oder Einheit oder eine beliebige geeignete Kombination derselben handeln.
  • In Verbindung mit diesem Dokument kann es sich bei einem computerlesbaren Speichermedium um ein beliebiges materielles Medium handeln, das ein Programm zum Verwenden durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen enthalten oder speichern kann. Ein computerlesbares Signalmedium kann ein weitergeleitetes Datensignal mit einem darin verkörperten computerlesbaren Programmcode beinhalten, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Ein solches weitergeleitetes Signal kann eine Vielfalt von Formen annehmen, darunter, ohne darauf beschränkt zu sein, elektromagnetisch, optisch oder eine beliebige geeignete Kombination derselben. Bei einem computerlesbaren Signalmedium kann es sich um ein beliebiges computerlesbares Medium handeln, das kein computerlesbares Speichermedium ist und das ein Programm zum Verwenden durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen übertragen, weiterleiten oder transportieren kann.
  • Ein auf einem computerlesbaren Speichermedium verkörperter Programmcode kann unter Verwendung eines beliebigen geeigneten Mediums übertragen werden, darunter, ohne darauf beschränkt zu sein, drahtlos, leitungsgebunden, Lichtwellenleiter, HF usw. oder eine beliebige geeignete Kombination derselben. Ein Computerprogrammcode zum Ausführen der offenbarten Operationen kann in einer beliebigen Kombination einer oder mehrerer Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie beispielsweise Java, Smalltalk, C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie beispielsweise die Programmiersprache „C” oder ähnliche Programmiersprachen.
  • Der Programmcode kann vollständig auf dem Computer eines Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. Im letzteren Szenario kann der ferne Computer mit dem Computer des Benutzers durch einen beliebigen Typ von Netzwerk verbunden sein, darunter ein lokales Netz (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel durch das Internet unter Verwendung eines Internetdienstanbieters).
  • Bestimmte Ausführungsformen werden unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen offenbart. Es ist klar, dass jeder Block der Ablaufpläne und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch Anweisungen eines Computerprogramms umgesetzt werden können. Diese Anweisungen eines Computerprogramms können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zugeführt werden, um eine Maschine derart zu erzeugen, dass die durch den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zum Umsetzen der in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaubildes angegebenen Funktionen/Aktionen erzeugen.
  • Diese Anweisungen eines Computerprogramms können auch in einem computerlesbaren Speichermedium gespeichert sein, das einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten veranlassen kann, in einer bestimmten Weise derart zu funktionieren, dass die in dem computerlesbaren Speichermedium gespeicherten Anweisungen ein Herstellungsprodukt erzeugen, das Anweisungen enthält, welche die in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaltbildes angegebenen Funktionen/Aktionen umsetzen.
  • Die Anweisungen des Computerprogramms können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um eine Folge auf dem Computer, einer anderen programmierbaren Vorrichtung oder anderen Einheiten auszuführender Arbeitsschritte zu veranlassen, um einen computergestützten Prozess derart zu erzeugen, dass die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführten Anweisungen Prozesse zum Umsetzen der in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaubildes angegebenen Funktionen/Aktionen umsetzen.
  • Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und Arbeitsweise möglicher Ausführungsarten von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen. Demgemäß kann jeder Block in dem Ablaufplan oder in den Blockschaubildern ein Modul, ein Segment oder einen Abschnitt eines Codes darstellen, der eine oder mehrere ausführbare Anweisungen zum Umsetzen der angegebenen logischen Funktionen aufweist. Zu beachten ist ferner, dass gemäß einigen alternativen Ausführungsarten die in dem Block angegebenen Funktionen in einer von den Figuren abweichenden Reihenfolge auftreten können.
  • Zum Beispiel können zwei nacheinander gezeigte Blöcke je nach Funktionalität in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können mitunter in der umgekehrten Reihenfolge ausgeführt werden. Ferner ist zu beachten, dass jeder Block in den Blockschaubildern und/oder dem Ablaufplan und Kombinationen von Blöcken in den Blockschaubildern und/oder dem Ablaufplan durch spezielle Hardwaresysteme oder Kombinationen von spezieller Hardware und Computeranweisungen umgesetzt werden können, die die angegebenen Funktionen oder Aktionen ausführen.
  • Der beanspruchte Gegenstand der Erfindung ist hierin unter Bezugnahme auf ein oder mehrere Merkmale oder Ausführungsformen bereitgestellt worden. Dem Fachmann ist klar und einsichtig, dass ungeachtet der detaillierten Darlegung der hier bereitgestellten beispielhaften Ausführungsformen Änderungen und Modifikationen an den Ausführungsformen vorgenommen werden können, ohne den allgemein beabsichtigten Schutzumfang einzuschränken oder von diesem abzuweichen. Diese sowie verschiedene weitere Anpassungen und Kombinationen der hierin bereitgestellten Ausführungsformen liegen innerhalb des Schutzumfangs des offenbarten Gegenstands der Erfindung, der durch die Ansprüche und alle ihre Entsprechungen definiert wird.

Claims (16)

  1. Computergestütztes Verfahren zum Verwalten einer verschachtelten Virtualisierungsumgebung, wobei das Verfahren aufweist: Erkennen eines ersten Satzes durch eine Hardwareeinheit unterstützter Merkmale durch eine erste Software, wobei die erste Software auf der Hardwareeinheit ausgeführt wird; Erkennen eines zweiten Satzes von Merkmalen, die auf einer zweiten Software ausgeführt werden, wobei die zweite Software durch die erste Software mit dem zweiten Satz von Merkmalen gestartet wird; Verfügbarmachen eines oder mehrerer Merkmale in dem zweiten Satz von Merkmalen für die zweite Software, wobei die zweite Software die verfügbar gemachten Merkmale erkennt und für eine durch die zweite Software gestartete dritte Software freigibt; und Emulieren eines ersten Merkmals ohne Verursachen einer Unterbrechung derart, dass die Steuerung an die zweite Software übertragen wird, als Reaktion auf das Feststellen, dass es sich bei dem ersten Merkmal um ein verfügbar gemachtes Merkmal handelt, das nicht in dem ersten Satz von Merkmalen enthalten ist, wobei dem ersten Merkmal ein oder mehrere kritische Ereignisse zugehörig sind.
  2. Verfahren nach Anspruch 1, wobei die Hardwareeinheit die erste Software in einem ersten Modus, die zweite Software in einem zweiten Modus und die dritte Software in einem dritten Modus ausführt.
  3. Verfahren nach Anspruch 2, wobei die Hardwareeinheit als Reaktion auf das Starten der dritten Software durch die zweite Software die dritte Software in dem dritten Modus ausführt.
  4. Verfahren nach Anspruch 3, wobei die Hardwareeinheit als Reaktion darauf, dass sie angewiesen wird, ein dem ersten Merkmal zugehöriges kritisches Ereignis zu erzeugen, in den ersten Modus wechselt.
  5. Verfahren nach Anspruch 3, wobei die Hardwareeinheit als Reaktion darauf, dass sie angewiesen wird, ein kritisches Ereignis zu erzeugen, das durch das zweite Merkmal abgewickelt wird, in den ersten Modus wechselt.
  6. Verfahren nach Anspruch 5, wobei die Hardwareeinheit als Reaktion auf das Feststellen, dass das erste Merkmal nicht in dem ersten Satz von Merkmalen enthalten ist, in den ersten Modus wechselt.
  7. Verfahren nach Anspruch 6, wobei die Hardwareeinheit in den ersten Modus wechselt, sodass die Steuerung an die erste Software übertragen wird.
  8. Verfahren nach einem der vorhergehenden Ansprüche, wobei es sich bei dem ersten Merkmal um ein Virtualisierungsmerkmal für die Speicherverwaltung handelt.
  9. Verfahren nach einem der Ansprüche 1 bis 7, wobei es sich bei dem ersten Merkmal um ein Erweiterungsmerkmal für die Hardwarevirtualisierung handelt.
  10. Verfahren nach einem der Ansprüche 1 bis 7, wobei es sich bei dem ersten Merkmal um ein Interrupt-Virtualisierungsmerkmal handelt.
  11. Computergestütztes System zum Verwalten einer verschachtelten Virtualisierungsumgebung, wobei das System aufweist: eine erste Software, die dazu dient, einen ersten Satz durch eine Hardwareeinheit unterstützter Merkmale zu erkennen, wobei die erste Software auf der Hardwareeinheit ausführbar ist; eine Logikeinheit, die dazu dient, einen zweiten Satz von Merkmalen zu erkennen, die auf einer zweiten Software ausgeführt werden, wobei die zweite Software durch die erste Software mit dem zweiten Satz von Merkmalen gestartet wird; eine Logikeinheit, die dazu dient, ein oder mehrere Merkmale in dem zweiten Satz von Merkmalen für die zweite Software verfügbar zu machen, wobei die zweite Software dazu dient, verfügbar gemachten Merkmale zu erkennen und für eine durch die zweite Software gestartete dritte Software freizugeben; und eine Logikeinheit, die dazu dient, ein erstes Merkmal zu emulieren, ohne eine Unterbrechung zu verursachen, sodass die Steuerung an die zweite Software übertragen wird, als Reaktion auf das Feststellen, dass es sich bei dem ersten Merkmal um ein verfügbar gemachtes Merkmal handelt, das nicht in dem ersten Satz von Merkmalen enthalten ist; wobei dem ersten Merkmal ein oder mehrere kritische Ereignisse zugehörig sind.
  12. System nach Anspruch 11, wobei die Hardwareeinheit dazu dient, die erste Software in einem ersten Modus, die zweite Software in einem zweiten Modus und die dritte Software in einem dritten Modus auszuführen.
  13. System nach Anspruch 12, wobei die Hardwareeinheit dazu dient, als Reaktion auf das Starten der dritten Software durch die zweite Software die dritte Software in dem dritten Modus auszuführen.
  14. System nach Anspruch 13, wobei die Hardwareeinheit dazu dient, als Reaktion darauf, dass sie angewiesen wird, ein dem ersten Merkmal zugehöriges kritisches Ereignis zu erzeugen, in den ersten Modus zu wechseln.
  15. System nach Anspruch 13, wobei die Hardwareeinheit dazu dient, als Reaktion darauf, dass sie angewiesen wird, ein kritisches Ereignis zu erzeugen, das durch das zweite Merkmal abgewickelt wird, in den ersten Modus zu wechseln.
  16. Computerlesbares Speichermedium zum Speichern eines Logikcodes, der auf einer Datenverarbeitungsmaschine ausführbar ist, wobei das Ausführen des Logikcodes die Datenverarbeitungsmaschine veranlasst, das Verfahren nach einem der Ansprüche 1 bis 10 auszuführen.
DE112011103845.3T 2010-11-18 2011-10-26 Verwalten einer verschachtelten virtualisierten Umgebung Active DE112011103845B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/948,796 2010-11-18
US12/948,796 US8458698B2 (en) 2010-11-18 2010-11-18 Improving performance in a nested virtualized environment
PCT/EP2011/068714 WO2012065817A1 (en) 2010-11-18 2011-10-26 Managing a nested virtualized environment

Publications (2)

Publication Number Publication Date
DE112011103845T5 true DE112011103845T5 (de) 2013-10-31
DE112011103845B4 DE112011103845B4 (de) 2020-02-20

Family

ID=44872339

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112011103845.3T Active DE112011103845B4 (de) 2010-11-18 2011-10-26 Verwalten einer verschachtelten virtualisierten Umgebung

Country Status (5)

Country Link
US (1) US8458698B2 (de)
CN (1) CN103210373B (de)
DE (1) DE112011103845B4 (de)
GB (1) GB2499942B (de)
WO (1) WO2012065817A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130145363A1 (en) * 2011-12-05 2013-06-06 Ravello Systems Ltd. System and method thereof for running an unmodified guest operating system in a para-virtualized environment
WO2013091221A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Enabling efficient nested virtualization
US9292316B2 (en) * 2012-03-01 2016-03-22 International Business Machines Corporation Cloud of virtual clouds for increasing isolation among execution domains
US9152450B2 (en) * 2013-03-12 2015-10-06 International Business Machines Corporation Offloading service requests to a second guest hypervisor in a logical partition shared by a plurality of guest hypervisors
US9342343B2 (en) * 2013-03-15 2016-05-17 Adventium Enterprises, Llc Wrapped nested virtualization
US9798567B2 (en) 2014-11-25 2017-10-24 The Research Foundation For The State University Of New York Multi-hypervisor virtual machines
CN107220074B (zh) * 2016-03-21 2020-10-20 阿里巴巴集团控股有限公司 对支撑层软件功能的访问、升级方法及装置
US10942757B2 (en) * 2017-02-27 2021-03-09 Red Hat, Inc. Virtual machine security through guest-side emulation
US11880704B2 (en) 2020-06-24 2024-01-23 Red Hat, Inc. Nested virtual machine support for hypervisors of encrypted state virtual machines
US11900142B2 (en) * 2021-06-16 2024-02-13 Red Hat, Inc. Improving memory access handling for nested virtual machines
US11816363B2 (en) 2021-11-04 2023-11-14 International Business Machines Corporation File based virtual disk management

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7191440B2 (en) 2001-08-15 2007-03-13 Intel Corporation Tracking operating system process and thread execution and virtual machine execution in hardware or in a virtual machine monitor
US20050076186A1 (en) 2003-10-03 2005-04-07 Microsoft Corporation Systems and methods for improving the x86 architecture for processor virtualization, and software systems and methods for utilizing the improvements
US7685635B2 (en) * 2005-03-11 2010-03-23 Microsoft Corporation Systems and methods for multi-level intercept processing in a virtual machine environment
US9785485B2 (en) * 2005-07-27 2017-10-10 Intel Corporation Virtualization event processing in a layered virtualization architecture
US8327353B2 (en) * 2005-08-30 2012-12-04 Microsoft Corporation Hierarchical virtualization with a multi-level virtualization mechanism
US8479195B2 (en) 2007-05-16 2013-07-02 Vmware, Inc. Dynamic selection and application of multiple virtualization techniques
US8151264B2 (en) * 2007-06-29 2012-04-03 Intel Corporation Injecting virtualization events in a layered virtualization architecture
US8180944B2 (en) * 2009-01-26 2012-05-15 Advanced Micro Devices, Inc. Guest interrupt manager that records interrupts for guests and delivers interrupts to executing guests
US8359422B2 (en) * 2009-06-26 2013-01-22 Vmware, Inc. System and method to reduce trace faults in software MMU virtualization
US8479196B2 (en) * 2009-09-22 2013-07-02 International Business Machines Corporation Nested virtualization performance in a computer system
US20110153909A1 (en) * 2009-12-22 2011-06-23 Yao Zu Dong Efficient Nested Virtualization

Also Published As

Publication number Publication date
GB201309929D0 (en) 2013-07-17
US8458698B2 (en) 2013-06-04
CN103210373B (zh) 2016-10-12
DE112011103845B4 (de) 2020-02-20
US20120131571A1 (en) 2012-05-24
WO2012065817A1 (en) 2012-05-24
GB2499942A (en) 2013-09-04
GB2499942B (en) 2019-11-13
CN103210373A (zh) 2013-07-17

Similar Documents

Publication Publication Date Title
DE112011103845B4 (de) Verwalten einer verschachtelten virtualisierten Umgebung
DE112011103411B4 (de) Einheitenemulation in einer virtualisierten Datenverarbeitungsumgebung
DE112012000883T5 (de) Unterstützung mehrerer Ebenen in einer verschachtelten Virtualisierungsumgebung
DE102012218379B4 (de) Paravirtualisierte virtuelle GPU
DE112012005209T5 (de) Brückenfunktion zwischen Virtual Machine Monitor und Bare-Metal-Bootvorgang
DE102014003798B4 (de) Verfahren zum Booten eines heterogenen Systems und Präsentieren einer symmetrischen Kernansicht
DE112011100323T5 (de) Architekturübergreifende Migration virtueller Maschinen
DE112015006934T5 (de) Verschachtelte Virtualisierung für virtuelle Maschinenexits
DE102018115670A1 (de) Technologien für die Ausführung von nicht vertrauenswürdigem Code mit Prozessor-Sandbox-Unterstützung
DE112016004297T5 (de) Technologien für mehrstufige virtualisierung
DE102014003690A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
DE112013003743T5 (de) Beschleunigte spurübergreifende Vektorreduzierungsbefehle
DE112016005571T5 (de) Aufrufergeschützte stapelrücksprungadresse in einer hardware-verwalteten stapelarchitektur
DE102006061939A1 (de) Verfahren und Vorrichtung zum Zugriff auf eine speicherabgebildete Vorrichtung durch einen Gast
DE112013000656T5 (de) System und Verfahren zum Verringern der Speichernutzung durch optimales Platzieren von virtuellen Maschinen in einem virtualisierten Rechenzentrum
DE112011101929T5 (de) Aktivieren der Steuerung eines Hypervisor in einer Cloud-Datenverarbeitungsumgebung
DE102014003705A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
DE112012000635T5 (de) Dynamische Speicherverwaltung in einer virtualisierten Datenverarbeitungsumgebung
DE112004001652B4 (de) Vektorieren eines Interrupt oder einer Ausnahme bei Wiederaufnahme des Betriebes einer virtuellen Maschine
DE112016005823T5 (de) Überwachen des betriebs eines prozessors
DE102018209205A1 (de) Datenspeicher mit intelligentem Speicher oder Ladeverfahren und -vorrichtung
DE112018005898T5 (de) Dynamische bereitstellung von software-funktionen
DE202017007430U1 (de) Erkennen von Bussperrbedingungen und Vermeiden von Bussperren
DE102012217315A1 (de) Verwenden von nativen Routinen an Stelle von emulierten Routinen in einer emulierten Anwendung
DE112019006898T5 (de) Dynamisches umschalten zwischen ept- und schattenseitentabellen zur laufzeitprozessorverifikation

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final