DE112019007482T5 - Verfahren, systeme, fertigungartikel und vorrichtungen zur steuerung von adressraumisolierung in einer virtuellen maschine - Google Patents

Verfahren, systeme, fertigungartikel und vorrichtungen zur steuerung von adressraumisolierung in einer virtuellen maschine Download PDF

Info

Publication number
DE112019007482T5
DE112019007482T5 DE112019007482.2T DE112019007482T DE112019007482T5 DE 112019007482 T5 DE112019007482 T5 DE 112019007482T5 DE 112019007482 T DE112019007482 T DE 112019007482T DE 112019007482 T5 DE112019007482 T5 DE 112019007482T5
Authority
DE
Germany
Prior art keywords
ept
gpa
width value
memory
address
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.)
Pending
Application number
DE112019007482.2T
Other languages
English (en)
Inventor
Kun Tian
Jun Tian
Yu Zhang
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE112019007482T5 publication Critical patent/DE112019007482T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

Es werden Verfahren, Vorrichtungen, Systeme und Fertigungsartikel zur Steuerung von Adressraumisolierung in einer virtuellen Maschine offenbart. Eine beispielhafte Vorrichtung umfasst einen Adressbreitenanpasser, um einen Speicherbreitenwert zu identifizieren, der einem Gastspeicher entspricht, der einer virtuellen Maschine (VM) zugeordnet ist, und um einen erweiterten emulierten Speicherbreitenwert zu erzeugen. Die beispielhafte Vorrichtung umfasst auch einen Speicherspiegelmanager, um einen ersten Physische-Gastadresse- (GPA) Bereich basierend auf dem Speicherbreitenwert zu erzeugen und einen zweiten GPA-Bereich basierend auf dem erweiterten emulierten Speicherbreitenwert zu erzeugen. Die beispielhafte Vorrichtung umfasst auch einen EPT-Erzeuger zum Erzeugen von Root-Paging-Strukturen eines ersten Typs von EPT mit jeweiligen Adressen innerhalb des ersten GPA-Bereichs und zum Erzeugen von Root-Paging-Strukturen eines zweiten Typs von EPT mit jeweiligen Adressen innerhalb (a) des ersten GPA-Bereichs und (b) des zweiten GPA-Bereichs.

Description

  • GEBIET DER OFFENBARUNG
  • Diese Offenbarung bezieht sich allgemein auf Prozessoren und genauer auf Verfahren, Systeme, Fertigungsartikel und Vorrichtungen zur Steuerung der Adressraumisolierung in einer virtuellen Maschine.
  • HINTERGRUND
  • Der Prozessorbetrieb umfasst einen Benutzermodus für Programmoperationen, wie z. B. das Speichern und/oder Abrufen von Informationen aus dem Speicher. Der Prozessorbetrieb umfasst jedoch auch einen Kernel-Modus für Systemaufgaben, die einen relativ höheren Grad an Sensibilität und/oder Risiko aufweisen, falls solche Kernel-Modus-Adressinformationen an eine nicht autorisierte Einheit offengelegt würden.
  • Figurenliste
    • 1 ist eine schematische Darstellung einer Beispielplattform, umfassend einen Beispiel-Adressraumisolator und eine Beispiel-Kontextwechsel-Engine zur Steuerung der Adressraumisolierung in einer virtuellen Maschine in einer Weise, die mit den Lehren dieser Offenbarung übereinstimmt.
    • 2A ist eine Darstellung einer Beispielimplementierung des Adressraumisolators von 1.
    • 2B ist eine Darstellung einer Beispielimplementierung der Kontextwechsel-Engine von 1.
    • 3 stellt eine beispielhafte Seitentabellen-Abbildung dar.
    • 4-6, 7A und 7B sind Flussdiagramme, die beispielhafte maschinenlesbare Anweisungen repräsentieren, die ausgeführt werden können, um die Beispielplattform von 1, die beispielhafte Abbildung von 3, den beispielhaften Adressraumisolator von 1 und/oder 2A und/oder die beispielhafte Kontextwechsel-Engine von 1 und/oder 2B zu implementieren, um die Adressraumisolierung in einer virtuellen Maschine zu steuern.
    • 8 ist ein Blockdiagramm einer beispielhaften Verarbeitungsplattform, die strukturiert ist, um die Anweisungen von 4-6, 7A und 7B auszuführen, um die beispielhafte Abbildung von 3, den beispielhaften Adressraumisolator von 1 und/oder 2A und/oder die beispielhafte Kontextwechsel-Engine von 1 und/oder 2B zu implementieren.
  • Die Figuren sind nicht maßstabsgetreu. Allgemein können die gleichen Bezugszeichen überall in der/den Zeichnung(en) und der beiliegenden Beschreibung verwendet werden, um auf dieselben oder gleichen Teile Bezug zu nehmen.
  • Die Bezeichnungen „erste/r/s“, „zweite/r/s“, „dritte/r/s“ etc. werden hierin verwendet, wenn mehrere Elemente oder Komponenten identifiziert werden, auf die getrennt Bezug genommen werden kann. Sofern nicht anders angegeben oder basierend auf ihrem Verwendungskontext verstanden, sollen solche Bezeichnungen keine Bedeutung von Priorität, physischer Reihenfolge oder Anordnung in einer Liste oder zeitlicher Ordnung unterstellen, sondern werden lediglich als Etiketten verwendet, um auf mehrere Elemente oder Komponenten separat zu verweisen, um die offenbarten Beispiele leichter verständlich zu machen. Bei einigen Beispielen kann die Bezeichnung „erste/r/s“ verwendet werden, um auf ein Element in der detaillierten Beschreibung zu verweisen, während auf dasselbe Element in einem Anspruch mit einer unterschiedlichen Bezeichnung wie „zweite/r/s“ oder „dritte/r/s“ verwiesen werden kann. In solchen Fällen versteht es sich, dass solche Bezeichnungen lediglich der Einfachheit halber verwendet werden, um auf mehrere Elemente oder Komponenten zu verweisen.
  • DETAILLIERTE BESCHREIBUNG
  • In den letzten Jahren haben Hacker immer häufiger Exploits auf Prozessoren versucht. Die meisten modernen Betriebssysteme (OSs; operating systems) (z. B. Linux) verwenden Benutzeradressraum und Kernel-Adressraum gemeinschaftlich in einer einzigen Seitentabelle für jeden laufenden Prozess auf einer Plattform. Eine Seitentabelle, wie sie hier verwendet wird, ist definiert als eine Datenstruktur, die mit einem und/oder durch ein virtuelles Speichersystem verwendet wird, um irgendeine Anzahl von Adressabbildungen zwischen virtuellen Adressen und physischen Adressen zu speichern. Der Zugriff auf den Benutzeradressraum und/oder den Kernel-Adressraum beruht auf Hardware-Speichermanagementeinheiten (MMUs; memory management units), um eine ordnungsgemäße Berechtigungskontrolle durchzusetzen, sodass Benutzermodus-Anweisungen nicht auf sensible Kerneldaten zugreifen können, indem sie virtuelle Adressen (VAs) im Kernel-Modus verwenden.
  • Als Meltdown und Spectre bekannte Malware hat eine Isolierungsgrenze zwischen dem Benutzerraum und dem Kernel-Raum der Prozessoraktivität durchbrochen, wodurch eine potenzielle Anfälligkeit freigelegt wird. Solche Anfälligkeiten können es unbefugten Prozessen ermöglichen, Daten von privilegierten Kernel- oder anderen Prozessen zu lesen, was besonders gefährlich für Plattformen (z. B. Cloud-Plattformen) ist, die virtuelle Maschinen (VMs) unterstützen. Die im Januar 2018 entdeckte Meltdown-Malware ermöglicht es böswilligen Benutzeranwendungen, Inhalte des Kernel-Speichers zu stehlen.
  • Ansprechend auf solche Bedrohungen wurden nicht triviale und ressourcenintensive Patches implementiert, um getrennte Seitentabellen für den Benutzermodus und den Kernel-Modus anzubieten. Ein Beispiel-Patch ist Kernel Page Table Isolation (KPTI). Wenn sie auf eine Plattform angewendet wird, stoppt KPTI Kernel-Speicherlecks von böswilligen Benutzerprozessen, indem sie Seitentabellen für den Benutzermodus und den Kernel-Modus trennt. Bestrebungen, den Kernel-Adressraum vollständig zu verbergen, sind eine wirksame Gegenmaßnahme gegen böswillige Anwendungen, insbesondere wenn der Prozessor (z. B. eine zentrale Verarbeitungseinheit (CPU; central processing unit)) in einem Modus mit relativ geringeren Privilegien (z. B. im Benutzermodus) läuft. KPTI-Patching-Bestrebungen erfordern jedoch einen Systemneustart und sind in der Regel nur bei neueren Versionen von Betriebssystem- (OS) Kerneln wirksam. Da KPTI außerdem zwei getrennte Gastseitentabellen erfordert (eine Seitentabelle für den Kernel-Modus und eine andere Seitentabelle für den Benutzermodus), die Kernel-Modus-Tabelle eine vollständige Ansicht der Benutzer- und Kernelraum-Abbildungen für jeden Prozess bereitstellt (zum Aufrechterhalten des Schutzes vor möglichen böswilligen Anwendungen, die die Kernel-Steuerung und/oder -Modifikation anstreben), steigt der Plattform-/Systemressourcenverbrauch erheblich an (z. B. Anstieg des Speicherbedarfs). Ein solcher Ressourcenverbrauch führt zu einer Performance-Verschlechterung der Plattform/des Systems. Die Performance-Verschlechterung wird jedoch zum Teil durch das Leeren (flushing) des Übersetzungs-Lookaside-Puffers (TLB; translation lookaside buffer) verursacht, das beim Moduswechsel vom Benutzermodus in den Kernel-Modus (und umgekehrt) auftritt. Darüber hinaus umfassen zumindest einige Probleme mit KPTI eine Notwendigkeit, einen Speicherbedarf zu erhöhen, und eine resultierende Performance-Verschlechterung, die durch den erhöhten Ressourcenverbrauch verursacht wird. Bei einigen Beispielen wurde beobachtet, dass KPTI eine Performance-Verschlechterung von bis zu 30 % aufweist, und eine entsprechende Herabstufung kann zwischen 7 % und 17 % liegen, wenn Prozesskontextidentifizierer (PCID; process context identifiers) aktiviert sind.
  • Während getrennte Seitentabellen für den Benutzer- und Kernel-Modus jedes Prozesses für die Adressraumisolierung auf einem nativen Betriebssystem (OS) notwendig sind, ist diese Anforderung in einer VM nicht unerlässlich. In Verbindung mit darunter liegenden erweiterten Seitentabellen (Extended Page Tables, EPTs), die (eine) weitere Schicht(en) der Adressübersetzung von der physischen Gastadresse in physische Host-Adressen durchführen, kann die Adressraumisolierung in der VM alternativ durch Wechseln der EPT auf dem Host erreicht werden. Um die beobachteten Ineffizienzen von KPTI-Techniken für die Benutzer-/Kernelraum-Isolierung zu verbessern, erstellen andere bekannte Techniken zwei EPTs für jede instanziierte VM. Dieser Ansatz wird hier als EPT-Isolierung (EPTI) bezeichnet. Anstatt wie bei KPTI zwei Gast-Seitentabellen (gPTs; guest page tables) für jeden Prozess innerhalb einer VM zu verwenden, nutzt EPTI zwei separate EPT-Tabellen für die gesamte VM. Ähnlich wie KPTI bietet EPTI einen EPT-Wechsel während des Kontextwechsels zwischen Gastbenutzermodus und Kernel-Modus. Das heißt, ein erster Typ von EPT ist eine Kernel-EPT (EPTk), die dem relativ höher privilegierten Kernel entspricht, und ein zweiter Typ von EPT ist eine Benutzer-EPT (EPTu), die dem relativ niedriger privilegierten Benutzermodus entspricht. Der Gast-Kernel- und der Benutzermodus verwenden immer noch eine gPT gemeinschaftlich, aber im Benutzermodus werden die für den Kernel-Adressraum verwendeten Gast-Paging-Strukturen erneut auf auf null gesetzte Seiten in der EPTM abgebildet, was irgendeine Adressübersetzung innerhalb des Kernelraums verbietet, um Angriffe (z. B. den Meltdown-Angriff) abzuschwächen. Da der EPT-Wechsel (im Gegensatz zum gPT-Wechsel) keine TLB-Flushing-Operation(en) aufruft, führt EPTI zudem im Vergleich zu KPTI zu einer effizienteren Art der Modusisolierung.
  • Obwohl EPTI im Vergleich zu KPTI Vorteile bei der Ressourcennutzung erzielt, erfordert EPTI immer noch ein erhebliches erneutes Abbilden für Gasttabellenseiten (z. B. für das erneute Abbilden der Gast-L3-Seitentabellen-Seitenadresse auf eine auf null gesetzte Seite für den Gast-Kernel-Modus). Ein solches erneutes Abbilden umfasst eine umfangreiche Nachverfolgung (und einen Schreibschutz), um die Adressen von Gastseitentabellen (z. B. L3-Seitentabellen) während der jeweiligen Tabellenlebenszyklen zu kennen. Bei dem Versuch, Adressen von Gast-L3-Seitentabellen zu erhalten, die die Nachverfolgung von L4-Seitentabellen und somit eine weitere Nachverfolgung von Gast-CR3-Modifikationen (z. B. eines Gast-CR3-Registers) erfordern, kann es zu übermäßigen VM-Exits kommen. Eine solche Nachverfolgung ist bekanntermaßen fehleranfällig und verbraucht erhebliche Plattformressourcen.
  • Die hier offenbarten Beispiele steuern die Adressraumisolierung, um die Rechen- und/oder Ressourcenlasten auf einer Plattform zu verringern, auf der eine VM erleuchtet (enlightened) wird. Nach hiesigem Gebrauch bezieht sich „erleuchten“ auf das Kommunizieren von funktionalen Fähigkeiten einer ersten Einheit (z. B. eines Hypervisors (HV)) an eine zweite Einheit (z. B. eine VM), sodass diese funktionalen Fähigkeiten später (z. B. während der Laufzeit) genutzt werden können. Im Allgemeinen rufen hier offenbarte Beispiele eine Adressraumspiegelung auf, um es der virtuellen Gastadresse (VA; virtual address) zu ermöglichen, auf entsprechende Physische-Gastadresse- (GPA; guest physical address) Bereiche angewendet zu werden, die entweder (a) dem Benutzermodus oder (b) dem Kernel-Modus entsprechen. Dies ermöglicht eine EPT-Abbildungs-Umschalt- (Toggle) Aktivität ohne entsprechende Gasttabellen-Nachverfolgungskomplexitäten und zugeordnete Ressourcenineffizienzen, die diesen zugeordnet sind.
  • Wie nachstehend näher beschrieben, erzeugen die hierin offenbarten Beispiele zwei GPA-Bereiche, einen ersten GPA-Bereich, der als GPA-N bezeichnet wird (normale physische Gastadresse, die Benutzermodus-Privilegien zugeordnet ist), und einen zweiten GPA-Bereich, der als GPA-M bezeichnet wird (gespiegelte physische Gastadresse, die Kernel-Modus-Privilegien zugeordnet ist). GPA-N bezieht sich auf einen vorhandenen Physische-Gastadresse-Bereich, der für Gastbenutzer-VA-Abbildungen dediziert ist, und GPA-M bezieht sich auf einen gespiegelten Physische-Gastadresse-Bereich, der von EPT in denselben physischen Host-Speicher übersetzt wird wie von GPA-N abgebildet, aber für die Gastkernel-VA-Abbildung dediziert ist.
  • 1 ist eine schematische Darstellung einer Beispielplattform 100 zur Steuerung der Adressraumisolierung in einer VM. Bei dem dargestellten Beispiel von 1 umfasst die Plattform 100 Hardware-Ressourcen 102, einen Hypervisor 104 und virtuelle Maschinen (VMs) 106. Genauer gesagt umfassen die beispielhaften VMs 106 eine beispielhafte erste VM 106A, eine beispielhafte zweite VM 106B und eine beispielhafte dritte VM 106C. Während das dargestellte Beispiel von 1 drei VMs umfasst, sind hierin offenbarte Beispiele nicht darauf beschränkt. Zusätzlich umfasst jede der VMs 106A, 106B, 106C eine entsprechende Kontextwechsel-Engine 120A, 120B, 120C. Insbesondere umfasst die beispielhafte erste VM 106A eine beispielhafte erste Kontextwechsel-Engine 120A, die beispielhafte zweite VM 106B umfasst eine beispielhafte zweite Kontextwechsel-Engine 120B und die beispielhafte dritte VM 106C umfasst eine beispielhafte dritte Kontextwechsel-Engine 120C. Der beispielhafte Hypervisor 104 und die VMs 106 der beispielhaften Plattform 100 werden auf den beispielhaften Hardwareressourcen 102 ausgeführt und/oder nutzen diese anderweitig. Die beispielhaften Hardwareressourcen 102 umfassen Prozessoren, Speicher, Eingang/Ausgang (I/O; input/output), Grafik-Engine(s) und/oder Chipsätze, sind aber nicht darauf beschränkt. Bei dem dargestellten Beispiel von 1 umfassen die Hardwareressourcen einen beispielhaften Plattenspeicher 110 und einen beispielhaften Speicher 112. Der Plattenspeicher 110 kann durch irgendeine Art von Massenspeichervorrichtung, wie z. B. ein Festplattenlaufwerk oder ein Solid-State-Laufwerk, implantiert werden. Der Speicher 112 kann durch einen nichtflüchtigen Speicher oder einen flüchtigen Speicher wie einen synchronen dynamischen Direktzugriffsspeicher (SDRAM; Synchronous Dynamic Random Access Memory), einen dynamischen Direktzugriffsspeicher (DRAM; Dynamic Random Access Memory) usw. implementiert werden.
  • Der beispielhafte Hypervisor 104 dieses Beispiels managt die Zuweisung der beispielhaften Hardware-Ressourcen 102 der Plattform 100 an eine oder mehrere der beispielhaften VMs 106. Insbesondere befindet sich der beispielhafte Hypervisor 104 in einem (auf der Plattform 100 installierten) Host-OS, um virtuelle Hardwareressourcen an jeweilige der VMs 106 zu ermöglichen, zu verteilen und/oder anderweitig zu managen, auf eine Weise, die jede VM wahrnehmen lässt, dass sie Zugriff auf die (tatsächlichen) Hardwareressourcen 102 hat. Die VMs 106 haben jedoch keinen Zugriff auf die beispielhaften Hardware-Ressourcen 102. Stattdessen interagieren Gastbetriebssysteme der jeweiligen VMs 106 mit virtuellen Hardwareressourcen, die durch den Hypervisor 104 ermöglicht werden, aber jede der VMs 106A, 106B, 106C von 1 arbeitet in vollständiger logischer Isolation voneinander.
  • Das dargestellte Beispiel von 1 umfasst auch einen beispielhaften Adressraumisolator 108. Während der beispielhaften Adressraumisolator 108 in dem dargestellten Beispiel von 1 als Teil des beispielhaften Hypervisors 104 gezeigt ist, sind die hierin offenbarten Beispiele nicht darauf beschränkt. Bei einigen Beispielen kann sich der Adressraumisolator 108 an einem alternativen Ort der Plattform 100 befinden und/oder anderweitig an diesem arbeiten. Der beispielhafte Adressraumisolator 108 implementiert die Adressabbildungs-Steuerung, wie im Folgenden näher beschrieben.
  • 2A stellt eine Beispielimplementierung des beispielhaften Adressraumisolators 108 von 1 dar. Bei dem dargestellten Beispiel von 2A umfasst der Adressraumisolator 108 einen beispielhaften VM-Initialisierer 202 und einen beispielhaften EPT-Bestücker (populator) 206. Der beispielhafte VM-Initialisierer 202 umfasst einen beispielhaften Spawn-Detektor 208, einen beispielhaften Adressbreitenanpasser 210, einen beispielhaften Speicherspiegelmanager 212 und einen beispielhaften EPT-Erzeuger 214. Der beispielhafte EPT-Bestücker 206 umfasst einen beispielhaften Verletzungs-Handhaber 220, einen beispielhaften Adressanalysator 222 und eine beispielhafte Abbildungs-Engine 224.
  • Bei diesem Beispiel implementiert der VM-Initialisierer 202 Mittel zur Initialisierung einer VM. Das VM-Initialisierungsmittel wird bei diesem Beispiel durch einen Prozessor implementiert, der Anweisungen ausführt, wie beispielsweise diejenigen, die jeweils durch die Blöcke 404 und 514 der 4 und 5 dargestellt sind. Das Mittel zur Initialisierung einer VM kann jedoch zusätzlich oder alternativ durch ein VM-Initialisierungsmittel implementiert werden.
  • Bei diesem Beispiel implementiert der EPT-Bestücker 206 Mittel zum EPT-Bestücken. Das EPT-Bestückungsmittel wird bei diesem Beispiel durch einen Prozessor implementiert, der Anweisungen ausführt, wie beispielsweise diejenigen, die jeweils durch die Blöcke 412 und 612 der 4 und 6 dargestellt sind. Das Mittel zur EPT-Bestückung kann jedoch zusätzlich oder alternativ durch ein EPT-Bestückungs-Mittel implementiert werden.
  • Bei diesem Beispiel implementiert der Spawn-Detektor 208 Mittel zur Spawn-Detektion. Das Spawn-Detektions-Mittel wird bei diesem Beispiel durch einen Prozessor implementiert, der Anweisungen ausführt, wie sie in den Blöcken 402 und/oder 412 von 4 dargestellt sind. Das Mittel zur Spawn-Detektion kann jedoch zusätzlich oder alternativ durch ein Spawn-Detektions-Mittel implementiert werden.
  • Bei diesem Beispiel implementiert der Adressbreitenanpasser 210 Mittel zur Adressbreitenanpassung. Das Adressbreitenanpassungs-Mittel wird bei diesem Beispiel durch einen Prozessor implementiert, der Anweisungen ausführt, wie sie in den Blöcken 502 und/oder 504 von 5 dargestellt sind. Das Mittel zur Adressbreitenanpassung kann jedoch zusätzlich oder alternativ durch ein Adressbreitenanpassungs-Mittel implementiert werden.
  • Bei diesem Beispiel implementiert der Speicherspiegelmanager 212 Mittel zur Speicherspiegelung. Das Speicherspiegelungs-Mittel wird bei diesem Beispiel durch einen Prozessor implementiert, der Anweisungen ausführt, wie sie durch Block 506 von 5 dargestellt sind. Das Mittel zur Speicherspiegelung kann jedoch zusätzlich oder alternativ durch ein Speicherspiegelungs-Mittel implementiert werden.
  • Bei diesem Beispiel implementiert der EPT-Erzeuger 214 Mittel zur EPT-Erzeugung. Das EPT-Erzeugungs-Mittel wird bei diesem Beispiel durch einen Prozessor implementiert, der Anweisungen ausführt, wie sie in den Blöcken 508 und/oder 512 von 5 dargestellt sind. Das Mittel zur EPT-Erzeugung kann jedoch zusätzlich oder alternativ durch ein EPT-Erzeugungs-Mittel implementiert werden.
  • Bei diesem Beispiel implementiert der Trampolin-Code-Manager 216 Mittel zum Managen von Trampolin-Code. Das Trampolin-Code-Managen-Mittel wird bei diesem Beispiel durch einen Prozessor implementiert, der Anweisungen ausführt, wie sie jeweils in den Blöcken 514 und/oder 610 von 5 und 6 dargestellt sind. Das Mittel zum Managen von Trampolin-Code kann jedoch zusätzlich oder alternativ durch ein Trampolin-Code-Managen-Mittel implementiert werden.
  • Bei diesem Beispiel implementiert der EPT-Fokusanpasser 218 Mittel zur EPT-Fokusanpassung. Das EPT-Fokusanpassungs-Mittel wird bei diesem Beispiel durch einen Prozessor implementiert, der Anweisungen ausführt, wie sie in den Blöcken 510 und/oder 512 von 5 dargestellt sind. Das Mittel zur EPT-Fokusanpassung kann jedoch zusätzlich oder alternativ durch ein EPT-Fokusanpassungs-Mittel implementiert werden.
  • Bei diesem Beispiel implementiert der Verletzungs-Handhaber 220 Mittel zur Handhabung von Verletzungen. Das Verletzungs-Handhabungs-Mittel wird bei diesem Beispiel durch einen Prozessor implementiert, der Anweisungen ausführt, wie sie durch Block 410 von 4 dargestellt sind. Das Mittel zur Verletzungs-Handhabung kann jedoch zusätzlich oder alternativ durch ein Verletzungs-Handhabungs-Mittel implementiert werden.
  • Bei diesem Beispiel implementiert der Adressanalysator 222 Mittel zur Adressanalyse. Das Speicherspiegelungs-Mittel wird bei diesem Beispiel durch einen Prozessor implementiert, der Anweisungen ausführt, wie sie durch Block 602 von 6 dargestellt sind. Das Mittel zur Adressenanalyse kann jedoch zusätzlich oder alternativ durch ein Adressenanalyse-Mittel implementiert werden.
  • Bei diesem Beispiel implementiert die Abbildungs-Engine 224 Mittel zur Abbildung. Das Abbildungsmittel wird bei diesem Beispiel durch einen Prozessor implementiert, der Anweisungen ausführt, wie sie jeweils durch die Blöcke 514, 604, 608, 614, 616, 618, 620 und/oder 622 von 5 und 6 dargestellt sind. Die Mittel zum Abbilden können jedoch zusätzlich oder alternativ durch ein Abbildungsmittel implementiert werden.
  • 3 zeigt eine beispielhafte Seitentabellen-Abbildungstopologie 300 zur Steuerung der Adressraumisolierung. Im Allgemeinen wird bei der Erörterung der Struktur von 1, 2A und/oder 2B gelegentlich auf die beispielhafte Seitentabellen-Abbildungstopologie 300 von 3 Bezug genommen. Die beispielhafte Adressabbildungstopologie 300 von 3 wird durch den beispielhaften Adressraumisolator 108 von 1, 2A und 2B gesteuert, um die Adressraumisolierung zu steuern. Bei dem dargestellten Beispiel von 3 umfasst der beispielhafte Virtuelle-Gastadresse- (GVA; guestvirtual address) Raum 302 den beispielhaften Kernel-Raum 304 und den beispielhaften Benutzerraum 306. Während der Ausführung eines Prozesses greift der Prozess auf eine virtuelle Gastadresse (gVA; guest virtual address) zu, um durch eine beispielhafte Gastseitentabelle 308 (z. B. eine Datenstruktur oder eine Gruppe von Datenstrukturen, die von der beispielhaften VM 106 erzeugt und im Beispielspeicher 112 gespeichert wird) in eine physische Gastadresse übersetzt zu werden. Die Gastseitentabelle ist in 3 durch einen Pfeil 308 dargestellt. Die beispielhafte Gastseitentabelle 308 verwendet die Seitennummer, um eine entsprechende Rahmennummer in beispielhaften physischen Gastadressen (GPAs; guest physical addresses) 310 zu identifizieren. Bei einigen Beispielen entsprechen die GPAs 310 dem physischen Gastspeicher und/oder beziehen sich anderweitig auf diesen.
  • Das dargestellte Beispiel von 3 umfasst auch eine erweiterte Seitentabelle (EPT) 312 (z. B. eine Datenstruktur, die durch den beispielhaften Hypervisor 104 erzeugt wird und in dem beispielhaften Speicher 112 gespeichert ist), die, wie nachfolgend detaillierter beschrieben wird, erzeugt und in eine Kernel-EPT (EPT-K) 314 und eine Benutzer-EPT (EPT-U) 316 geteilt wird. Bei dem Beispiel von 3 ist die EPT durch einen Pfeil 312 dargestellt, die EPT-K ist durch einen Pfeil 314 dargestellt und die EPT-U ist durch einen Pfeil 316 dargestellt. Die EPT 312 (und die entsprechenden EPT-K 314 und EPT-U 316) sind Datenstrukturen, die z. B. im Speicher 112 der Beispielplattform 100 gespeichert werden können. Die beispielhafte EPT 312 übersetzt Gast-Rahmennummern in entsprechende physische Rahmennummern des beispielhaften Physische-Gastadresse- (HPA; host physical address) Raums 318, der irgendeine Anzahl physischer Host-Adressen enthält. Bei einigen Beispielen ist der HPA-Raum 318 ein Speicher, wie beispielsweise der Beispielspeicher 112 von 1. Bei dem dargestellten Beispiel von 3 umfasst der HPA-Raum 318 eine erste physische Adresse (PA) 320 und eine zweite physische Adresse (PB) 322. Zum Beispiel wurde die erste PA 320 von einer virtuellen Gastadresse A 350 durch die Gastseitentabelle 308 und die EPT 312 übersetzt.
  • Um zu dem dargestellten Beispiel von 2A zurückzukehren, managt der beispielhafte Adressraumisolator 108 im Betrieb Aufgaben, die sich auf VM-Initialisierung und EPT-Bestückung beziehen, und/oder handhabt diese anderweitig. Zum Beispiel, und wie im Folgenden näher beschrieben, erleichtert der Adressraumisolator 108 die Adressaufteilung und legt solche aufgeteilten Adressfähigkeiten den Gast-Kernels irgendeiner Anzahl von VMs frei, die in Zukunft instanziiert werden könnten. Ansprechend auf den beispielhaften Spawn-Detektor 208, der identifiziert und/oder anderweitig detektiert, dass eine VM-Spawn-Anforderung (z.B. eine Anforderung zur Instanziierung einer VM) auf der Beispiel-Plattform 100 aufgetreten ist, identifiziert der beispielhafte Adressbreitenanpasser 210 einen Physische-Adressbreite-Wert (w), der einer physischen Adressbreite des Gastspeichers entspricht (z.B. ein Speicherbreitenwert). Bei der Initialisierung einer VM begleiten zugeordnete Konfigurationsparameter die VM-Initialisierungsanforderung, um zu definieren, wie viel Speicher ein Gast haben wird, wie lang (breit) seine physische Adresse ist usw. Beträgt der Breitenwert (w) einer physischen Adresse beispielsweise 30 Bit, wird dieser Wert vom Beispiel-Hypervisor 104 während des VM-Betriebs emuliert. Der beispielhafte Breitenwert (w) einer physischen Adresse zeigt jedoch nicht notwendigerweise den tatsächlichen physischen Speicherverbrauch an, da die Breitenwerte vom Hypervisor 104 emuliert werden und nicht notwendigerweise von der Hardware abhängen. Somit kann einer anfordernden VM (z. B. der ersten Beispiel-VM 106A) ein(e) bestimmte(r) Speicherbreitenwert und/oder Konfiguration bereitgestellt werden, um ihr Rechenziel zu erfüllen, ohne dass sie durch die tatsächlichen physischen Speicherressourcen der Beispiel-Hardware-Ressourcen 102 eingeschränkt wird.
  • Um mit dem beispielhaften Breitenwert (w) einer physischen Adresse von 30 Bit zum Zweck der Darstellung und nicht der Einschränkung fortzufahren, liegt der Physische-Gastadresse-Bereich zwischen null und 1 Gigabyte (GB) (2W=230). Als Teil der Bestrebungen, die oben erwähnten ressourcenintensiven Seitentabellenduplikations-Bestrebungen, die durch bekannte KPTI-Techniken auferlegt werden, und/oder die ressourcenintensive und fehleranfällige Seitentabellennachverfolgung, die durch bekannte EPTI-Techniken auferlegt wird, zu vermeiden, erhöht der beispielhafte Adressbreitenanpasser 210 eine emulierte physische Adressbreite um eine Anzahl von Bits (z. B. ein (1) Bit). Angesichts des ursprünglichen Physische-Adressbreiten-Werts (w) von 30 Bit erhöht der beispielhafte Adressbreitenanpasser 210 den Breitenwert auf einen erweiterten Breitenwert w+N (z. B. w + 1 (z. B. 31 Bit)). Der beispielhafte Adressbreitenanpasser 210 erzeugt einen erweiterten emulierten Speicherbreitenwert, bei dem die GPA-Werte nun von null (0) bis 2w+1 (2w+1=231) reichen, was 2 GB entspricht. Da der beispielhafte Breitenwert (w) und der erweiterte Breitenwert (w+1) durch den beispielhaften Hypervisor 104 emuliert werden, ist eine tatsächliche Hinzufügung und/oder Parität von physischen Speicherressourcen in den hierin offenbarten Beispielen nicht erforderlich.
    Der beispielhafte Speicherspiegelmanager 212 spiegelt den Gastspeicher, um den ersten GPA-Bereich (GPA-N - normal) und den zweiten GPA-Bereich (GPA-M - gespiegelt (mirrored)) zu erzeugen. Insbesondere erzeugt der beispielhafte Speicherspiegelmanager 212 GPA-N mit einer Adressbreite zwischen null (0) und w und erzeugt GPA-M mit einer Adressbreite zwischen w und w+1. Wieder kurz Bezug nehmend auf das dargestellte Beispiel von 3 umfassen die GPAs 310 GPA-N 324, die von der Adresse null 326 bis zur Adresse 2w 328 reicht. Zusätzlich umfassen die GPAs 310 die GPA-M 330, die von der Adresse 2w 328 und der Adresse 2w+1 332 reicht.
  • Der beispielhafte EPT-Erzeuger 214 erzeugt die beispielhafte EPT 312 und teilt die EPT 312 weiter in EPT-K 314 und EPT-U 316 (z. B. eine Datenstruktur (EPT 312) mit Unterstrukturen (EPT-K 314 und EPT-U 316)). Der beispielhafte EPT-Erzeuger 214 konfiguriert und/oder strukturiert anderweitig die EPT-U 316 mit Abbildungen nur in Verbindung mit GPA-N 324. Insbesondere sind die EPT-U 316-Abbildungen auf GPA-N 324 begrenzt, um die Sicherheit vor einem Benutzermodus beizubehalten, der andernfalls versuchen könnte, unerlaubt auf den Kernel-Adressraum zuzugreifen. Zusätzlich konfiguriert der beispielhafte EPT-Erzeuger 214 die EPT-K 314 mit Abbildungen in Verbindung mit GPA-N 324 und GPA-M 330 und/oder strukturiert diese anderweitig. Da die EPT-K 314 privilegierter ist, kann ein Gast-Kernel-Modus bei Bedarf in der Lage sein, auf Speicher mit virtuellen Gastadressen zuzugreifen. Der umgekehrte Fall ist jedoch nicht zulässig, sodass keine virtuelle Gast-Kernel-Adresse von einem Benutzermodus verwendet werden kann.
  • Der beispielhafte VM-Initialisierer 202 ermöglicht es einer VM, zwischen Adressen von EPT-K 314 und EPT-U 316 mit einer Virtualisierungsanweisung zu wechseln, nachdem Adressen gespiegelt und die EPTs aufgeteilt wurden. Bei einigen Beispielen weist die Virtualisierungsanweisung eine bestimmte Aufrufstruktur auf, die einem jeweiligen Prozessorhersteller zugeordnet ist, wie z. B. vmfunc für Intel®-basierte Prozessoren. Es können jedoch andere Virtualisierungsanweisungen und Aufrufprozeduren in Verbindung mit den hier offenbarten Beispielen in Betracht gezogen werden. Die beispielhafte vmfunc-Anweisung ermöglicht es VMs, die im Nicht-Root-Modus laufen, VM-Funktionen auszulösen, ohne einen VM-Exit zu verursachen. Der beispielhafte VM-Initialisierer 202 erleuchtet entsprechende VMs, dass die vmfunc-Anweisung von der entsprechenden VM aufgerufen werden kann, um das Laden von EPT-Zeigern (EPTP; EPT pointers) zu erleichtern, um die Steuerung der neu eingerichteten Hierarchie von EPT-K 314 und EPT-U 316 einzurichten. Bei einigen Beispielen umfasst eine Virtuelle-Maschine-Steuerstruktur (VMCS; virtual machine control structure) bestimmte Konfigurationsfelder, die eingestellt werden können, um gezielt EPTP-Wechselfähigkeiten und bestimmte EPTs zu identifizieren. Anders ausgedrückt, erleichtert diese Hierarchie die Einfachheit der Erstellung von zwei separaten EPTs für eine VM anstelle der relativ beschwerlicheren Erstellung von zwei separaten Gastseitentabellen für jeden Prozess innerhalb der VM, wie sie bei der bekannten KPTI erforderlich ist. Bei einigen Beispielen sind die oben genannten Prozessorkonfigurationsfelder (z. B. in der VMCS) ausgebildet, um die EPT-Fokus-Funktionalität zu ermöglichen, z. B. mit einer Virtuelle-Maschine-Steuerstruktur (VMCS®), die im Beispiel-Hypervisor 104 gespeichert ist, aber die hier offenbarten Beispiele sind nicht darauf beschränkt.
  • Wenn eine VM erstellt und/oder anderweitig instanziiert wird, gibt es in der Regel keine Abbildung in ihrer entsprechenden EPT. Mit anderen Worten, die EPT ist leer. Wenn die VM also beim Arbeiten im Benutzermodus oder Kernel-Modus auf eine virtuelle Adresse zugreift, sucht die VM nach einem entsprechenden physischen Speicherort (z. B. die in PA 320 oder PB 322 des beispielhaften HPA-Raums 318 gespeicherten Daten), um eine Speicherzugriffsaufgabe zu erfüllen (z. B. Speicher-Lesen, Speicher-Schreiben usw.). Existiert die Abbildung jedoch nicht (z. B. keine Abbildung von der physischen Gastadresse, von der die virtuelle Gastadresse abbildet), detektiert der beispielhafte Verletzungs-Handhaber 220 eine EPT-Verletzung.
  • Der Beispiel-Adressanalysator 222 bestimmt, ob die Adresse (z. B. die anfordernde Adresse (GPA) von einer VM) GPA-N (z. B. Benutzermodus-bezogene Adressen) oder GPA-M (Kernel-Modus-bezogene Adressen) zugeordnet wird. Für den Fall, dass die VM eine Benutzermodus-bezogene Adresse verwendet, weist die beispielhafte Abbildungs-Engine 224 eine Seite zu und erstellt eine Abbildung in der EPT-U. Im Sinne der Erörterung wird angenommen, dass die von der VM bereitgestellte virtuelle Gastadresse (GVA) als Adresse (A) 350 bezeichnet wird, wie im dargestellten Beispiel von 3 gezeigt. Der Gast-Kernel bildet die Adresse (A) auf die GPA-N der EPT-U ab (siehe Bezugszeichen 352), da sie dem Benutzermodus zugeordnet ist (d. h. nicht privilegiert für den Kernel-Adressraumzugriff). Die beispielhafte Abbildungs-Engine 224 bildet die Adresse (A) der GPA-N auf die physische Adresse (PA) 320 ab. Der Beispiel-Adressanalysator 222 bestimmt und/oder analysiert anderweitig, ob die GPA in die GPA-N oder die GPA-M fällt, bevor die Beispiel-Abbildungs-Engine 224 Abbildungen in EPT-U oder EPT-K erstellt. Da eine mögliche zukünftige Kernel-Modus-VM-Aktivität auch den Zugriff auf diese Benutzerraum-Adresse erfordern kann, baut die beispielhafte Abbildungs-Engine 224 oder, bei einigen Beispielen, der Gast-Kernel die Adresse (A) zu GPA-M von EPT-K zu einer Buddy-Adresse (A') (A-Prime) nach (siehe Bezugszeichen 354). Anders ausgedrückt muss alles, was in der EPT-U abgebildet ist, für eine mögliche Kernel-Modus-Verfügbarkeit in der EPT-K nachgebaut werden. Insbesondere berechnet die beispielhafte Abbildungs-Engine 224 einen Versatz zwischen der Adresse(A) 352 und der Buddy-Adresse (A) 354 und wendet diesen als [A' = A | GPA_MIRROR_BIT] an, wobei das GPA MIRROR BIT das über 2w+1 hinzugefügte zusätzliche Bit ist. Wie bei dem dargestellten Beispiel von 3 ebenfalls gezeigt, erleichtert die Abbildungs-Engine 224 das gemeinsame Abbilden auf die physische Adresse (A), die als (PA) 320 bezeichnet wird, basierend auf dem Versatz. Dies ermöglicht einen zukünftigen Kernel-Modus-Zugriff auf dieselbe physische Adresse im physischen Host-Speicher, auf die durch eine Benutzermodus-Anforderung zugegriffen würde.
  • Befindet sich die Adresse (A) 352 im zugeordneten Trampolin-Code, wie vom Beispiel-Adressanalysator 222 bestimmt, ruft der Beispiel-Hypervisor 104 VMRESUME auf und überwacht weiterhin auf Instanzen zusätzlicher/alternativer VM-Instanziierungsanforderungen und EPT-Verletzungen. Befindet sich die Adresse (A) 352 jedoch nicht im Trampolin-Code, so löscht der EPT-Bestücker 206 ein ausführbares Flag in der EPT-K. Im Allgemeinen wird der Beispiel-Trampolin-Code aufgerufen, um die EPT während des Auftretens von Gastbenutzer- oder Kernel-Modus-Wechseln zu wechseln, und wird sowohl in der EPT-K als auch in der EPT-U abgebildet. Nach dem Eintritt in den Kernel-Modus und vor dem Wechsel der EPT verwendet der Gast jedoch weiterhin Adressen innerhalb der GPA-N. Ebenso gibt es nach dem Wechsel der EPT von EPT-K zu EPT-U (aber vor der Rückkehr in den Benutzermodus) ein Stück Code, das im Kernel-Modus läuft, aber EPT-U verwendet. Falls ein Prozess erfolgreich die EPT zu EPT-K im Benutzermodus gewechselt hat, wäre er in der Lage, Angriffe zu initiieren, was zu verhindern ist. Um solche Angriffe zu verhindern, wird die Ausführbarkeit aller Adressen, die in GPA-N in EPT-K fallen, deaktiviert. Daher kann selbst ein böswilliger Gastprozess, der die EPT zu EPT-K wechselt, nichts anderes tun, als nach dem Wechsel eine nicht ausführbare EPT-Verletzung auszulösen.
  • Bei anderen Beispielen sucht die beispielhafte Abbildungs-Engine 224, wenn der Beispiel-Adressanalysator 222 bestimmt, dass die Adresse von der VM dem Kernel-Modus entspricht, in der EPT-K nach einer Abbildung des Buddys (A') der Adresse (A). Anders ausgedrückt kann eine frühere EPT-Verletzung bereits eine geeignete Abbildung für den Kernel-Modus für die Adresse (A) erstellt haben, die auch Benutzermodus-Privilegien aufweist, aber diese Benutzermodus-Privilegien-Abbildungen sind möglicherweise noch nicht erstellt worden. Wenn dies der Fall ist, erstellt die beispielhafte Abbildungs-Engine 224 eine Abbildung der Adresse(A) 352 basierend auf dieser vorherigen Abbildung von (A) 354 unter Verwendung des Versatzes (in umgekehrter Richtung, wie oben beschrieben). Dies ermöglicht eine Abbildung von (A') 354 auf (PA) 320. Findet die Abbildungs-Engine 224 hingegen keine frühere Abbildung einer Buddy-Adresse in EPT-K, so ist auf den Buddy möglicherweise noch nicht vom Benutzermodus aus zugegriffen worden. In diesem Fall werden Abbildungen von A 352 in EPT-K erstellt. Falls später im Gastbenutzermodus auf den Buddy zugegriffen wird, wird zu einem späteren Zeitpunkt eine Abbildung im EPT-Verletzungs-Handhaber erstellt. Die beispielhafte Abbildungs-Engine 224 weist eine Seite zu (z. B. eine Gasttabellenseite 308) und bildet sie auf der Adresse (B) 356 in der GPA-M der EPT-K ab, weil sie dem Kernel-Modus zugeordnet ist. Diese bestimmte EPT-Abbildung entspricht der zweiten physischen Adresse (PB) 322, wie in dem in 3 dargestellten Beispiel gezeigt. Im Allgemeinen bestimmt der Adressanalysator, ob die GPA in die GPA-N oder die GPA-M fällt. Die Abbildungs-Engine weist dem GPA Speicher zu und erstellt entsprechende Abbildungen. Um die Abbildungen herzustellen, fragt die Abbildungs-Engine in der Regel den Abbildungsstatus der Buddy-Adresse ab und baut die Abbildungsbeziehung für den Buddy gegebenenfalls in der EPT-K nach.
  • 2A stellt eine Beispielimplementierung der beispielhaften Kontextwechsel-Engine 120 von 1 dar. Bei dem dargestellten Beispiel von 2B umfasst die Kontextwechsel-Engine 120 einen beispielhaften Kontextwechsel-Handhaber 250 und einen beispielhaften Spiegelfähigkeits-Entdecker 260. Im Allgemeinen befindet sich die beispielhafte Kontextwechsel-Engine 120 in einem Kernel einer instanziierten VM, die von dem Beispiel-Hypervisor 104 gespawnt wurde. Die Kontextwechsel-Engine 120 wird erleuchtet, Adressenspiegelungsfähigkeiten zur Steuerung der Adressraumisolierung und des VM-Kontextwechsels ohne erhebliche Nachverfolgungslasten, Fehler und/oder VMExit-Anforderungen herkömmlicher Adressisolierungstechniken zu adressieren.
  • Der beispielhafte Kontextwechsel-Handhaber 250 von 2B umfasst einen beispielhaften Trampolin-Code-Manager 252 und einen beispielhaften EPT-Fokusanpasser 254. Darüber hinaus umfasst der beispielhafte Spiegelfähigkeits-Entdecker 260 von 2B einen beispielhaften Spiegelauslastungs-Informator 262 und einen beispielhaften Kernel-Modus-Seitentabellenmanager 264. Im Betrieb wird der beispielhafte Spiegelfähigkeits-Entdecker 260 ansprechend auf die Erstellung einer VM durch den Beispiel-Hypervisor 104 aufgerufen. Insbesondere hat eine instanziierte VM zunächst kein Bewusstsein möglicher Spiegelungsfähigkeiten des Beispiel-Hypervisors, bis der Beispiel-Spiegelfähigkeits-Entdecker 260 eine Entdeckungsabfrage aufruft. Bei einigen Beispielen umfasst die von dem Beispiel-Spiegelfähigkeits-Entdecker 260 aufgerufene Entdeckungsabfrage einen CPUid-Befehl oder einen Modellspezifisches-Register- (Model Specific Register) Befehl. Der beispielhafte Spiegelauslastungs-Informator 262 überwacht auf eine Antwort auf die Entdeckungsabfrage, und wenn eine bestätigende Antwort für Spiegelungsfähigkeiten empfangen und/oder anderweitig abgerufen wird, informiert der beispielhafte Spiegel-Auslastungs-Informator 262 den Hypervisor 104 und/oder den beispielhaften Adressraumisolator 108, dass die Spiegelungsfähigkeiten während der Adressabbildungsoperationen verwendet werden. Außerdem erstellt der Beispiel-Kernel-Modus-Seitentabellenmanager 264 Seitentabellen für Kernel-Modus-Operationen der VM. Für den Fall jedoch, dass die Entdeckungsabfrage nicht anzeigt, dass Spiegelungsfähigkeiten für die kürzlich instanziierte VM verfügbar sind, leitet der Spiegel-Auslastungs-Informator 262 keine Bestätigung weiter und/oder sendet diese anderweitig, dass Spiegelungsfähigkeiten verwendet werden, was es der beispielhaften VM erlaubt, auf herkömmliche Weise zu arbeiten.
  • Während der Laufzeit der Beispiel-VM (z.B. der beispielhaften ersten VM (VM1) 106A) ist der beispielhafte Kontextwechsel-Handhaber 250 so strukturiert, dass er am Eintritts-/Austrittspunkt eines Systemaufruf-Handhabers oder eines Unterbrechungs-Ausnahme-Handhabers arbeitet. In der Tat überwacht der beispielhafte Kontextwechsel-Handhaber 250 das Auftreten eines Kernel-Systemaufrufs oder einer Unterbrechung der VM und/oder reagiert anderweitig darauf. Ansprechend auf ein solches Auftreten führt der beispielhafte Trampolin-Code-Manager 252 einen Kontextwechsel vom Benutzermodus in den Kernel-Modus unter Verwendung von leichtgewichtigem Trampolin-Code durch. Beispielsweise kann ein Prozess in einer VM (z. B. VM1 106A) während der Laufzeit einen Systemaufruf auslösen, um eine Aufgabe (z. B. eine I/O-Aufgabe) auszuführen, oder es kann eine Hardware-Unterbrechung auftreten, oder es kann eine Ausnahme erzeugt werden. Ein solches Auftreten kann von einem Gast-Kernel gehandhabt werden. Der beispielhafte Kontextwechsel-Handhaber 250 reagiert auf (z. B. detektiert) ein solches Auftreten und erleichtert die Abbildung nur mit den entsprechenden EPT-Adressbereichen (z. B. entweder GPA-M von EPT-K oder GPA-N von EPT-U oder beiden). Ansprechend auf das Detektieren einer Kontextwechselanforderung durch den beispielhaften Kontextwechsel-Handhaber 250 erleichtert (z. B. implementiert er verfügbaren Trampolin-Code, der in den Gast-Kernel kompiliert worden sein kann) der beispielhafte Trampolin-Code-Manager 252 eine Trampolin-Code-Anforderung (an den beispielhaften Adressraumisolator 108 des beispielhaften Hypervisors 104), die vom Gast-Kernel der anfordernden VM aufgerufen wird. Beispielhafter Trampolin-Code ist nachfolgend in Tabelle 1 dargestellt. Tabelle 1.
    Sequenz Pseudocode
    1 Trampoline_to_EPT_K
    2 SAVE_RAX_RCX
    3 movq $0, %rax
    4 movq $0, rcx
    5 vmfunc
    6 RESTORE_RAX_RCX
  • Bei dem dargestellten Beispiel von Tabelle 1 erzeugt die anfordernde VM (z. B. VM1 106A) der Beispielplattform 100 den Trampolin-Code aus Tabelle 1 und/oder ruft ihn anderweitig auf. Während der beispielhafte Trampolin-Code aus Tabelle 1 für einen bestimmten Intel®-Prozessor einzigartig ist, um geeignete Konfigurationseinstellungen (z. B. für VMCS) anzuwenden, die den EPT-Fokus erleichtern, sind hierin offenbarte Beispiele nicht darauf beschränkt, und abhängig von der Einzigartigkeit oder Nuancen bestimmter Prozessoren können alternative Trampolin-Codes aufgerufen werden (z. B. alternative Anweisungen, Register-Nomenklatur usw.). In dem dargestellten Beispiel von Tabelle 1 umfassen das %rax-Register und das %rcx-Register einen Index für vmfunc und einen EPTP-Kandidatenindex (z. B. bezieht sich 0 im beispielhaften %rex-Register auf einen EPT-K-Fokus). Während der obige beispielhafte Pseudocode aus Tabelle 1 ein Beispiel für den Kontextwechsel zu EPT-K anzeigt, kann ein ähnlicher Pseudocode mit alternativen Registereinstellungen für den Kontextwechsel zu EPT-U angewendet werden.
  • Basierend auf dem bestimmten EPT-Fokus, der vom Trampolin-Code-Manager 252 detektiert wird, wechselt der beispielhafte EPT-Fokusanpasser 254 den Fokus zu EPT-K oder EPT-U. Unter Umständen, in denen der Fokus EPT-U ist, isoliert und/oder beschränkt der beispielhafte EPT-Fokusanpasser 254 Abbildungen anderweitig nur auf GPA-N (z. B. GPA-Bereich von null (0) bis 2w). In Fällen, in denen der Fokus jedoch EPT-K ist, arbeitet der beispielhafte EPT-Fokusanpasser 254 in Verbindung mit der Gastseitentabelle, um Abbildungen für den Benutzermodus GVA in die GPA-N und/oder für den Kernel-Modus GVA in die GPA-M gemeinschaftlich zu verwenden und/oder anderweitig zu erlauben/anzubieten (z. B. GPA-Bereich von null (0) bis 2w, GPA-Bereich von 2w bis 2w+1, GPA-Bereich von null (0) bis 2w+1). Wenn die Handhabung eines Systemaufrufs, eines Auftretens einer Unterbrechung oder eines Auftretens einer Ausnahme abgeschlossen ist, wechselt der Trampolin-Code (z. B. ähnlich zu dem Beispiel-Trampolin-Code von Tabelle 1) die EPT zurück zu EPT-U. Insbesondere der beispielhafte vmfunc-Aufruf und die entsprechenden Register ermöglichen den Kontextwechsel, ohne dass eine oder mehrere VMExit-Operationen erforderlich ist/sind.
  • Während eine beispielhafte Art und Weise der Implementierung des Adressraumisolators 108 von 2A und der beispielhaften Kontextwechsel-Engine 120 von 2B in den 1, 2A, 2B und 3 dargestellt sind, können eines oder mehrere der Elemente, Prozesse und/oder Vorrichtungen, die in den 1, 2A, 2B und/oder 3 dargestellt sind, kombiniert, geteilt, neu angeordnet, weggelassen, eliminiert und/oder auf irgendeine andere Weise implementiert werden. Ferner können der beispielhafte VM-Initialisierer 202, der beispielhafte Spawn-Detektor 208, der beispielhafte Adressbreitenanpasser 210, der beispielhafte Speicherspiegelmanager 212, der beispielhafte EPT-Erzeuger 214, der beispielhafte EPT-Bestücker 206, der beispielhafte Verletzungs-Handhaber 220, der beispielhafte Adressanalysator 222, die beispielhafte Abbildungs-Engine 224, der beispielhafte Kontextwechsel-Handhaber 250, der beispielhafte Trampolin-Code-Manager 252, der beispielhafte EPT-Fokusanpasser 254, der beispielhafte Spiegelfähigkeits-Entdecker 260, der beispielhafte Spiegel-Auslastungs-Informator 262, der beispielhafte Kernel-Modus-Seitentabellen-Manager 264 und/oder, allgemeiner, der beispielhafte Adressraumisolator 108 und die beispielhafte Kontextwechsel-Engine 120 der 1 und 2A und/oder 2B durch Hardware, Software, Firmware und/oder irgendeine Kombination aus Hardware, Software und/oder Firmware implementiert werden. Somit könnte zum Beispiel irgendeines von dem beispielhaften VM-Initialisierer 202, dem beispielhaften Spawn-Detektor 208, dem beispielhaften Adressbreitenanpasser 210, dem beispielhaften Speicherspiegelmanager 212, dem beispielhaften EPT-Erzeuger 214, dem beispielhaften EPT-Bestücker 206, dem beispielhaften Verletzungs-Handhaber 220, dem beispielhaften Adressanalysator 222, der beispielhaften Abbildungs-Engine 224, dem beispielhaften Kontextwechsel-Handhaber 250, dem beispielhaften Trampolin-Code-Manager 252, dem beispielhaften EPT-Fokusanpasser 254, dem beispielhaften Spiegelfähigkeits-Entdecker 260, dem beispielhaften Spiegel-Auslastungs-Informator 262, dem beispielhaften Kernel-Modus-Seitentabellen-Manager 264 und/oder, allgemeiner, dem beispielhaften Adressraumisolator 108 und der beispielhaften Kontextwechsel-Engine 120 der 1 und 2A und/oder 2B durch eine oder mehrere analoge oder digitale Schaltung(en), Logikschaltungen, programmierbare(n) Prozessor(en), programmierbare(n) Steuerung(en), Grafikverarbeitungseinheit(en) (GPU(s); graphics processing unit), digitale(n) Signalprozessor(en) (DSP(s); digital signal processor), anwendungsspezifische(n) integrierte(n) Schaltung(en) (ASIC(s); application specific integrated circuit), programmierbare(n) Logikbauelement(e) (PLD(s); programmable logic device) und/oder feldprogrammierbare(n) Logikbauelement(e) (FPLD(s); field programmable logic device) implementiert werden. Beim Lesen irgendeines der Vorrichtungs- oder Systemansprüche dieses Patents, um eine reine Software- und/oder Firmware-Implementierung abzudecken, wird hiermit zumindest eines von dem beispielhaften VM-Initialisierer 202, dem beispielhaften Spawn-Detektor 208, dem beispielhaften Adressbreitenanpasser 210, dem beispielhaften Speicherspiegelmanager 212, dem beispielhaften EPT-Erzeuger 214, dem beispielhaften EPT-Bestücker 206, dem beispielhaften Verletzungs-Handhaber 220, dem beispielhaften Adressanalysator 222, der beispielhaften Abbildungs-Engine 224, dem beispielhaften Kontextwechsel-Handhaber 250, dem beispielhaften Trampolin-Code-Manager 252, dem beispielhaften EPT-Fokusanpasser 254, dem beispielhaften Spiegelfähigkeits-Entdecker 260, dem beispielhaften Spiegel-Auslastungs-Informator 262, dem beispielhaften Kernel-Modus-Seitentabellen-Manager 264 und/oder, allgemeiner, dem beispielhaften Adressraumisolator 108 und der beispielhaften Kontextwechsel-Engine 120 der 1 und 2A und/oder 2B ausdrücklich so definiert, dass sie eine nichtflüchtige computerlesbare Speichervorrichtung oder Speicherplatte wie beispielsweise einen Speicher, eine DVD (Digital Versatile Disk), eine CD (Compact Disk), eine Blu-ray-Disk usw., umfassend Software und/oder Firmware, umfassen. Ferner kann der beispielhafte Adressraumisolator 108 von 1, 2A und/oder 2B ein oder mehrere Elemente, Prozesse und/oder Vorrichtungen zusätzlich zu, oder anstatt, denjenigen umfassen, die in 1, 2A und/oder 2B dargestellt sind, und/oder kann mehr als eines von irgendwelchen oder allen der dargestellten Elemente, Prozesse und Vorrichtungen umfassen. Nach hiesigem Gebrauch umfasst der Ausdruck „in Kommunikation“, umfassend Variationen davon, direkte Kommunikation und/oder indirekte Kommunikation über eine oder mehrere Zwischenkomponenten und erfordert keine direkte physische (z.B. drahtgebundene) Kommunikation und/oder ständige Kommunikation, sondern umfasst zusätzlich selektive Kommunikation in periodischen Intervallen, geplanten Intervallen, aperiodischen Intervallen und/oder einmaligen Ereignissen.
  • Flussdiagramme, die beispielhafte Hardware-Logik, maschinenlesbare Anweisungen, hardwareimplementierte Zustandsmaschinen und/oder irgendeine Kombination davon zur Implementierung des Adressraumisolators 108 von 1, 2A und/oder 2B darstellen, sind in 4-6, 7A und 7B gezeigt. Die maschinenlesbaren Anweisungen können ein oder mehrere ausführbare Programme oder einer oder mehrere Abschnitte eines ausführbaren Programms zur Ausführung durch einen Computerprozessor wie den Prozessor 812 sein, der in der unten in Verbindung mit 8 erörterten beispielhaften Prozessorplattform 800 gezeigt wird. Das Programm kann in einer Software verkörpert sein, die auf einem nichtflüchtigen computerlesbaren Speichermedium gespeichert ist, wie beispielsweise einer CD-ROM, einer Diskette, einer Festplatte, einer DVD, einer Blu-Ray oder einem dem Prozessor 812 zugeordneten Speicher, aber das gesamte Programm und/oder Teile desselben könnten alternativ durch eine andere Vorrichtung als den Prozessor 812 ausgeführt werden und/oder in einer Firmware oder dedizierter Hardware verkörpert sein. Ferner, obwohl das beispielhafte Programm unter Bezugnahme auf die in 4-6, 7A und 7B dargestellten Flussdiagramme beschrieben wird, können alternativ viele andere Verfahren zur Implementierung des beispielhaften Adressraumisolators 108 verwendet werden. Beispielsweise kann die Reihenfolge der Ausführung der Blöcke geändert werden, und/oder einige der beschriebenen Blöcke können geändert, eliminiert oder kombiniert werden. Zusätzlich oder alternativ können irgendwelche oder alle der Blöcke durch eine oder mehrere Hardware-Schaltungen (z.B. diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine ASIC, einen Komparator, einen Operationsverstärker (op-amp), eine Logikschaltung etc.) implementiert werden, die strukturiert sind, um die entsprechende Operation ohne Ausführen von Software oder Firmware auszuführen.
  • Die hierin beschriebenen maschinenlesbaren Anweisungen können in einem oder mehreren aus einem komprimierten Format, verschlüsselten Format, fragmentierten Format, gepackageten Format etc. gespeichert werden. Die hierin beschriebenen maschinenlesbaren Anweisungen können als Daten (z.B. Abschnitte von Anweisungen, Code, Code-Darstellungen etc.) gespeichert werden, die zur Erzeugung, Herstellung und/oder Produktion maschinenlesbarer Anweisungen verwendet werden können. Beispielsweise können die maschinenlesbaren Anweisungen fragmentiert und auf einer oder mehreren Speichervorrichtungen und/oder Rechenvorrichtungen (z.B. Servern) gespeichert werden. Die maschinenlesbaren Anweisungen können eines oder mehrere aus Installation, Modifikation, Anpassung, Aktualisierung, Kombination, Ergänzung, Ausbildung, Entschlüsselung, Dekomprimierung, Entpackung, Verteilung, Neuzuweisung, etc. erfordern, um sie direkt lesbar und/oder ausführbar durch eine Rechenvorrichtung und/oder eine andere Maschine zu machen. Zum Beispiel können die maschinenlesbaren Anweisungen in mehreren Teilen gespeichert werden, die individuell komprimiert, verschlüsselt und auf getrennten Rechenvorrichtungen gespeichert werden, wobei die Teile, wenn sie entschlüsselt, dekomprimiert und kombiniert werden, einen Satz von ausführbaren Anweisungen bilden, die ein Programm wie das hierin beschriebene implementieren. Bei einem anderen Beispiel können die maschinenlesbaren Anweisungen in einem Zustand gespeichert sein, in dem sie von einem Computer gelesen werden können, aber die Hinzufügung einer Bibliothek (z.B. einer Dynamic Link Library (DLL)), eines Software Development Kit (SDK), einer Anwendungs-Programmierungs-Schnittstelle (API; application programming interface) etc. erfordern, um die Anweisungen auf einer bestimmten Rechenvorrichtung oder einer anderen Vorrichtung auszuführen. Bei einem anderen Beispiel müssen die maschinenlesbaren Anweisungen möglicherweise konfiguriert werden (z.B. gespeicherte Einstellungen, Dateneingabe, aufgezeichnete Netzwerkadressen etc.), bevor die maschinenlesbaren Anweisungen und/oder das/die entsprechende(n) Programm(e) ganz oder teilweise ausgeführt werden können. Somit sollen die offenbarten maschinenlesbaren Anweisungen und/oder das/die entsprechende(n) Programm(e) solche maschinenlesbaren Anweisungen und/oder Programm(e) umfassen, ungeachtet des bestimmten Formats oder Zustands der maschinenlesbaren Anweisungen und/oder Programm(e), wenn sie gespeichert oder anderweitig in Ruhe oder im Transit sind.
  • Wie vorangehend erwähnt wurde, können die beispielhaften Prozesse von 4-6, 7A und 7B implementiert sein unter Verwendung von ausführbaren Anweisungen (z. B. computer- und/oder maschinenlesbaren Anweisungen), die auf einem nichtflüchtigen Computer und/oder einem maschinenlesbaren Medium wie beispielsweise einem Festplattenlaufwerk, einem Flash-Speicher, einem Nurlesespeicher, einer CD, einer DVD, einem Cache, einem Direktzugriffsspeicher und/oder irgendeiner anderen Speichervorrichtung oder Speicherplatte, auf der Informationen für irgendeine Dauer (z. B. für längere Zeitperioden, permanent, für kurze Zeit, zum temporären Puffern und/oder zum Zwischenspeichern (Cachen) der Informationen) gespeichert ist, implementiert werden. Gemäß hiesiger Verwendung ist der Begriff nichtflüchtiges computerlesbares Medium ausdrücklich so definiert, dass es irgendeine Art von computerlesbarer Speichervorrichtung und/oder Speicherplatte umfasst und sich ausbreitende Signale ausschließt und Übertragungsmedien ausschließt.
  • „Aufweisend“ und „umfassend“ (und alle Formen und Zeitformen derselben) werden hierin so verwendet, dass sie offene Begriffe sind. Wann immer ein Anspruch irgendeine Form von „aufweisen“ oder „umfassen“ (z. B. „umfasst“, „weist auf“, „umfassend“, „aufweisend“ etc.) als einen Oberbegriff oder innerhalb einer Anspruchsrezitation irgendeiner Art verwendet, versteht es sich, dass zusätzliche Elemente, Begriffe etc. vorhanden sein können, ohne außerhalb des Schutzbereichs des entsprechenden Anspruchs oder der Rezitation zu fallen. Gemäß hiesiger Verwendung ist, wenn der Ausdruck „zumindest“ zum Beispiel in einem Oberbegriff eines Anspruchs als Übergangsbegriff verwendet wird, er auf die gleiche Weise offen ist, wie die Begriffe „umfassend“ und „aufweisend“ offen sind. Der Ausdruck „und/oder“, wenn er z.B. in einer Form wie A, B und/oder C verwendet wird, bezieht sich auf irgendeine Kombination oder Teilmenge von A, B, C wie beispielsweise (1) A allein, (2) B allein, (3) C allein, (4) A mit B, (5) A mit C, (6) B mit C und (7) A mit B und mit C. Nach hiesigem Gebrauch in dem Kontext von der Beschreibung von Strukturen, Komponenten, Gegenständen, Objekten und/oder Dingen soll sich der Ausdruck „zumindest eines von A und B“ auf Implementierungen beziehen, die irgendeines von (1) zumindest einem A, (2) zumindest einem B und (3) zumindest einem A und zumindest einem B umfassen. In ähnlicher Weise soll sich der Ausdruck „zumindest eines von A oder B“, nach hiesigem Gebrauch in dem Kontext der Beschreibung von Strukturen, Komponenten, Gegenständen, Objekten und/oder Dingen, auf Implementierungen beziehen, die irgendeines von (1) zumindest einem A, (2) zumindest einem B und (3) zumindest einem A und zumindest einem B umfassen. Nach hiesigem Gebrauch in dem Kontext der Beschreibung der Performance oder Ausführung von Prozessen, Anweisungen, Handlungen, Aktivitäten und/oder Schritten, soll sich der Ausdruck „zumindest eines von A und B“ auf Implementierungen beziehen, die irgendeines von (1) zumindest einem A, (2) zumindest einem B und (3) zumindest einem A und zumindest einem B umfassen. In ähnlicher Weise, nach hiesigem Gebrauch in dem Kontext der Beschreibung der Performance oder Ausführung von Prozessen, Anweisungen, Handlungen, Aktivitäten und/oder Schritten, soll sich der Ausdruck „zumindest eines von A oder B“ auf Implementierungen beziehen, die irgendeines von (1) zumindest einem A, (2) zumindest einem B und (3) zumindest einem A und zumindest einem B umfassen.
  • Das Programm 400 von 4 umfasst Block 402, in dem der beispielhafte Spawn-Detektor 208 bestimmt, ob eine VM-Spawn-Anforderung aufgetreten ist. Ist dies der Fall, initialisiert der beispielhafte VM-Initialisierer 202 die VM (Block 404), wie oben und weiter unten näher beschrieben. Aktivitäten, die der Überwachung auf Spawn-Auftreten zugeordnet sind, können jedoch parallel zu Aktivitäten durch den beispielhaften Verletzungs-Handhaber 220 erfolgen, um zu bestimmen, ob eine EPT-Verletzung stattgefunden hat (Block 410). Wenn dies der Fall ist, bestückt der Beispiel-EPT-Bestücker 206 entsprechende EPTs (Block 412), wie oben und im Folgenden näher beschrieben. Mit anderen Worten, der beispielhafte Spawn-Detektor 208 und der beispielhafte Verletzungs-Handhaber 220 schließen sich in ihren Überwachungsbestrebungen nicht gegenseitig aus. Die EPT kann während der Laufzeit bestückt werden, wenn eine Verletzung auftritt, oder bei einigen Beispielen kann sie vorbestückt werden, wenn die VM gespawnt wird.
  • 5 stellt ein zusätzliches Detail dar, das der Initialisierung einer VM (Block 404) durch den beispielhaften VM-Initialisierer 202 zugeordnet ist. Bei dem dargestellten Beispiel von 5 identifiziert der Beispiel-Adressbreitenanpasser 210 eine physische Adressbreite des Gastspeichers (Block 502). Der Beispiel-Adressbreitenanpasser 210 erhöht auch eine zuvor identifizierte emulierte physische Adressbreite um ein Bit (Block 504). Der beispielhafte Speicherspiegelmanager 212 spiegelt den Gastspeicher, um zwei separate Adressbereiche zu erzeugen: einen ersten „normalen“ Adressbereich GPA-N und einen zweiten „gespiegelten“ Adressbereich GPA-M (Block 506).
  • Der beispielhafte EPT-Erzeuger 214 erzeugt und/oder erstellt anderweitig Root-Paging-Strukturen wie EPT-U und EPT-K (Block 508) und autorisiert EPT-U-Abbildungsfähigkeiten in einer Weise, die nur auf GPA-N beschränkt ist (Block 510). Da EPT-K jedoch ein relativ höheres Privileg als EPT-U gewährt wird, autorisiert der beispielhafte EPT-Erzeuger 214 die EPT-K-Abbildungsfähigkeiten sowohl für GPA-N- als auch GPA-M-Bereiche (Block 512). Typischerweise treten Aktivitäten, die mit dem Bestücken solcher Paging-Strukturen verbunden sind, mittels der beispielhaften Abbildungs-Engine 224 auf. Der beispielhafte VM-Initialisierer 202 legt eine Fähigkeit einer Virtualisierungsanweisung frei (Block 514), wenn die zugrundeliegende EPT-Struktur erzeugt wurde und die entsprechenden GPA-Bereiche autorisiert wurden. Die Steuerung kehrt dann zu Block 402 von 4 zurück.
  • 6 veranschaulicht zusätzliche Details, die dem Bestücken der EPT (Block 412) zugeordnet sind. Bei dem dargestellten Beispiel von 6 bestimmt der beispielhafte Adressanalysator 222, ob eine Adresse der GPA-N zugeordnet ist (Block 602). Ist dies der Fall, weist die beispielhafte Abbildungs-Engine 224 eine Seite zu (Block 604) und bildet die Seite in EPT-U und EPT-K ab (Block 606). Anders ausgedrückt, kann auf eine Adresse innerhalb der GPA-N auch durch den Gast-Kernel zugegriffen werden. Da auf diese Adresse auch in Zukunft vom Kernel-Modus zugegriffen werden kann, baut die beispielhafte Abbildungs-Engine 224 die Abbildung („Buddy“) mit einem Versatz in der EPT-K nach (Block 608), wobei der Versatz auf dem gespiegelten Adressbereich basiert. Befindet sich die Adresse im Trampolin-Code (Block 610), überträgt der beispielhafte Hypervisor eine VM-Wiederaufnehmen-Anweisung und die Steuerung geht an die VM zurück. Befindet sich die Adresse jedoch nicht im Trampolin-Code (Block 610), dann löscht der beispielhafte EPT-Bestücker 206 ein ausführbares Flag in der EPT-K (Block 612). Die Steuerung geht dann an die VM zurück.
  • Liegt die Adresse jedoch nicht in einem Bereich, der der GPA-N zugeordnet ist (Block 602), was den Kernel-Modus anzeigt, dann sucht die beispielhafte Abbildungs-Engine 224 in der EPT-K nach einer Abbildung eines Buddys (z. B. einer Versatz-Adresse) (Block 614). Wenn die beispielhafte Abbildungs-Engine 224 sie findet (Block 616), dann zeigt dies eine Adresse an, auf die sowohl im Benutzermodus als auch im Kernel-Modus zugegriffen werden kann und die letztlich auf dieselbe physische Adresse (z. B. PA 320) abgebildet wird. Die beispielhafte Abbildungs-Engine 224 erstellt eine Abbildung der Adresse basierend auf dem Buddy (Block 618).
  • Andererseits, wenn die Suche in der EPT-K durch die beispielhafte Abbildungs-Engine 224 keinen entsprechenden Buddy (Block 616) findet, so zeigt dies eine Kernel-Adresse an, die nur in der EPT-K abgebildet werden soll, aber kein Benutzermodus-Gegenstück in der EPT-U hat. Somit weist die beispielhafte Abbildungs-Engine 224 eine entsprechende Seite zu (Block 620) und bildet die Adresse in der EPT-K ab (Block 622), wie z. B. die Adresse (B) 356 von 3, die in der EPT-K abgebildet wird, die der physischen Adresse (PB) 322 entspricht. Die Steuerung geht dann an die VM zurück.
  • 7A und 7B sind Programme, die dem Betrieb einer vom beispielhaften Hypervisor 104 gespawnten VM entsprechen. Genauer gesagt ist 7A ein Programm 700, das (einer) beispielhaften VM-Operation(en) entspricht, nachdem die VM zunächst instanziiert wurde, und 7B ist ein Programm 750, das (einer) beispielhaften VM-Operation(en) während der Laufzeit entspricht (z. B. ansprechend auf Unterbrechungen innerhalb der VM).
  • Das Programm 700 von 7A umfasst Block 702, in dem der beispielhafte Spiegelfähigkeits-Entdecker 260 bestimmt, ob der beispielhafte Hypervisor 104 Adressraumspiegelung unterstützt. Wie oben beschrieben, können solche Bestimmungen mittels eines MSR- oder CPUid-Aufrufs durch den Kernel der kürzlich instanziierten VM erreicht werden. Der beispielhafte Spiegel-Auslastungs-Informator 262 bestimmt, ob der Hypervisor 104 zur Adressaufteilung fähig ist und/oder ob der Hypervisor 104 eine VMfunc-Anweisung zum Erreichen der Adressaufteilung unterstützt (Block 704). Wenn nicht, dann endet das Beispielprogramm 700 von 7A und die VM und der entsprechende Hypervisor 104 arbeiten in einer herkömmlichen/normalen Weise. Für den Fall jedoch, dass der beispielhafte Spiegel-Auslastungs-Informator 262 eine Antwort vom MSR- oder CPUid-Aufruf empfängt und/oder anderweitig abruft, die auf Adressenspiegelungsfähigkeiten hinweist (Block 704), sendet, informiert und/oder überträgt der beispielhafte Spiegel-Auslastungs-Informator 262 anderweitig einen Hinweis an den Hypervisor 104, dass die VM Adressenspiegelung verwenden wird (Block 706). Der beispielhafte Kernel-Modus-Seitentabellen-Manager 264 richtet dann Seitentabellen für virtuelle Kerneladressen in der GPA-M in der beispielhaften VM ein (Block 708), bevor das Beispielprogramm 700 von 7A endet. Wird die Adressenspiegelungsfähigkeit nicht detektiert (Block 704), fungiert die Kernel-Modus-Seitentabelle wie gewöhnlich und erstellt Seitentabellen für virtuelle Kerneladressen und virtuelle Benutzeradressen in der GPA-N.
  • Das Programm 750 von 7B umfasst Block 752, in dem der beispielhafte Kontextwechsel-Handhaber 250 auf einen Systemaufruf oder eine Unterbrechung der Beispiel-VM reagiert. Insbesondere wechselt eine VM, die im Benutzermodus arbeitet, ansprechend auf das Auftreten eines Systemaufrufs oder einer Unterbrechung in den Kernel-Modus. Unter solchen Umständen ist Adressenspiegelung während eines Kontextwechsels zu verwenden. Der beispielhafte Trampolin-Code-Manager 252 initiiert den Kontextwechsel, indem er geeigneten Trampolin-Code identifiziert und sendet, der die beispielhafte VMfunc-(Block 754) Anweisung umfasst, wie oben im dargestellten Beispiel von Tabelle 1 gezeigt. Der beispielhafte EPT-Fokusanpasser 254 veranlasst den VM-Kernel, gespiegelte Adressierung zu verwenden, die einen angemessenen Fokus auf GPA-M-Adressen (gespiegelte Adressen) während des Kernel-Modus legen. Bei einigen Beispielen ruft der EPT-Fokusanpasser 254 einen ersten Typ von EPT (z. B. EPT-U) ansprechend auf einen Benutzermodus-Kontextwechsel auf, und bei anderen Beispielen ruft der EPT-Fokusanpasser 254 einen zweiten Typ von EPT (z. B. EPT-K) ansprechend auf einen Kernel-Modus-Kontextwechsel auf. Bei einigen Beispielen isoliert der EPT-Fokusanpasser 254 Abbildungen des ersten Typs von EPT unter Verwendung eines ersten GPA-Bereichs (z. B. 2w), der für den ersten Typ von EPT (z. B. GPA-N) autorisiert ist. Bei wiederum anderen Beispielen isoliert der EPT-Fokusanpasser 254 Abbildungen des zweiten Typs von EPT unter Verwendung eines zweiten GPA-Bereichs (z. B. 2w+1), der für den zweiten Typ von EPT (z. B. GPA-M) autorisiert ist. Wenn der beispielhafte EPT-Fokusanpasser 254 bestimmt, dass ein Systemaufruf, eine Unterbrechung oder eine Ausnahme (Block 756), dann führt der beispielhafte Trampolin-Code-Manager 252 einen Kontextwechsel vom Kernel- zum Benutzermodus (Block 758) durch (z. B. unter Verwendung von Trampolin-Code in ähnlicher Weise wie in der beispielhaften Tabelle 1.) Die Steuerung kehrt dann zu Block 752 zurück, in dem der beispielhafte Kontextwechsel-Handhaber 250 weiterhin auf Instanzen von Systemaufrufen, Ausnahmen und/oder Unterbrechungen reagiert (z. B. auf diese überwacht).
  • 8 ist ein Blockdiagramm einer beispielhaften Prozessorplattform 800, die strukturiert ist, um die Anweisungen von 4-7 zur Implementierung des Adressraumisolators 108 von 1, 2A, 2B und 3 auszuführen. Die Prozessorplattform 800 kann z. B. ein Server, ein Personal-Computer, eine Workstation, eine selbstlernende Maschine (z. B. ein neuronales Netzwerk), eine mobile Vorrichtung (z. B. ein Mobiltelefon, ein Smartphone, ein Tablet wie z. B. ein i-Pad™), ein persönlicher digitaler Assistent (PDA), ein Internetgerät, eine Spielkonsole, ein persönlicher Videorekorder, eine Set-Top-Box, ein Headset oder ein anderes tragbares Gerät oder irgendeine andere Art von Rechenvorrichtung sein.
  • Die Prozessorplattform 800 des dargestellten Beispiels umfasst einen Prozessor 812. Der Prozessor 812 des dargestellten Beispiels ist Hardware. Beispielsweise kann der Prozessor 812 durch eine oder mehrere integrierte Schaltungen, Logikschaltungen, Mikroprozessoren, GPUs, DSPs oder Steuerungen von irgendeiner erwünschten Familie oder Hersteller implementiert werden. Der Hardwareprozessor kann ein halbleiterbasiertes (z. B. siliziumbasiertes) Bauelement sein. Bei diesem Beispiel implementiert der Prozessor den beispielhaften VM-Initialisierer 202, den beispielhaften Spawn-Detektor 208, den beispielhaften Adressbreitenanpasser 210, den beispielhaften Speicherspiegelmanager 212, den beispielhaften EPT-Erzeuger 214, den beispielhaften Kontextwechsel-Handhaber 250, den beispielhaften Trampolin-Code-Manager 252, den beispielhaften EPT-Fokusanpasser 254, den beispielhaften EPT-Bestücker 206, den beispielhaften Verletzungs-Handhaber 220, den beispielhaften Adressanalysator 222, die beispielhafte Abbildungs-Engine 224, den beispielhaften Spiegelfähigkeits-Entdecker 260, den beispielhaften Spiegel-Auslastungs-Informator 262, den beispielhaften Kernel-Modus-Seitentabellen-Manager 264 und/oder, allgemeiner, den beispielhaften Adressraumisolator 108 und die beispielhafte Kontextwechsel-Engine 120.
  • Der Prozessor 812 des dargestellten Beispiels umfasst einen lokalen Speicher 813 (z. B. einen Cache). Der Prozessor 812 des dargestellten Beispiels ist in Kommunikation mit einem Hauptspeicher, umfassend einen flüchtigen Speicher 814 und einen nichtflüchtigen Speicher 816, über einen Bus 818. Der flüchtige Speicher 814 kann durch einen synchronen dynamischen Direktzugriffsspeicher (SDRAM; Synchronous Dynamic Random Access Memory), einen dynamischen Direktzugriffsspeicher (DRAM; Dynamic Random Access Memory), einen dynamischen RAMBUS®-Direktzugriffsspeicher (RDRAM®; RAMBUS Dynamic Random Access Memory) und/oder irgendeinen anderen Typ von Direktzugriff-Speichervorrichtung implementiert werden. Der nichtflüchtige Speicher 816 kann durch einen Flash-Speicher und/oder durch irgendeinen anderen gewünschten Typ von Speichervorrichtung implementiert sein. Zugriff auf den Hauptspeicher 814, 816 wird durch eine Speichersteuerung gesteuert.
  • Die Prozessorplattform 800 des dargestellten Beispiels umfasst auch eine Schnittstellenschaltung 820. Die Schnittstellenschaltung 820 kann durch irgendeinen Typ von Schnittstellenstandard, wie beispielsweise eine Ethernet-Schnittstelle, einen universellen seriellen Bus (USB; universal serial bus), eine Bluetooth@-Schnittstelle, eine Nahfeldkommunikations- (NFC; near field communication) Schnittstelle und/oder eine PCI-Express-Schnittstelle, implementiert werden.
  • Bei dem dargestellten Beispiel sind eine oder mehrere Eingabevorrichtungen 822 mit der Schnittstellenschaltung 820 verbunden. Die Eingabevorrichtung(en) 822 erlaubt/erlauben es einem Benutzer, Daten und/oder Befehle in den Prozessor 812 einzugeben. Die Eingabevorrichtung(en) können durch z. B. einen Audio-Sensor, ein Mikrophon, eine Kamera (Standbild oder Video), eine Tastatur, eine Schaltfläche, eine Maus, einen Touchscreen, ein Trackpad, einen Trackball, einen Isopoint und/oder ein Spracherkennungssystem implementiert werden.
  • Eine oder mehrere Ausgabevorrichtungen 824 sind ebenfalls mit der Schnittstellenschaltung 820 des dargestellten Beispiels verbunden. Die Ausgabevorrichtungen 824 können zum Beispiel durch Anzeigevorrichtungen (z. B. eine Leuchtdiode (LED; light emitting diode), eine organische Leuchtdiode (OLED; organic light emitting diode), eine Flüssigkristallanzeige (LDC; liquid crystal display), eine Kathodenstrahlröhren-Anzeige (CRT; cathode ray tube), eine In-Place-Switching- (IPS) Anzeige, einen Touchscreen etc.), eine Tastausgabevorrichtung, einen Drucker und/oder Lautsprecher implementiert werden. Die Schnittstellenschaltung 820 des dargestellten Beispiels umfasst somit typischerweise eine Graphiktreiberkarte, einen Graphiktreiberchip und/oder einen Graphiktreiberprozessor.
  • Die Schnittstellenschaltung 820 des dargestellten Beispiels umfasst auch eine Kommunikationsvorrichtung wie z.B. einen Sender, einen Empfänger, einen Sendeempfänger, ein Modem, ein privates Gateway, einen drahtlosen Zugriffspunkt und/oder eine Netzwerkschnittstelle, um den Datenaustausch mit externen Maschinen (z.B. Rechenvorrichtungen irgendeiner Art) über ein Netzwerk 826 zu ermöglichen. Die Kommunikation kann z.B. über eine Ethernet-Verbindung, eine digitale Teilnehmeranschluss (DSL; digital subscriber line)-Verbindung, eine Telefonleitungsverbindung, ein Koaxialkabelsystem, ein Satellitensystem, ein drahtloses Line-of-Site-System (Line-of-site; Sichtverbindung), ein Mobiltelefonsystem etc. erfolgen.
  • Die Prozessorplattform 800 des dargestellten Beispiels umfasst auch eine oder mehrere Massenspeichervorrichtungen 828 zum Speichern von Software und/oder Daten. Beispiele solcher Massenspeichervorrichtungen 828 umfassen Diskettenlaufwerke, Festplattenlaufwerke, CD-Laufwerke, Blue-Ray-Laufwerke, ein redundantes Array aus unabhängigen Platten (RAID; redundant array of independent disks) und DVD-Laufwerke.
  • Die maschinenausführbaren Anweisungen 832 von 4-7 können in der Massenspeichervorrichtung 828, in dem flüchtigen Speicher 814, in dem nichtflüchtigen Speicher 816 und/oder auf einem entfernbaren nicht-flüchtigen computerlesbaren Speichermedium, wie beispielsweise einer CD oder DVD, gespeichert sein.
  • Aus dem Vorstehenden wird ersichtlich, dass Beispielverfahren, -vorrichtungen und -fertigungsartikel offenbart wurden, die eine Trennung zwischen Benutzerraum und Kernelraum auf Rechenplattformen in einer Weise aufrechterhalten, die eine Speicherzuweisung von duplizierten Seitentabellen vermeidet. Darüber hinaus ermöglichen die hier offenbarten Beispiele einen Kontextwechsel zwischen EPTs, ohne dass eine Seitentabellen-Nachverfolgung erforderlich ist, im Gegensatz zu herkömmlichen EPTI-Techniken. Die offenbarten Verfahren, Vorrichtungen und Fertigungsartikel verbessern die Effizienz bei der Verwendung einer Rechenvorrichtung, indem sie eine solche Speicherzuweisungs-Duplizierung vermeiden, die bei Verwendung herkömmlicher Speichertrenntechniken (z. B. KPTI) für jeden instanziierten Prozess erforderlich ist. Offenbarte Verfahren, Vorrichtungen, Systeme und Fertigungsartikel sind dementsprechend auf eine oder mehrere Verbesserung(en) in der Funktionsfähigkeit eines Computers gerichtet.
  • Beispielhafte Verfahren, Vorrichtungen, Systeme und Fertigungsartikel zur Steuerung der Adressraumisolierung in einer virtuellen Maschine sind hierin offenbart. Weitere Beispiele und Kombinationen daraus umfassen folgendes:
    • Beispiel 1 umfasst eine Vorrichtung zur Autorisierung von Erweiterte-Seitentabelle- (EPT) Abbildung, die Vorrichtung umfassend einen Adressbreitenanpasser zum Identifizieren eines Speicherbreitenwerts, der einem Gastspeicher entspricht, der einer virtuellen Maschine (VM) zugeordnet ist, und zum Erzeugen eines erweiterten emulierten Speicherbreitenwerts, einen Speicherspiegelmanager zum Erzeugen eines ersten Physische-Gastadresse- (GPA) Bereichs basierend auf dem Speicherbreitenwert und zum Erzeugen eines zweiten GPA-Bereichs basierend auf dem erweiterten emulierten Speicherbreitenwert und einen EPT-Erzeuger zum Erzeugen von Root-Paging-Strukturen eines ersten Typs von EPT mit jeweiligen Adressen innerhalb des ersten GPA-Bereichs und zum Erzeugen von Root-Paging-Strukturen eines zweiten Typs von EPT mit jeweiligen Adressen innerhalb (a) des ersten GPA-Bereichs und (b) des zweiten GPA-Bereichs.
    • Beispiel 2 umfasst die Vorrichtung gemäß Beispiel 1, wobei der Adressbreitenanpasser ausgebildet ist, um den erweiterten emulierten Speicherbreitenwert ansprechend auf eine Instanziierungsanforderung zu erzeugen.
    • Beispiel 3 umfasst die Vorrichtung gemäß Beispiel 1, wobei der Adressbreitenanpasser ausgebildet ist, um den Speicherbreitenwert um ein Bit zu erhöhen, um den erweiterten emulierten Speicherbreitenwert zu erzeugen.
    • Beispiel 4 umfasst die Vorrichtung gemäß Beispiel 1, wobei der Speicherspiegelmanager ausgebildet ist, um den ersten GPA-Bereich zwischen null und dem Speicherbreitenwert einzustellen.
    • Beispiel 5 umfasst die Vorrichtung gemäß Beispiel 1, wobei der Speicherspiegelmanager ausgebildet ist, um den zweiten GPA-Bereich zwischen dem Speicherbreitenwert und dem erweiterten emulierten Speicherbreitenwert einzustellen.
    • Beispiel 7 umfasst die Vorrichtung gemäß Beispiel 1, ferner umfassend einen Kontextwechsel-Handhaber, um zumindest eines von einem Systemaufruf oder einer Unterbrechung zu identifizieren, wobei das zumindest eine von dem Systemaufruf oder der Unterbrechung einen Kontextwechsel der VM anzeigt.
    • Beispiel 8 umfasst die Vorrichtung gemäß Beispiel 7, ferner umfassend einen Trampolin-Code-Manager zum Aufrufen von Code basierend auf Adressenspiegelungsfähigkeiten.
    • Beispiel 9 umfasst die Vorrichtung gemäß Beispiel 7, ferner umfassend einen EPT-Fokusanpasser, um den ersten Typ von EPT ansprechend auf einen Benutzermodus-Kontextwechsel aufzurufen.
    • Beispiel 10 umfasst die Vorrichtung gemäß Beispiel 9, wobei der EPT-Fokusanpasser ausgebildet ist, um Abbildungen auf den ersten Typ von EPT unter Verwendung des ersten GPA-Bereichs zu isolieren.
    • Beispiel 11 umfasst die Vorrichtung gemäß Anspruch 7, ferner umfassend einen EPT-Fokusanpasser, um den zweiten Typ von EPT ansprechend auf einen Kernel-Modus-Kontextwechsel aufzurufen.
    • Beispiel 12 umfasst die Vorrichtung gemäß Beispiel 11, wobei der EPT-Fokusanpasser ausgebildet ist, um Abbildungen auf den zweiten Typ von EPT unter Verwendung des ersten und des zweiten GPA-Bereichs zu erlauben.
    • Beispiel 13 umfasst ein nichtflüchtiges maschinenlesbares Medium, das Anweisungen umfasst, die bei Ausführung zumindest einen Prozessor veranlassen zumindest zum Identifizieren eines Speicherbreitenwerts, der einem Gastspeicher entspricht, der einer virtuellen Maschine (VM) zugeordnet ist, Erzeugen eines erweiterten emulierten Speicherbreitenwerts, Erzeugen eines ersten Physische-Gastadresse- (GPA) Bereichs basierend auf dem Speicherbreitenwert, Erzeugen eines zweiten GPA-Bereichs basierend auf dem erweiterten emulierten Speicherbreitenwert, Erzeugen von Root-Paging-Strukturen eines ersten Typs von EPT mit jeweiligen Adressen innerhalb des ersten GPA-Bereichs und Erzeugen von Root-Paging-Strukturen eines zweiten Typs von EPT mit jeweiligen Adressen innerhalb (a) des ersten GPA-Bereichs und (b) des zweiten GPA-Bereichs.
    • Beispiel 14 umfasst das nichtflüchtige maschinenlesbare Medium gemäß Beispiel 13, wobei die Anweisungen bei Ausführung den zumindest einen Prozessor veranlassen, den erweiterten emulierten Speicherbreitenwert ansprechend auf eine Instanziierungsanforderung zu erzeugen.
    • Beispiel 15 umfasst das nichtflüchtige maschinenlesbare Medium gemäß Beispiel 13, wobei die Anweisungen bei Ausführung den zumindest einen Prozessor veranlassen, den Speicherbreitenwert um ein Bit zu erhöhen, um den erweiterten emulierten Speicherbreitenwert zu erzeugen.
    • Beispiel 16 umfasst das nichtflüchtige maschinenlesbare Medium gemäß Beispiel 13, wobei die Anweisungen bei Ausführung den zumindest einen Prozessor veranlassen, den ersten GPA-Bereich zwischen null und dem Speicherbreitenwert einzustellen.
    • Beispiel 17 umfasst das nichtflüchtige maschinenlesbare Medium gemäß Beispiel 13, wobei die Anweisungen bei Ausführung den zumindest einen Prozessor veranlassen, den zweiten GPA-Bereich zwischen dem Speicherbreitenwert und dem erweiterten emulierten Speicherbreitenwert einzustellen.
    • Beispiel 18 umfasst das nichtflüchtige maschinenlesbare Medium gemäß Beispiel 13, wobei die Anweisungen bei Ausführung den zumindest einen Prozessor veranlassen, zumindest eines von einem Systemaufruf oder einer Unterbrechung zu identifizieren, wobei das zumindest eine von dem Systemaufruf oder der Unterbrechung einen Kontextwechsel der VM anzeigt.
    • Beispiel 19 umfasst das nichtflüchtige maschinenlesbare Medium gemäß Beispiel 18, wobei die Anweisungen bei Ausführung den zumindest einen Prozessor veranlassen, Code basierend auf Adressenspiegelungsfähigkeiten aufzurufen.
    • Beispiel 20 umfasst das nichtflüchtige maschinenlesbare Medium gemäß Beispiel 18, wobei die Anweisungen bei Ausführung den zumindest einen Prozessor veranlassen, den ersten Typ von EPT ansprechend auf einen Benutzermodus-Kontextwechsel aufzurufen.
    • Beispiel 21 umfasst das nichtflüchtige maschinenlesbare Medium gemäß Beispiel 20, wobei die Anweisungen bei Ausführung den zumindest einen Prozessor veranlassen, Abbildungen auf den ersten Typ von EPT unter Verwendung des ersten GPA-Bereichs zu isolieren.
    • Beispiel 22 umfasst das nichtflüchtige maschinenlesbare Medium gemäß Beispiel 18, wobei die Anweisungen bei Ausführung den zumindest einen Prozessor veranlassen, den zweiten Typ von EPT ansprechend auf einen Kernel-Modus-Kontextwechsel aufzurufen.
    • Beispiel 23 umfasst das nichtflüchtige maschinenlesbare Medium gemäß Beispiel 22, wobei die Anweisungen bei Ausführung den zumindest einen Prozessor veranlassen, Abbildungen auf den zweiten Typ von EPT unter Verwendung des ersten und des zweiten GPA-Bereichs zu erlauben.
    • Beispiel 24 umfasst ein System zur Autorisierung von Erweiterte-Seitentabelle-(EPT) Abbildung, das System umfassend Mittel zur Adressbreiten-Anpassung zum Identifizieren eines Speicherbreitenwerts, der einem Gastspeicher entspricht, der einer virtuellen Maschine (VM) zugeordnet ist, und zum Erzeugen eines erweiterten emulierten Speicherbreitenwerts, Mittel zur Speicherspiegelung zum Erzeugen eines ersten Physische-Gastadresse- (GPA) Bereichs basierend auf dem Speicherbreitenwert und zum Erzeugen eines zweiten GPA-Bereichs basierend auf dem erweiterten emulierten Speicherbreitenwert und Mittel zur EPT-Erzeugung zum Erzeugen von Root-Paging-Strukturen eines ersten Typs von EPT mit jeweiligen Adressen innerhalb des ersten GPA-Bereichs und zum Erzeugen von Root-Paging-Strukturen eines zweiten Typs von EPT mit jeweiligen Adressen innerhalb (a) des ersten GPA-Bereichs und (b) des zweiten GPA-Bereichs.
    • Beispiel 25 umfasst das System gemäß Beispiel 24, wobei das Adressbreitenanpassungs-Mittel ausgebildet ist, um den erweiterten emulierten Speicherbreitenwert ansprechend auf eine Instanziierungsanforderung zu erzeugen.
    • Beispiel 26 umfasst das System gemäß Beispiel 24, wobei das Adressbreitenanpassungs-Mittel ausgebildet ist, um den Speicherbreitenwert um ein Bit zu erhöhen, um den erweiterten emulierten Speicherbreitenwert zu erzeugen.
    • Beispiel 27 umfasst das System gemäß Beispiel 24, wobei das Adressbreitenanpassungs-Mittel ausgebildet ist, um den ersten GPA-Bereich zwischen null und dem Speicherbreitenwert einzustellen.
    • Beispiel 28 umfasst das System gemäß Beispiel 24, wobei das Adressbreitenanpassungs-Mittel ausgebildet ist, um den zweiten GPA-Bereich zwischen dem Speicherbreitenwert und dem erweiterten emulierten Speicherbreitenwert einzustellen.
    • Beispiel 29 umfasst das System gemäß Beispiel 24, ferner umfassend Mittel zum Kontextwechsel, um zumindest eines von einem Systemaufruf oder einer Unterbrechung zu identifizieren, wobei das zumindest eine von dem Systemaufruf oder der Unterbrechung einen Kontextwechsel der VM anzeigt. Beispiel 30 umfasst das System gemäß Beispiel 29, ferner umfassend Mittel zum Managen von Trampolin-Code zum Aufrufen von Code basierend auf Adressenspiegelungsfähigkeiten.
    • Beispiel 31 umfasst das System gemäß Beispiel 29, ferner umfassend Mittel zur EPT-Fokusanpassung, um den ersten Typ von EPT ansprechend auf einen Benutzermodus-Kontextwechsel aufzurufen.
    • Beispiel 32 umfasst das System gemäß Beispiel 31, wobei das EPT-Fokusanpassungs-Mittel ausgebildet ist, um Abbildungen auf den ersten Typ von EPT unter Verwendung des ersten GPA-Bereichs zu isolieren.
    • Beispiel 33 umfasst das System gemäß Beispiel 29, ferner umfassend Mittel zur EPT-Fokusanpassung, um den zweiten Typ von EPT ansprechend auf einen Kernel-Modus-Kontextwechsel aufzurufen.
    • Beispiel 34 umfasst das System gemäß Beispiel 33, wobei das EPT-Fokusanpassungs-Mittel ausgebildet ist, um Abbildungen auf den zweiten Typ von EPT unter Verwendung des ersten und des zweiten GPA-Bereichs zu erlauben.
    • Beispiel 35 umfasst ein Verfahren zur Autorisierung von Erweiterte-Seitentabelle- (EPT) Abbildung, das Verfahren umfassend ein Identifizieren, durch Ausführen einer Anweisung mit zumindest einem Prozessor, eines Speicherbreitenwerts, der einem einer virtuellen Maschine (VM) zugeordneten Gastspeicher entspricht, ein Erzeugen, durch Ausführen einer Anweisung mit dem zumindest einen Prozessor, eines erweiterten emulierten Speicherbreitenwerts, ein Erzeugen, durch Ausführen einer Anweisung mit dem zumindest einen Prozessor, eines ersten Physische-Gastadresse- (GPA) Bereichs basierend auf dem Speicherbreitenwert, ein Erzeugen, durch Ausführen einer Anweisung mit dem zumindest einen Prozessor, eines zweiten GPA-Bereichs basierend auf dem erweiterten emulierten Speicherbreitenwert, ein Erzeugen, durch Ausführen einer Anweisung mit dem zumindest einen Prozessor, von Root-Paging-Strukturen eines ersten Typs von EPT mit jeweiligen Adressen innerhalb des ersten GPA-Bereichs und ein Erzeugen, durch Ausführen einer Anweisung mit dem zumindest einen Prozessor, von Root-Paging-Strukturen eines zweiten Typs von EPT mit jeweiligen Adressen innerhalb (a) des ersten GPA-Bereichs und (b) des zweiten GPA-Bereichs.
    • Beispiel 36 umfasst das Verfahren gemäß Beispiel 35, ferner umfassend ein Erzeugen des erweiterten emulierten Speicherbreitenwerts ansprechend auf eine Instanziierungsanforderung.
    • Beispiel 37 umfasst das Verfahren gemäß Beispiel 35, ferner umfassend ein Erhöhen des Speicherbreitenwerts um ein Bit, um den erweiterten emulierten Speicherbreitenwert zu erzeugen.
    • Beispiel 38 umfasst das Verfahren gemäß Beispiel 35, ferner umfassend ein Einstellen des ersten GPA-Bereichs zwischen null und dem Speicherbreitenwert.
    • Beispiel 39 umfasst das Verfahren gemäß Beispiel 35, ferner umfassend ein Einstellen des zweiten GPA-Bereichs zwischen dem Speicherbreitenwert und dem erweiterten emulierten Speicherbreitenwert.
    • Beispiel 40 umfasst das Verfahren gemäß Beispiel 35, ferner umfassend ein Identifizieren von zumindest einem von einem Systemaufruf oder einer Unterbrechung, wobei das zumindest eine von dem Systemaufruf oder der Unterbrechung einen Kontextwechsel der VM anzeigt.
    • Beispiel 41 umfasst das Verfahren gemäß Beispiel 40, ferner umfassend ein Aufrufen von Code basierend auf Adressenspiegelungsfähigkeiten.
    • Beispiel 42 umfasst das Verfahren gemäß Beispiel 40, ferner umfassend ein Aufrufen des ersten Typs von EPT ansprechend auf einen Benutzermodus-Kontextwechsel.
    • Beispiel 43 umfasst das Verfahren gemäß Beispiel 42, ferner umfassend ein Isolieren von Abbildungen auf den ersten Typ von EPT unter Verwendung des ersten GPA-Bereichs.
    • Beispiel 44 umfasst das Verfahren gemäß Beispiel 40, ferner umfassend ein Aufrufen des zweiten Typs von EPT ansprechend auf einen Kernel-Modus-Kontextwechsel.
    • Beispiel 45 umfasst das Verfahren gemäß Beispiel 44, ferner umfassend ein Erlauben von Abbildungen auf den zweiten Typ von EPT unter Verwendung des ersten und des zweiten GPA-Bereichs.
  • Obgleich bestimmte beispielhafte Verfahren, Vorrichtungen und Fertigungsartikel hier offenbart wurden, ist der Schutzbereich der Abdeckung dieses Patents nicht darauf beschränkt. Vielmehr deckt dieses Patent alle Verfahren, Vorrichtungen und Fertigungsartikel ab, die einigermaßen in den Schutzbereich der Ansprüche dieses Patents fallen.

Claims (44)

  1. Eine Vorrichtung zur Autorisierung von Erweiterte-Seitentabelle- (EPT) Abbildung, die Vorrichtung umfassend: einen Adressbreitenanpasser zum: Identifizieren eines Speicherbreitenwerts, der einem Gastspeicher entspricht, der einer virtuellen Maschine (VM) zugeordnet ist, und Erzeugen eines erweiterten emulierten Speicherbreitenwerts; einen Speicherspiegelmanager zum: Erzeugen eines ersten Physische-Gastadresse- (GPA) Bereichs basierend auf dem Speicherbreitenwert; und Erzeugen eines zweiten GPA-Bereichs basierend auf dem erweiterten emulierten Speicherbreitenwert; und einen EPT-Erzeuger zum: Erzeugen von Root-Paging-Strukturen eines ersten Typs von EPT mit jeweiligen Adressen innerhalb des ersten GPA-Bereichs; und Erzeugen von Root-Paging-Strukturen eines zweiten Typs von EPT mit jeweiligen Adressen innerhalb (a) des ersten GPA-Bereichs und (b) des zweiten GPA-Bereichs.
  2. Die Vorrichtung gemäß Anspruch 1, wobei der Adressbreitenanpasser ausgebildet ist, um den erweiterten emulierten Speicherbreitenwert ansprechend auf eine Instanziierungsanforderung zu erzeugen.
  3. Die Vorrichtung gemäß Anspruch 1, wobei der Adressbreitenanpasser ausgebildet ist, um den Speicherbreitenwert um ein Bit zu erhöhen, um den erweiterten emulierten Speicherbreitenwert zu erzeugen.
  4. Die Vorrichtung gemäß Anspruch 1, wobei der Speicherspiegelmanager ausgebildet ist, um den ersten GPA-Bereich zwischen null und dem Speicherbreitenwert einzustellen.
  5. Die Vorrichtung gemäß Anspruch 1, wobei der Speicherspiegelmanager ausgebildet ist, um den zweiten GPA-Bereich zwischen dem Speicherbreitenwert und dem erweiterten emulierten Speicherbreitenwert einzustellen.
  6. Die Vorrichtung gemäß Anspruch 1, ferner umfassend einen Kontextwechsel-Handhaber, um zumindest eines von einem Systemaufruf oder einer Unterbrechung zu identifizieren, wobei das zumindest eine von dem Systemaufruf oder der Unterbrechung einen Kontextwechsel der VM anzeigt.
  7. Die Vorrichtung gemäß Anspruch 7, ferner umfassend einen Trampolin-Code-Manager zum Aufrufen von Code basierend auf Adressenspiegelungsfähigkeiten.
  8. Die Vorrichtung gemäß Anspruch 7, ferner umfassend einen EPT-Fokusanpasser, um den ersten Typ von EPT ansprechend auf einen Benutzermodus-Kontextwechsel aufzurufen.
  9. Die Vorrichtung gemäß Anspruch 9, wobei der EPT-Fokusanpasser ausgebildet ist, um Abbildungen auf den ersten Typ von EPT unter Verwendung des ersten GPA-Bereichs zu isolieren.
  10. Die Vorrichtung gemäß Anspruch 7, ferner umfassend einen EPT-Fokusanpasser, um den zweiten Typ von EPT ansprechend auf einen Kernel-Modus-Kontextwechsel aufzurufen.
  11. Die Vorrichtung gemäß Anspruch 11, wobei der EPT-Fokusanpasser ausgebildet ist, um Abbildungen auf den zweiten Typ von EPT unter Verwendung des ersten und des zweiten GPA-Bereichs zu erlauben.
  12. Ein nichtflüchtiges maschinenlesbares Medium, das Anweisungen umfasst, die bei Ausführung zumindest einen Prozessor veranlassen zumindest zum: Identifizieren eines Speicherbreitenwerts, der einem Gastspeicher entspricht, der einer virtuellen Maschine (VM) zugeordnet ist; Erzeugen eines erweiterten emulierten Speicherbreitenwerts; Erzeugen eines ersten Physische-Gastadresse- (GPA) Bereichs basierend auf dem Speicherbreitenwert; Erzeugen eines zweiten GPA-Bereichs basierend auf dem erweiterten emulierten Speicherbreitenwert; Erzeugen von Root-Paging-Strukturen eines ersten Typs von EPT mit jeweiligen Adressen innerhalb des ersten GPA-Bereichs; und Erzeugen von Root-Paging-Strukturen eines zweiten Typs von EPT mit jeweiligen Adressen innerhalb (a) des ersten GPA-Bereichs und (b) des zweiten GPA-Bereichs.
  13. Das nichtflüchtige maschinenlesbare Medium gemäß Anspruch 13, wobei die Anweisungen bei Ausführung den zumindest einen Prozessor veranlassen, den erweiterten emulierten Speicherbreitenwert ansprechend auf eine Instanziierungsanforderung zu erzeugen.
  14. Das nichtflüchtige maschinenlesbare Medium gemäß Anspruch 13, wobei die Anweisungen bei Ausführung den zumindest einen Prozessor veranlassen, den Speicherbreitenwert um ein Bit zu erhöhen, um den erweiterten emulierten Speicherbreitenwert zu erzeugen.
  15. Das nichtflüchtige maschinenlesbare Medium gemäß Anspruch 13, wobei die Anweisungen bei Ausführung den zumindest einen Prozessor veranlassen, den ersten GPA-Bereich zwischen null und dem Speicherbreitenwert einzustellen.
  16. Das nichtflüchtige maschinenlesbare Medium gemäß Anspruch 13, wobei die Anweisungen bei Ausführung den zumindest einen Prozessor veranlassen, den zweiten GPA-Bereich zwischen dem Speicherbreitenwert und dem erweiterten emulierten Speicherbreitenwert einzustellen.
  17. Das nichtflüchtige maschinenlesbare Medium gemäß Anspruch 13, wobei die Anweisungen bei Ausführung den zumindest einen Prozessor veranlassen, zumindest eines von einem Systemaufruf oder einer Unterbrechung zu identifizieren, wobei das zumindest eine von dem Systemaufruf oder der Unterbrechung einen Kontextwechsel der VM anzeigt.
  18. Das nichtflüchtige maschinenlesbare Medium gemäß Anspruch 18, wobei die Anweisungen bei Ausführung den zumindest einen Prozessor veranlassen, Code basierend auf Adressenspiegelungsfähigkeiten aufzurufen.
  19. Das nichtflüchtige maschinenlesbare Medium gemäß Anspruch 18, wobei die Anweisungen bei Ausführung den zumindest einen Prozessor veranlassen, den ersten Typ von EPT ansprechend auf einen Benutzermodus-Kontextwechsel aufzurufen.
  20. Das nichtflüchtige maschinenlesbare Medium gemäß Anspruch 20, wobei die Anweisungen bei Ausführung den zumindest einen Prozessor veranlassen, Abbildungen auf den ersten Typ von EPT unter Verwendung des ersten GPA-Bereichs zu isolieren.
  21. Das nichtflüchtige maschinenlesbare Medium gemäß Anspruch 18, wobei die Anweisungen bei Ausführung den zumindest einen Prozessor veranlassen, den zweiten Typ von EPT ansprechend auf einen Kernel-Modus-Kontextwechsel aufzurufen.
  22. Das nichtflüchtige maschinenlesbare Medium gemäß Anspruch 22, wobei die Anweisungen bei Ausführung den zumindest einen Prozessor veranlassen, Abbildungen auf den zweiten Typ von EPT unter Verwendung des ersten und des zweiten GPA-Bereichs zu erlauben.
  23. Ein System zur Autorisierung von Erweiterte-Seitentabelle- (EPT) Abbildung, das System umfassend: Mittel zur Adressbreiten-Anpassung zum: Identifizieren eines Speicherbreitenwerts, der einem Gastspeicher entspricht, der einer virtuellen Maschine (VM) zugeordnet ist, und Erzeugen eines erweiterten emulierten Speicherbreitenwerts; Mittel zur Speicherspiegelung zum: Erzeugen eines ersten Physische-Gastadresse- (GPA) Bereichs basierend auf dem Speicherbreitenwert; und Erzeugen eines zweiten GPA-Bereichs basierend auf dem erweiterten emulierten Speicherbreitenwert; und Mittel zur EPT-Erzeugung zum: Erzeugen von Root-Paging-Strukturen eines ersten Typs von EPT mit jeweiligen Adressen innerhalb des ersten GPA-Bereichs; und Erzeugen von Root-Paging-Strukturen eines zweiten Typs von EPT mit jeweiligen Adressen innerhalb (a) des ersten GPA-Bereichs und (b) des zweiten GPA-Bereichs.
  24. Das System gemäß Anspruch 24, wobei das Adressbreitenanpassungs-Mittel ausgebildet ist, um den erweiterten emulierten Speicherbreitenwert ansprechend auf eine Instanziierungsanforderung zu erzeugen.
  25. Das System gemäß Anspruch 24, wobei das Adressbreitenanpassungs-Mittel ausgebildet ist, um den Speicherbreitenwert um ein Bit zu erhöhen, um den erweiterten emulierten Speicherbreitenwert zu erzeugen.
  26. Das System gemäß Anspruch 24, wobei das Adressbreitenanpassungs-Mittel ausgebildet ist, um den ersten GPA-Bereich zwischen null und dem Speicherbreitenwert einzustellen.
  27. Das System gemäß Anspruch 24, wobei das Adressbreitenanpassungs-Mittel ausgebildet ist, um den zweiten GPA-Bereich zwischen dem Speicherbreitenwert und dem erweiterten emulierten Speicherbreitenwert einzustellen.
  28. Das System gemäß Anspruch 24, ferner umfassend Mittel zum Kontextwechsel, um zumindest eines von einem Systemaufruf oder einer Unterbrechung zu identifizieren, wobei das zumindest eine von dem Systemaufruf und der Unterbrechung einen Kontextwechsel der VM anzeigt.
  29. Das System gemäß Anspruch 29, ferner umfassend Mittel zum Managen von Trampolin-Code zum Aufrufen von Code basierend auf Adressenspiegelungsfähigkeiten.
  30. Das System gemäß Anspruch 29, ferner umfassend Mittel zur EPT-Fokusanpassung, um den ersten Typ von EPT ansprechend auf einen Benutzermodus-Kontextwechsel aufzurufen.
  31. Das System gemäß Anspruch 31, wobei das EPT-Fokusanpassungs-Mittel ausgebildet ist, um Abbildungen auf den ersten Typ von EPT unter Verwendung des ersten GPA-Bereichs zu isolieren.
  32. Das System gemäß Anspruch 29, ferner umfassend Mittel zur EPT-Fokusanpassung, um den zweiten Typ von EPT ansprechend auf einen Kernel-Modus-Kontextwechsel aufzurufen.
  33. Das System gemäß Anspruch 33, wobei das EPT-Fokusanpassungs-Mittel ausgebildet ist, um Abbildungen auf den zweiten Typ von EPT unter Verwendung des ersten und des zweiten GPA-Bereichs zu erlauben.
  34. Ein Verfahren zur Autorisierung von Erweiterte-Seitentabelle- (EPT) Abbildung, das Verfahren umfassend: Identifizieren, durch Ausführen einer Anweisung mit zumindest einem Prozessor, eines Speicherbreitenwerts, der einem einer virtuellen Maschine (VM) zugeordneten Gastspeicher entspricht; Erzeugen, durch Ausführen einer Anweisung mit dem zumindest einen Prozessor, eines erweiterten emulierten Speicherbreitenwerts; Erzeugen, durch Ausführen einer Anweisung mit dem zumindest einen Prozessor, eines ersten Physische-Gastadresse- (GPA) Bereichs basierend auf dem Speicherbreitenwert; Erzeugen, durch Ausführen einer Anweisung mit dem zumindest einen Prozessor, eines zweiten GPA-Bereichs basierend auf dem erweiterten emulierten Speicherbreitenwert; Erzeugen, durch Ausführen einer Anweisung mit dem zumindest einen Prozessor, von Root-Paging-Strukturen eines ersten Typs von EPT mit jeweiligen Adressen innerhalb des ersten GPA-Bereichs; und Erzeugen, durch Ausführen einer Anweisung mit dem zumindest einen Prozessor, von Root-Paging-Strukturen eines zweiten Typs von EPT mit jeweiligen Adressen innerhalb (a) des ersten GPA-Bereichs und (b) des zweiten GPA-Bereichs.
  35. Das Verfahren gemäß Anspruch 35, ferner umfassend ein Erzeugen des erweiterten emulierten Speicherbreitenwerts ansprechend auf eine Instanziierungsanforderung.
  36. Das Verfahren gemäß Anspruch 35, ferner umfassend ein Erhöhen des Speicherbreitenwerts um ein Bit, um den erweiterten emulierten Speicherbreitenwert zu erzeugen.
  37. Das Verfahren gemäß Anspruch 35, ferner umfassend ein Einstellen des ersten GPA-Bereichs zwischen null und dem Speicherbreitenwert.
  38. Das Verfahren gemäß Anspruch 35, ferner umfassend ein Einstellen des zweiten GPA-Bereichs zwischen dem Speicherbreitenwert und dem erweiterten emulierten Speicherbreitenwert.
  39. Das Verfahren gemäß Anspruch 35, ferner umfassend ein Identifizieren von zumindest einem von einem Systemaufruf oder einer Unterbrechung, wobei das zumindest eine von dem Systemaufruf oder der Unterbrechung einen Kontextwechsel der VM anzeigt.
  40. Das Verfahren gemäß Anspruch 40, ferner umfassend ein Aufrufen von Code basierend auf Adressenspiegelungsfähigkeiten.
  41. Das Verfahren gemäß Anspruch 40, ferner umfassend ein Aufrufen des ersten Typs von EPT ansprechend auf einen Benutzermodus-Kontextwechsel.
  42. Das Verfahren gemäß Anspruch 42, ferner umfassend ein Isolieren von Abbildungen auf den ersten Typ von EPT unter Verwendung des ersten GPA-Bereichs.
  43. Das Verfahren gemäß Anspruch 40, ferner umfassend ein Aufrufen des zweiten Typs von EPT ansprechend auf einen Kernel-Modus-Kontextwechsel.
  44. Das Verfahren gemäß Anspruch 44, ferner umfassend ein Erlauben von Abbildungen auf den zweiten Typ von EPT unter Verwendung des ersten und des zweiten GPA-Bereichs.
DE112019007482.2T 2019-06-21 2019-06-21 Verfahren, systeme, fertigungartikel und vorrichtungen zur steuerung von adressraumisolierung in einer virtuellen maschine Pending DE112019007482T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/092324 WO2020252779A1 (en) 2019-06-21 2019-06-21 Methods, systems, articles of manufacture and apparatus to control address space isolation in a virtual machine

Publications (1)

Publication Number Publication Date
DE112019007482T5 true DE112019007482T5 (de) 2022-04-21

Family

ID=74039990

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019007482.2T Pending DE112019007482T5 (de) 2019-06-21 2019-06-21 Verfahren, systeme, fertigungartikel und vorrichtungen zur steuerung von adressraumisolierung in einer virtuellen maschine

Country Status (3)

Country Link
US (1) US11971827B2 (de)
DE (1) DE112019007482T5 (de)
WO (1) WO2020252779A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112989326A (zh) * 2021-04-08 2021-06-18 北京字节跳动网络技术有限公司 一种指令发送方法及装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011048606A2 (en) * 2009-09-25 2011-04-28 Kamlesh Gandhi Virtual-memory system with variable-sized pages
US9824032B2 (en) 2015-04-16 2017-11-21 Red Hat Israel, Ltd. Guest page table validation by virtual machine functions
CN105487837B (zh) * 2015-05-11 2018-10-09 上海兆芯集成电路有限公司 具有载入扩展页表指令的处理器
US9710393B2 (en) 2015-06-25 2017-07-18 Intel Corporation Dynamic page table edit control
US10515023B2 (en) 2016-02-29 2019-12-24 Intel Corporation System for address mapping and translation protection
US10209900B2 (en) * 2016-09-19 2019-02-19 Fungible, Inc. Buffer allocation and memory management using mapping table
US10387184B2 (en) * 2016-11-15 2019-08-20 Red Hat Israel, Ltd. Address based host page table selection
US10579410B2 (en) * 2018-02-28 2020-03-03 Red Hat, Inc. Guest intermediate address tagging for guest applications

Also Published As

Publication number Publication date
US20220100675A1 (en) 2022-03-31
US11971827B2 (en) 2024-04-30
WO2020252779A1 (en) 2020-12-24

Similar Documents

Publication Publication Date Title
CN109783188B (zh) 用于安全公共云的密码存储器所有权表
DE112012003988B4 (de) Schützen des Arbeitsspeichers eines virtuellen Gasts
US7380049B2 (en) Memory protection within a virtual partition
US7421533B2 (en) Method to manage memory in a platform with virtual machines
EP1701268B1 (de) Verfahren und System zur Virtualisierung einer physikalischen Gastadresse in einer virtuellen Maschinenumgebung
DE112017004017T5 (de) Sichere öffentliche cloud
US9971623B2 (en) Isolation method for management virtual machine and apparatus
US20150317178A1 (en) System and method for kernel rootkit protection in a hypervisor environment
DE112020000223B4 (de) Gemeinsame speichernutzung zwischen einer sicheren domäne und einer nicht sicheren entität
US9183391B2 (en) Managing device driver cross ring accesses
US20080244155A1 (en) Methods and apparatus to protect dynamic memory regions allocated to programming agents
DE112011102876T5 (de) Ressourcenverwaltungs- und Sicherheitssystem
DE112020000303T5 (de) Testen von speicherschutz-hardware in einer umgebung einer sicheren virtuellen maschine
CN102667803B (zh) 用于根据所分配的权限信息运行虚拟机的方法和设备
DE112020000280B4 (de) Transparente interpretation von gastbefehlen in einer sicheren virtuellen maschinenumgebung
DE112020000289T5 (de) Abfrage und überlassung von sicherem speicher
DE112016004297T5 (de) Technologien für mehrstufige virtualisierung
US10620985B2 (en) Transparent code patching using a hypervisor
CN113094700A (zh) 执行安全操作的系统以及系统执行安全操作的方法
DE112020000285T5 (de) Programmunterbrechungen für Seiten-Import/-Export
DE102023202297A1 (de) Wahrung der vertraulichkeit von mandanten in einer cloud-umgebung beim einsatz von sicherheitsdiensten
DE102020128050A1 (de) Tdx-inseln mit in sich abgeschlossenem geltungsbereich, wodurch eine tdx-schlüsselkennungsskalierung ermöglicht wird
DE112019007482T5 (de) Verfahren, systeme, fertigungartikel und vorrichtungen zur steuerung von adressraumisolierung in einer virtuellen maschine
DE102021101709A1 (de) Virtuelle serielle schnittstellen für virtuelle maschinen
KR101564293B1 (ko) 장치 가상화 방법 및 장치