DE202012013448U1 - Prozessormodussperre - Google Patents

Prozessormodussperre Download PDF

Info

Publication number
DE202012013448U1
DE202012013448U1 DE202012013448.5U DE202012013448U DE202012013448U1 DE 202012013448 U1 DE202012013448 U1 DE 202012013448U1 DE 202012013448 U DE202012013448 U DE 202012013448U DE 202012013448 U1 DE202012013448 U1 DE 202012013448U1
Authority
DE
Germany
Prior art keywords
processing mode
processor
bits
value
bit
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.)
Expired - Lifetime
Application number
DE202012013448.5U
Other languages
English (en)
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of DE202012013448U1 publication Critical patent/DE202012013448U1/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • 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/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • 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/45587Isolation or security of virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

System, das Folgendes umfasst: ein computerlesbares Medium mit darauf gespeicherten Anweisungen; und einen datenverarbeitenden Apparat, der dafür ausgelegt ist, die Anweisungen auszuführen, um Operationen durchzuführen, die Folgendes umfassen: das Betreiben eines Prozessors im datenverarbeitenden Apparat in einem ersten Verarbeitungsmodus; das Setzen eines oder mehrerer Steuerbits eines Steuerregisters des Prozessors, um den Prozessor so zu konfigurieren, dass er in einem anderen zweiten Verarbeitungsmodus betrieben wird; das Bereitstellen eines virtuellen Registers in einer virtuellen Maschine, die auf dem datenverarbeitenden Apparat ausgeführt wird, wobei das virtuelle Register ein oder mehrere Sperrbits aufweist, die dem einen oder den mehreren Steuerbits des Steuerregisters entsprechen; das Setzen eines Wertes des einen oder der mehreren Sperrbits des virtuellen Registers; und in Reaktion auf das Setzen des Wertes des einen oder der mehreren Sperrbits, das Vermeiden, dass der Prozessor so konfiguriert wird, dass er im ersten Verarbeitungsmodus betrieben wird.

Description

  • Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.
  • HINTERGRUND
  • Die vorliegende Offenbarung betrifft Prozessormodussperren.
  • Cloud Computing (Datenverarbeitung auf Rechnerwolken) ist netzwerkbasierte Datenverarbeitung, bei der typischerweise große Sammlungen von Servern, die in Datenzentren oder „Server-Farmen” untergebracht sind, entfernten Endbenutzern nach Bedarf Computerressourcen und Datenspeicherplatz bereitstellen. Einige Cloud-Computing-Dienste stellen Endbenutzern, die eine Schnittstelle zu den Anwendungen über Internet-Browser oder andere Software auf der Client-Seite herstellen, den Zugang zu Softwareanwendungen bereit, wie Textverarbeitungsprogrammen und anderen häufig verwendeten Anwendungen. Elektronische Daten der Benutzer werden üblicherweise in der Server-Farm anstatt auf den Rechenvorrichtungen der Benutzer gespeichert. Die Pflege von Softwareanwendungen und Benutzerdaten auf der Server-Farm vereinfacht die Verwaltung von Endbenutzer-Rechenvorrichtungen. Einige Cloud-Computing-Dienste ermöglichen Endbenutzern das Ausführen von Softwareanwendungen in virtuellen Maschinen.
  • ZUSAMMENFASSUNG
  • Im Allgemeinen kann ein innovativer Aspekt des in dieser Spezifikation beschriebenen Gegenstands in Verfahren ausgeführt werden, die die Handlungen des Betriebs eines Prozessors im datenverarbeitenden Apparat in einem ersten Verarbeitungsmodus umfassen; Setzen eines oder mehrerer Steuerbits eines Steuerregisters des Prozessors, um den Prozessor so zu konfigurieren, dass er in einem anderen zweiten Verarbeitungsmodus betrieben wird; Bereitstellen eines virtuellen Registers in einer virtuellen Maschine, die auf dem datenverarbeitenden Apparat ausgeführt wird, wobei das virtuelle Register ein oder mehrere Sperrbits aufweist, die den Steuerbits des Steuerregisters entsprechen; Setzen eines Wertes des einen oder der mehreren Sperrbits des virtuellen Registers; und in Reaktion auf das Setzen des Wertes des einen oder der mehreren Sperrbits, Vermeiden, dass der Prozessor so konfiguriert wird, dass er im ersten Verarbeitungsmodus betrieben wird. Andere Ausführungsformen dieses Aspektes umfassen entsprechende Systeme, Apparate und Computerprogramme.
  • Diese und andere Aspekte können als Option eins oder mehrere der folgenden Merkmale beinhalten. Ein Versuch, den Wert des einen oder der mehreren Steuerbits des Steuerregisters zu ändern, kann abgefangen werden. Das Setzen des Wertes des einen oder der mehreren Sperrbits kann ferner das Angeben einer Überwachung des Wertes des einen oder der mehreren Steuerbits umfassen. Das Betreiben des Prozessors kann das Betreiben des Prozessors im ersten Verarbeitungsmodus während des Hochfahrens eines Betriebssystems des Prozessors umfassen. Der erste Verarbeitungsmodus kann ein 16-Bit-Verarbeitungsmodus sein und der zweite Verarbeitungsmodus kann ein 32-Bit-Verarbeitungsmodus sein. Der erste Verarbeitungsmodus kann ein 16-Bit-Verarbeitungsmodus sein und der zweite Verarbeitungsmodus kann ein 64-Bit-Verarbeitungsmodus sein. In Reaktion auf das Setzen des Wertes des einen oder der mehreren Sperrbits kann der Prozessor so konfiguriert werden, dass er nur im zweiten Verarbeitungsmodus betrieben wird.
  • Bestimmte Ausführungsformen des in dieser Spezifikation beschriebenen Gegenstands können so implementiert werden, dass sie einen oder mehrere der folgenden Vorteile verwirklichen. Eine Rechenvorrichtung kann vom Betrieb in einem ersten Verarbeitungsmodus zum Betrieb in einem zweiten Verarbeitungsmodus wechseln. Sobald die Rechenvorrichtung im zweiten Verarbeitungsmodus betrieben wird, kann die Rechenvorrichtung nicht wieder im ersten Verarbeitungsmodus betrieben werden.
  • Die Details einer oder mehrerer Ausführungen des Gegenstands, die in dieser Spezifikation beschrieben werden, sind in den begleiteten Zeichnungen und der Beschreibung unten dargelegt. Andere Merkmale, Aspekte und Vorteile des Gegenstands werden aus der Beschreibung, den Zeichnungen und den Ansprüchen deutlich.
  • BESCHREIBUNG DER ZEICHNUNGEN
  • 1 veranschaulicht eine beispielhafte Systemarchitektur einer virtuellen Maschine gemäß der vorliegenden Offenbarung.
  • 24 veranschaulichen vereinfachte schematische Darstellungen eines beispielhaften virtuellen Maschinensystems.
  • 5 veranschaulicht ein Ablaufdiagramm eines beispielhaften Verfahrens zum Steuern eines Verarbeitungsmodus des virtuellen Maschinensystems.
  • AUSFÜHRLICHE BESCHREIBUNG
  • 1 ist eine schematische Darstellung eines beispielhaften virtuellen Maschinensystems 100. Das System umfasst eine oder mehrere Hostmaschinen wie beispielsweise Hostmaschine 102 und Hostmaschine 104. Im Allgemeinen ist eine Hostmaschine eine oder mehrere datenverarbeitende Apparate wie ein rackmontierter Server oder eine andere Rechenvorrichtung. Hostmaschinen können verschiedene Fähigkeiten und Computerarchitekturen aufweisen. Hostmaschinen können miteinander über ein internes Datenkommunikationsnetzwerk 116 kommunizieren. Das interne Netzwerk kann beispielsweise ein oder mehrere drahtgebundene (z. B. Ethernet-) oder drahtlose (z. B. WI-FI-)Netzwerke umfassen. In einigen Implementierungen ist das interne Netzwerk 116 ein Intranet. Hostmaschinen können auch mit Vorrichtungen in externen Netzwerken wie dem Internet 122 über ein oder mehrere Gateways 120 kommunizieren, die datenverarbeitende Apparate sind, die für das Weiterleiten von Datenkommunikationsverkehr zwischen dem internen Netzwerk 116 und dem Internet 122 verantwortlich sind. Andere Arten von externen Netzwerken sind möglich.
  • Jede Hostmaschine führt ein Hostbetriebssystem oder andere Software aus, das/die die zugrunde liegende Hostmaschinenhardware virtualisiert und die gleichzeitige Ausführung einer oder mehrerer virtueller Maschinen verwaltet. Zum Beispiel verwaltet das Hostbetriebssystem 106 die virtuelle Maschine (VM) 110 und VM 112, während Hostbetriebssystem 108 eine einzige VM 114 verwaltet. Jede VM umfasst eine simulierte Version der zugrunde liegenden und als virtuelle Hardware (z. B. virtuelle Hardware 110a, 112a und 114a) bezeichneten Hostmaschinenhardware. Software, die durch die virtuelle Hardware ausgeführt wird, wird als Gastsoftware bezeichnet. In einigen Implementierungen kann Gastsoftware nicht bestimmen, ob sie durch virtuelle Hardware oder durch eine physikalische Hostmaschine ausgeführt wird. Wenn Gastsoftware, die in einer VM ausgeführt wird, oder die VM selbst fehlerhaft funktioniert oder abbricht, werden andere VMs, die auf der Hostmaschine ausgeführt werden, nicht beeinflusst. (Ein) Mikroprozessor(en) einer Hostmaschine kann/können Mechanismen auf Prozessorebene umfassen, um virtueller Hardware zu ermöglichen, Softwareanwendungen effizient auszuführen, indem zugelassen wird, dass Gastsoftware-Anweisungen direkt auf dem Mikroprozessor der Hostmaschine ausgeführt werden, ohne dass Neuschreiben von Code, Neukompilierung oder Anweisungsemulation notwendig ist.
  • Jeder VM (z. B. VMs 110, 112 und 114) wird ein Satz von Seiten virtuellen Speichers vom virtuellen Speicher des zugrunde liegenden Hostbetriebssystems zugeordnet und werden virtuelle Plattenblöcke von einem oder mehreren virtuellen Plattenlaufwerken zugeordnet zur Verwendung durch die Gastsoftware, die auf der VM ausgeführt wird. So ordnet beispielsweise Hostbetriebssystem 106 Speicherseiten und Plattenblöcke zu VM 110 und VM 112 zu und Hostbetriebssystem 108 führt dasselbe mit VM 114 durch. In einigen Implementierungen kann eine gegebene VM nicht auf die Seiten virtuellen Speichers zugreifen, die anderen VMs zugeordnet sind. So kann beispielsweise VM 110 nicht auf Speicherseiten zugreifen, die VM 112 zugeordnet wurden. Ein virtuelles Plattenlaufwerk kann über mehrere VM-Neustarts hinweg verbunden bleiben. Virtuelle Plattenblöcke werden auf physikalischen Plattenlaufwerken zugeordnet, die beispielsweise mit Hostmaschinen verbunden oder über das interne Netzwerk 116 verfügbar sind. Zusätzlich zu virtuellem Speicher und Plattenressourcen können VMs Netzwerkadressen zugeordnet werden, durch die deren entsprechende Gastsoftware mit anderen Prozessen kommunizieren kann, die über das interne Netzwerk 116 oder das Internet 122 erreichbar sind. So kann beispielsweise Gastsoftware, die auf VM 110 ausgeführt wird, mit Gastsoftware kommunizieren, die auf VM 112 oder VM 114 ausgeführt wird. In einigen Implementierungen ist jede VM einem oder mehreren eindeutigen Internetprotokoll-(Internet Protocol, IP-)Adressen der IP Version 4 oder Version 6 zugeordnet. In einigen Implementierungen ist jede VM einem oder mehreren Medienzugriffssteuerungs(Media Access Control, MAC)-Adressen zugeordnet. In einigen Implementierungen teilt jede VM einen TCP-/UDP-(Transmission Control Protocol, Übertragungskontrollprotokoll-/User Datagram Protocol, Benutzer-Datagramm-Protokoll-)Portraum nach dem Netzwerkadressübersetzungs-(Network Address Translation, NAT-)Prinzip. Andere Adresssysteme sind möglich. Die VM-IP-Adressen sind im internen Netzwerk 116 sichtbar und sind in einigen Implementierungen im Internet 122 sichtbar, falls die Adressen beispielsweise mit Nutzung eines geeigneten Routingprotokolls gemeldet werden.
  • Eine Gastsoftware einer VM kann ein Gastbetriebssystem (z. B. Gastbetriebssysteme 110b, 112b und 114b), das Software ist, die die Ausführung entsprechender Gastsoftwareanwendungen (z. B. Gastanwendungen 110c, 112c und 114c) steuert, innerhalb der VM umfassen und stellt diesen Anwendungen Dienste bereit. So könnte beispielsweise ein Gastbetriebssystem eine Variante des UNIX-Betriebssystems sein. Andere Betriebssysteme sind möglich. Jede VM kann dasselbe Gastbetriebssystem oder verschiedene Gastbetriebssysteme ausführen. In weiteren Implementierungen benötigt eine VM kein Gastbetriebssystem, um Gastsoftwareanwendungen auszuführen. Ein Zugriff des Gastbetriebssystems auf Ressourcen wie Netzwerke und virtuelle Plattenspeicher wird durch das zugrunde liegende Betriebssystem gesteuert. In einigen Implementierungen kann ein Hypervisor als ein Hardwarevisualisierungsverfahren verwendet werden, das das gleichzeitige Ausführen mehrerer Betriebssysteme auf einer Hostmaschine ermöglicht. Typ-1 (native oder Bare-Metal) Hypervisoren werden direkt auf der Hardware des Hosts ausgeführt, um die Hardware zu steuern und Gastbetriebssysteme zu verwalten, und Typ-2 (oder gehostete) Hypervisoren werden innerhalb einer herkömmlichen Betriebssystemumgebung ausgeführt.
  • Zur Veranschaulichung und unter Bezugnahme auf die virtuelle Maschine 110, wenn die Gastanwendung 110c oder das Gastbetriebssystem 110b beispielsweise versucht, eine Eingabe-/Ausgabe-Operation auf einer virtuellen Platte durchzuführen, Netzwerkkommunikation einzuleiten oder eine vorrangige Operation durchzuführen, wird die virtuelle Hardware 110a unterbrochen, so dass das Hostbetriebssystem 106 die Handlung stellvertretend für die virtuelle Maschine 110 durchführen kann. Das Hostbetriebssystem 106 kann diese Handlungen mit einem Prozess durchführen, der in Kernelprozessraum 106b, Benutzerprozessraum 106a oder beiden ausgeführt wird.
  • Der Kernelprozessraum 106b ist virtueller Speicher, der für den Kernel 106d des Hostbetriebssystems 106 reserviert ist, der beispielsweise Kernelerweiterungen und Vorrichtungstreiber umfassen kann. Der Kernelprozessraum hat erweiterte Rechte (manchmal als „Supervisor-Modus” bezeichnet); das heißt, dass der Kernel 106d bestimmte vorrangige Operationen durchfahren kann, die für Prozesse, die im Benutzerprozessraum 106a ausgeführt werden, nicht zugänglich sind. Beispiele für vorrangige Operationen umfassen Zugriff auf verschiedene Adressräume, Zugriff auf spezielle Funktionsprozessoreinheiten in der Hostmaschine wie Speicherverwaltungseinheiten usw. Der Benutzerprozessraum 106a ist ein separater Teil virtuellen Speichers, der für Prozesse des Benutzermodus reserviert ist. Prozesse des Benutzermodus können vorrangige Operationen nicht direkt durchführen.
  • 2 ist eine vereinfachte schematische Darstellung eines beispielhaften virtuellen Maschinensystems 200. Das System 200 umfasst eine Hostmaschine 202, die einen Prozessor 203 (z. B. eine zentrale Verarbeitungseinheit) enthält, der ein Hostbetriebssystem 204 ausführt, worin das Hostbetriebssystem 204 eine VM 206 verwaltet. Der Prozessor 203 verwaltet ein Steuerregister 208 und das Hostbetriebssystem 108 verwaltet ein Überwachungsmodul 210 und ein Abfangmodul 212. Das Überwachungsmodul 210 überwacht einen Zustand des Steuerregisters 208 und das Abfangmodul 212 fängt Versuche, den Zustand des Steuerregisters 208 zu ändern, ab, beides wird weiter unten beschrieben.
  • Die Hostmaschine 202 kann durch Nutzen verschiedener Verarbeitungsmodi, z. B. 16-Bit, 32-Bit, 64-Bit usw., betrieben werden. Der Verarbeitungsmodus des Prozessors 203 bezieht sich auf die Daten und den Speicher, die durch den Prozessor 203 adressiert werden. In einigen Beispielen verarbeitet der Prozessor 203, der im 16-Bit-Verarbeitungsmodus betrieben wird, Daten und Speicheradressen, die durch 16 Bits repräsentiert werden; und ebenso verarbeitet der Prozessor 203, der im 32-Bit-Verarbeitungsmodus betrieben wird, Daten und Speicheradressen, die durch 32 Bits repräsentiert werden.
  • In einigen Beispielen, während des Hochfahrens des Hostbetriebssystems 204, wird der Prozessor 203 in einem Verarbeitungsmodus (z. B. dem 16-Bit-Verarbeitungsmodus) betrieben. Nach dem Hochfahren des Hostbetriebssystems 204 kann der Prozessor 203 so konfiguriert werden, dass er in einem anderen Verarbeitungsmodus (z. B. dem 32-Bit- oder 64-Bit-Verarbeitungsmodus) betrieben wird. Ein Wechsel zum anderen Verarbeitungsmodus kann dem Prozessor 203 beispielsweise ermöglichen, mit einer höheren Verarbeitungsrate betrieben zu werden und die Anzahl von Speicherplätzen erhöhen, die der Prozessor 203 adressieren kann. Der Wert eines oder mehrerer benachbarter oder nicht benachbarter Steuerbits des Steuerregisters 208 steuert die Auswahl des Verarbeitungsmodus des Prozessors 203. In einigen Implementierungen konfiguriert der Wert eines einzelnen Steuerbits (z. B. Steuerbit 214) den Verarbeitungsmodus des Prozessors 203. Das Steuerregister 208 kann beispielsweise ein 32-Bit-Register sein, wobei das Steuerbit 214 das 31. Bit ist. Andere Steuerregisterbreiten sind möglich. So konfiguriert beispielsweise das Setzen des Steuerbits 214 auf den Wert „1” den Prozessor 203 für den Betrieb in dem bestimmten Verarbeitungsmodus (z. B. dem 16-Bit-Verarbeitungsmodus) während des Hochfahrens des Systems 200. Um zum anderen Verarbeitungsmodus, z. B. 32-Bit oder 64-Bit, zu wechseln, wird der Wert des Steuerbits 214 geändert. So gibt beispielsweise das Setzen des Steuerbits 214 auf den Wert „0” an, dass der Prozessor 203 den anderen Verarbeitungsmodus (z. B. den 32-Bit- oder 64-Bit-Verarbeitungsmodus) nutzt. In einigen Beispielen steuert der Prozessor 203 das Setzen des Steuerbits 214. In einigen anderen Beispielen steuert das Hostbetriebssystem 204 das Setzen des Steuerbits 214.
  • Während des Hochfahrens des Hostbetriebssystems 204 kann der Prozessor 203 in einem anfänglichen Verarbeitungsmodus betrieben werden. In einigen Beispielen wird das Steuerbit 214 auf „1” gesetzt, wie in 2 dargestellt, um den Prozessor 203 so zu konfigurieren, dass er im anfänglichen Verarbeitungsmodus betrieben wird. Nach dem Hochfahren des Hostbetriebssystems 204 kann der Prozessor 203 so konfiguriert werden, dass er in einem anderen Verarbeitungsmodus betrieben wird. In einigen Beispielen wird das Steuerbit 214 auf „0” gesetzt, wie in 3 dargestellt, um den Prozessor 203 so zu konfigurieren, dass er im späteren Verarbeitungsmodus betrieben wird. Sobald der Prozessor 203 die Nutzung des anfänglichen Verarbeitungsmodus (z. B. Hochfahren mit dem 16-Bit-Verarbeitungsmodus) beendet hat und zum Betrieb im späteren Verarbeitungsmodus gewechselt hat, kann der Prozessor 203 den anfänglichen Verarbeitungsmodus nicht wieder nutzen, z. B. ist der Verarbeitungsmodus von Prozessor 203 „gesperrt”.
  • In einigen Beispielen könnte der anfängliche Verarbeitungsmodus des Prozessors 203 zu Sicherheitslückenproblemen mit dem System 200 führen. Daher kann das Minimieren der Verwendung des anfänglichen Verarbeitungsmodus durch den Prozessor 203 die Sicherheitslückenprobleme minimieren oder abschwächen. In einigen Implementierungen verwendet der Prozessor 203 den anfänglichen Verarbeitungsmodus nur bei Bedarf, wie etwa während des Hochfahrens des Hostbetriebssystems 204. In einigen Beispielen ist der anfängliche Verarbeitungsmodus der 16-Bit-Verarbeitungsmodus. Um zu vermeiden, dass der Prozessor 203 so konfiguriert wird, dass er den anfänglichen Verarbeitungsmodus verwendet, nachdem er in einen anderen Verarbeitungsmodus konfiguriert wurde, wird der Wert des/der Steuerbits (z. B. Steuerbit 214) überwacht, so dass nur der spätere Verarbeitungsmodus genutzt wird.
  • 4 zeigt das System 200 mit einem virtuellen Register 400, das durch die VM 206 bereitgestellt wird. In verschiedenen Implementierungen wird die Überwachung des Steuerregisters 208 und speziell des/der Steuerbits des Steuerregisters 208 durch das virtuelle Register 400 bestimmt. Der Wert eines oder mehrerer benachbarter oder nicht benachbarter Sperrbits des virtuellen Registers 400 gibt einen Überwachungsstatus des/von Steuerbits des Steuerregisters 208 an. So bestimmt beispielsweise der Wert des Sperrbits 402, ob das Überwachungsmodul 210 zur Überwachung von Steuerbit 214 aktiviert oder deaktiviert wird. In einigen Beispielen kann die VM 206 mehrere virtuelle Register 400 umfassen.
  • In einigen Implementierungen ist das virtuelle Register 400 ein 32-Bit-Register, wobei ein Sperrbit 402 als das 31. Bit des virtuellen Registers 400 gesetzt wird. Andere Registerbreiten sind möglich. In weiteren Implementierungen gibt das Setzen des Sperrbits 402 auf den Wert „0” das Aktivieren des Überwachungsmoduls 210 zum Überwachen des Wertes des Steuerbits 214 und das Erkennen von Versuchen, den Wert des Steuerbits 214 zu ändern, an. Das Setzen des Sperrbits 402 auf den Wert „1” gibt das Deaktivieren des Überwachungsmoduls 210 zum Überwachen des Wertes des Steuerbits 214 an. In einigen Beispielen steuert die VM 206 das Setzen des Sperrbits 402.
  • Zu diesem Zweck, wenn der Wert des Sperrbits 402 gesetzt wird, um anzugeben, dass das Überwachungsmodul 210 den Wert des Steuerbits 214 überwacht, verwendet der Prozessor 203 nur einen ausgewählten Verarbeitungsmodus (z. B. den späteren Verarbeitungsmodus nach dem Hochfahren des Hostbetriebssystems 204). Wenn ein Versuch, den Wert des Steuerbits 214 zu ändern, unternommen wird, der dazu führt, dass der Prozessor 203 Verarbeitungsmodi wechselt (z. B. der Prozessor 203 wechselt vom anderen Verarbeitungsmodus zu dem bestimmten Verarbeitungsmodus), fängt das Abfangmodul 212 den Versuch ab. Beim Abfangen eines Versuchs verhindert das System 200, dass das Steuerbit 214 geändert wird, damit der Prozessor 203 keine Verarbeitungsmodi ändert. In einigen Beispielen, wenn das Abfangmodul 212 den Versuch abfängt, kann eine Benachrichtigung ausgelöst werden, um ein Eindringen in das System 100 anzugeben. In einigen Beispielen, wenn das Abfangmodul 212 den Versuch abfängt, wird jede Verarbeitung durch den Prozessor 203 beendet.
  • 5 ist ein Ablaufdiagramm eines beispielhaften Verfahrens 500 zum Konfigurieren des Verarbeitungsmodus des Prozessors 203. Der Prozessor 203 wird im anfänglichen Verarbeitungsmodus betrieben (502). Der Wert des/der Steuerbits (z. B. Steuerbit 214) wird gesetzt, um den Prozessor 203 so zu konfigurieren, dass er im anderen Verarbeitungsmodus betrieben wird (504). Das virtuelle Register 400 wird mit dem/den Sperrbit(s) 402 bereitgestellt, das/die dem/den Steuerbit(s) 214 entspricht/entsprechen (506). Der Wert des/der Sperrbits 402 wird gesetzt, um die Überwachung des Wertes des/der Steuerbits 214 anzugeben, um dafür zu sorgen, dass nur der andere Verarbeitungsmodus nach dem Setzen des Wertes des/der Sperrbits 402 genutzt wird (508). Ferner kann nach dem Setzen des Wertes des/der Sperrbits 402 der Prozessor 203 nicht im anfänglichen Verarbeitungsmodus betrieben werden.
  • Ausführungsformen des Gegenstands und die in dieser Spezifikation beschriebenen Tätigkeiten können in digitalen elektronischen Schaltungen oder in Computer-Software, Firmware oder Hardware implementiert werden, einschließlich der in dieser Spezifikation offengelegten Strukturen und ihrer strukturellen Entsprechungen oder in Kombinationen von einer oder mehrerer von ihnen. Ausführungsformen des in dieser Spezifikation beschriebenen Gegenstands können als ein oder mehrere Computerprogramme, d. h. als ein oder mehrere Module von Computerprogrammanweisungen implementiert werden, die auf einem Computer-Speichermedium für die Ausführung durch oder die Steuerung des Betriebs des datenverarbeitenden Apparats kodiert werden. Alternativ oder zusätzlich können die Programmanweisungen auf einem künstlich erzeugten propagierten Signal, z. B. einem maschinell erzeugten elektrischen, optischen oder elektromagnetischen Signal künstlich kodiert werden, das erzeugt wird, um Informationen für die Übertragung auf einen geeigneten Empfängerapparat für die Ausführung durch einen datenverarbeitenden Apparat zu kodieren. Bei einem Computer-Speichermedium kann es sich um ein maschinell lesbares Speichergerät, einen maschinell lesbaren Speicherträger, ein zufälliges oder serielles Speicher-Array oder Speichergerät oder um eine Kombination aus einem oder mehreren dieser Geräte handeln oder in ihnen enthalten sein. Außerdem ist ein Computer-Speichermedium zwar kein verbreitetes Signal, aber ein Computer-Speichermedium kann eine Quelle oder ein Bestimmungsort von Computerprogrammanweisungen sein, die in einem künstlich erzeugten verbreiteten Signal kodiert werden. Bei dem Computer-Speichermedium kann es sich auch um eine oder mehrere unterschiedliche physische Komponenten oder Medien (z. B. mehrere CDs, Plattenlaufwerke oder andere Speichergeräte) handeln, bzw. kann das Speichermedium darin enthalten sein.
  • Die in dieser Spezifikation beschriebenen Tätigkeiten können als Tätigkeiten implementiert werden, die von einem datenverarbeitenden Apparat mit Daten durchgeführt werden, die auf einem oder mehreren maschinell lesbaren Speichergeräten gespeichert werden oder von anderen Quellen entgegengenommen werden.
  • Der Begriff „datenverarbeitender Apparat” umfasst alle Arten von Apparaten, Geräten und Maschinen für die Verarbeitung von Daten, einschließlich beispielsweise durch einen programmierbaren Prozessor, einen Computer, ein System auf einem oder mehreren Chips oder Kombinationen des Vorstehenden. Der Apparat kann logische Schaltungen mit einem Sonderzweck, z. B. ein FPGA (Field Programmable Gate Array) oder eine ASIC (anwendungsspezifische integrierte Schaltung) enthalten. Der Apparat kann neben der Hardware auch einen Code einschließen, der eine Ausführungsumgebung für das betreffende Computerprogramm in der Frage erstellt, z. B. einen Code, der Prozessor-Firmware, einen Protokollstapel, ein Datenbank-Managementsystem, ein Betriebssystem, eine plattformunabhängige Laufzeitumgebung, eine virtuelle Maschine oder eine Kombination einer oder mehrerer der genannten darstellt. Der Apparat und die Ausführungsumgebung können verschiedene unterschiedliche Rechnermodell-Infrastrukturen umsetzen, wie Webdienstleistungen, verteilte Rechen- und Grid-Computing-Infrastrukturen.
  • Ein Computerprogramm (auch bezeichnet als Programm, Software, Softwareanwendung, Script oder Code) kann in einer beliebigen Form von Programmiersprache geschrieben sein, einschließlich kompilierter oder interpretierter Sprachen, deklarativer oder verfahrensorientierter Sprachen, und das Programm kann in jeder beliebigen Form eingesetzt sein, darunter als unabhängiges Programm oder als ein Modul, eine Komponente, eine Subroutine, ein Objekt oder eine andere Einheit, die zur Benutzung in einer Rechenumgebung geeignet ist. Ein Computerprogramm kann, muss aber nicht, einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Teil einer Datei gespeichert sein, die andere Programme oder Daten enthält (z. B. ein oder mehrere Scripts, die in einem Dokument in Markup-Sprache gespeichert sind), in einer einzelnen Datei speziell für das betreffende Programm oder in mehreren koordinierten Dateien (z. B. Dateien, die ein oder mehrere Module, Unterprogramme oder Teile von Code speichern). Ein Computerprogramm kann auf einem Computer oder mehreren Computern eingerichtet sein oder ausgeführt werden, die an einem Standort angeordnet sind oder über mehrere Standorte verteilt sind und über ein Kommunikationsnetz verbunden sind.
  • Die in dieser Spezifikation beschriebenen Prozesse und logischen Abläufe können durch einen oder mehrere programmierbare Prozessoren durchgeführt werden, die ein oder mehrere Computerprogramme ausführen, um Handlungen aufgrund von Eingangsdaten durchzuführen und Ausgabedaten zu erstellen. Die Prozesse und die logischen Abläufe können auch durch logische Sonderzweckschaltungen durchgeführt werden, und der Apparat kann als Sonderzweckschaltungen implementiert werden, z. B. ein FPGA (Field Programmable Gate Array) oder eine ASIC (anwendungsspezifische integrierte Schaltung).
  • Prozessoren, die für die Ausführung eines Computerprogramms geeignet sind, schließen beispielsweise sowohl allgemeine und als auch Spezial-Mikroprozessoren sowie alle Arten eines oder mehrerer Prozessoren jeglicher Art Digitalrechner ein. Ganz allgemein nimmt ein Prozessor Befehle und Daten von einem Festwertspeicher oder einem Arbeitsspeicher oder von beiden entgegen. Die wesentlichen Elemente eines Computers sind ein Prozessor für das Durchführen von Handlungen gemäß Anweisungen und ein oder mehr Speichergeräte für das Speichern von Anweisungen und Daten. Ganz allgemein gehören zu einem Computer auch ein oder mehrere Massenspeichergeräte für das Speichern von Daten, z. B. Magnet-, magnetooptische oder optische Disketten, um Daten entgegenzunehmen und/oder zu übertragen, bzw. ist ein Computer operativ an ein solches Speichergerät gekoppelt. Jedoch muss ein Computer solche Geräte nicht haben. Außerdem kann ein Computer in einem anderen Gerät eingebettet sein, z. B. in einem Mobiltelefon, einem Organizer (PDA), einem mobilen Audio- oder Videoplayer, einer Spielkonsole, einem Funknavigationsempfänger oder einem tragbaren Speichergerät (z. B. in einem USB-Stick), um nur einige zu nennen. Geräte, die für das Speichern von Computerprogrammanweisungen und -daten geeignet sind, schließen alle Formen von Dauerspeichern, Medien- und Speichergeräten ein, einschließlich beispielsweise Halbleiter-Speichergeräte, z. B. EPROM, EEPROM und USB-Flash-Speicher; Magnetplatten, z. B. interne Festplatten oder herausnehmbare Platten; magnetooptische Platten; und CD-ROMs und DVD-ROMs. Der Prozessor und der Speicher können durch logische Sonderzweckschaltungen ergänzt werden oder darin eingebaut sein.
  • Um die Interaktion mit einem Benutzer zu ermöglichen, können in dieser Spezifikation beschriebene Ausführungsformen des Gegenstands auf einem Computer mit einem Anzeigegerät implementiert werden, z. B. einem CRT-(Kathodenstrahlröhre) oder LCD-(Flüssigkristallanzeige)Monitor, mit welchem dem Benutzer Informationen angezeigt werden, sowie einer Tastatur und einem Anzeigegerät, z. B. einer Maus oder einem Trackball, mit denen der Benutzer Eingaben in den Computer vornehmen kann. Es können auch andere Arten von Einrichtungen verwendet werden, um für eine Interaktion mit einem Nutzer zu sorgen; beispielsweise kann eine dem Benutzer gelieferte Rückkopplung beliebiger Form von sensorischer Rückkopplung vorliegen, z. B. eine visuelle Rückkopplung, auditive Rückkopplung oder taktile Rückkopplung; und die Eingabe von dem Nutzer kann in beliebiger Form empfangen werden, einschließlich akustischer, Sprach- oder taktiler Eingabe. Darüber hinaus kann ein Computer über das Senden von Dokumenten an und das Empfangen von Dokumenten von einer Einrichtung, die vom Benutzer verwendet wird, mit einem Benutzer interagieren; beispielsweise über das Senden von Webpages an einen Webbrowser auf dem Clientgerät des Benutzers als Antwort auf die vom Webbrowser empfangenen Aufforderungen.
  • Ausführungsformen der in dieser Spezifikation betrachteten Gegenstands können in ein Computersystem implementiert werden, das eine Backend-Komponente (z. B. einen Datenserver), oder eine Middleware-Komponente (z. B. einen Anwendungsserver), oder eine Frontend-Komponente (z. B. einen Client-Computer mit grafischem Benutzerinterface oder Webbrowser) umfasst, worüber der Benutzer mit einer Implementierung der in dieser Spezifikation betrachteten Gegenstands interagieren kann, oder eine beliebige Kombination aus solchen Backend, Middleware- oder Frontend-Komponenten. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium digitaler Datenkommunikation miteinander verbunden sein, z. B. ein Kommunikationsnetzwerk. Zu Beispielen für Kommunikationsnetzwerke zählen ein lokales Netzwerk („LAN”), ein Fernnetzwerk („WAN”), eine netzübergreifende Verbindung (z. B. das Internet) und Peer-to-Peer Netzwerke (z. B. Ad-Hoc Peer-to-Peer Netzwerke).
  • Das Computersystem kann Clients und Server beinhalten. Ein Client und Server befinden sich im Allgemeinen ortsfern voneinander und interagieren typischerweise über ein Kommunikationsnetz. Die Beziehung zwischen Client und Server entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computern laufen und die eine Client-Server-Beziehung zueinander haben. In einigen Ausführungsformen überträgt ein Server Daten (z. B. eine HTML-Seite) an ein Client-Gerät (z. B. zum Anzeigen von Daten auf und zum Empfangen von Benutzereingaben von einem Benutzer, der mit dem Client-Gerät interagiert). Am Client-Gerät erzeugte Daten (z. B. infolge der Benutzerinteraktion) können vom Client-Gerät am Server empfangen werden.
  • Zwar enthält diese Spezifikation viele spezifische Implementierungsdetails, jedoch sollten diese nicht als Beschränkungen des Umfangs oder des Anspruchs ausgelegt werden, sondern vielmehr als Beschreibungen spezifischer Merkmale bestimmter Ausführungsformen bestimmter Erfindungen. Bestimmte Merkmale, die in dieser Spezifikation im Kontext der unterschiedlichen Ausführungsformen beschrieben werden, können auch in Kombination in einer einzelnen Ausführungsform implementiert werden. Andererseits können verschiedene Merkmale, die im Kontext einer einzelnen Ausführungsform beschrieben werden, in mehreren Ausführungsformen oder in jeder geeigneten Unterkombination implementiert werden. Außerdem können ein oder mehrere Merkmale einer beanspruchten Kombination in einigen Fällen aus der Kombination herausgelöst werden, auch wenn die Merkmale vorstehend als in gewissen Kombinationen funktionierend beschrieben oder gar als eine Kombination beansprucht werden, und die beanspruchte Kombination kann an eine Unterkombination oder eine Variation einer Unterkombination verwiesen werden.
  • Ebenso werden Tätigkeiten in den Zeichnungen zwar in einer bestimmten Reihenfolge dargestellt, aber dies sollte nicht als Erfordernis verstanden werden, dass solche Tätigkeiten in der bestimmten gezeigten Reihenfolge oder in einer aufeinanderfolgenden Reihenfolge durchgeführt werden müssen oder dass alle dargestellten Tätigkeiten durchgeführt werden müssen, um erwünschte Ergebnisse zu erzielen. Unter bestimmten Umständen können Multitasking und eine Parallelbearbeitung vorteilhaft sein. Darüber hinaus sollte die Trennung verschiedener Systemkomponenten in den oben beschriebenen Ausführungsformen nicht in allen Ausführungsformen erforderlich aufgefasst werden, und es versteht sich, dass die beschriebenen Programmkomponenten und Systeme im Allgemeinen zusammen in ein einziges Softwareprodukt integriert oder zu mehreren Softwareprodukten verkapselt werden können.
  • Folglich wurden bestimmte Ausführungsformen des Gegenstands beschrieben. Weitere Ausführungsformen gehören zum Umfang der folgenden Ansprüche. In einigen Fällen können die in den Ansprüchen beschriebenen Handlungen in einer anderen Reihenfolge durchgeführt werden und dennoch erwünschte Ergebnisse erzielen. Zusätzlich erfordern die in den beigefügten Figuren dargestellten Prozesse nicht notwendigerweise die bestimmte gezeigte Reihenfolge oder aufeinanderfolgende Reihenfolge, um erwünschte Ergebnisse zu erzielen. In bestimmten Implementierungen können Multitasking und eine Parallelbearbeitung vorteilhaft sein.

Claims (14)

  1. System, das Folgendes umfasst: ein computerlesbares Medium mit darauf gespeicherten Anweisungen; und einen datenverarbeitenden Apparat, der dafür ausgelegt ist, die Anweisungen auszuführen, um Operationen durchzuführen, die Folgendes umfassen: das Betreiben eines Prozessors im datenverarbeitenden Apparat in einem ersten Verarbeitungsmodus; das Setzen eines oder mehrerer Steuerbits eines Steuerregisters des Prozessors, um den Prozessor so zu konfigurieren, dass er in einem anderen zweiten Verarbeitungsmodus betrieben wird; das Bereitstellen eines virtuellen Registers in einer virtuellen Maschine, die auf dem datenverarbeitenden Apparat ausgeführt wird, wobei das virtuelle Register ein oder mehrere Sperrbits aufweist, die dem einen oder den mehreren Steuerbits des Steuerregisters entsprechen; das Setzen eines Wertes des einen oder der mehreren Sperrbits des virtuellen Registers; und in Reaktion auf das Setzen des Wertes des einen oder der mehreren Sperrbits, das Vermeiden, dass der Prozessor so konfiguriert wird, dass er im ersten Verarbeitungsmodus betrieben wird.
  2. System nach Anspruch 1, worin die Operationen ferner das Abfangen eines Versuchs, den Wert des einen oder der mehreren Steuerbits des Steuerregisters zu ändern, umfassen.
  3. System nach Anspruch 1, worin das Setzen des Wertes des einen oder der mehreren Sperrbits ferner das Angeben einer Überwachung des Wertes des einen oder der mehreren Steuerbits umfasst.
  4. System nach Anspruch 1, worin das Betreiben des Prozessors ferner das Betreiben des Prozessors im ersten Verarbeitungsmodus während des Hochfahrens eines Betriebssystems des Prozessors umfasst.
  5. System nach Anspruch 1, worin der erste Verarbeitungsmodus ein 16-Bit-Verarbeitungsmodus ist und der zweite Verarbeitungsmodus ein 32-Bit-Verarbeitungsmodus ist.
  6. System nach Anspruch 1, worin der erste Verarbeitungsmodus ein 16-Bit-Verarbeitungsmodus ist und der zweite Verarbeitungsmodus ein 64-Bit-Verarbeitungsmodus ist.
  7. System nach Anspruch 1, worin, in Reaktion auf das Setzen des Wertes des einen oder der mehreren Sperrbits, die Operationen ferner das Konfigurieren des Prozessors umfassen, so dass er nur im zweiten Verarbeitungsmodus betrieben wird.
  8. Computerprogrammprodukt, das auf einem oder mehreren Speichermedien gespeichert ist, zum Steuern eines Verarbeitungsmodus eines datenverarbeitenden Apparats, worin das Computerprogrammprodukt durch den datenverarbeitenden Apparat ausgeführt werden kann, um den datenverarbeitenden Apparat zu veranlassen, Operationen durchzuführen, die umfassen: das Betreiben eines Prozessors im datenverarbeitenden Apparat in einem ersten Verarbeitungsmodus; das Setzen eines oder mehrerer Steuerbits eines Steuerregisters des Prozessors, um den Prozessor so zu konfigurieren, dass er in einem anderen zweiten Verarbeitungsmodus betrieben wird; das Bereitstellen eines virtuellen Registers in einer virtuellen Maschine, die auf dem datenverarbeitenden Apparat ausgeführt wird, wobei das virtuelle Register ein oder mehrere Sperrbits aufweist, die dem einen oder den mehreren Steuerbits des Steuerregisters entsprechen; das Setzen eines Wertes des einen oder der mehreren Sperrbits des virtuellen Registers; und in Reaktion auf das Setzen des Wertes des einen oder der mehreren Sperrbits, das Vermeiden, dass der Prozessor so konfiguriert wird, dass er im ersten Verarbeitungsmodus betrieben wird.
  9. Computerprogrammprodukt nach Anspruch 8, worin die Operationen ferner das Abfangen eines Versuchs, den Wert des einen oder der mehreren Steuerbits des Steuerregisters zu ändern, umfassen.
  10. Computerprogrammprodukt nach Anspruch 8, worin das Setzen des Wertes des einen oder der mehreren Sperrbits ferner das Angeben einer Überwachung des Wertes des einen oder der mehreren Steuerbits umfasst.
  11. Computerprogrammprodukt nach Anspruch 8, worin das Betreiben des Prozessors ferner das Betreiben des Prozessors im ersten Verarbeitungsmodus während des Hochfahrens eines Betriebssystems des Prozessors umfasst.
  12. Computerprogrammprodukt nach Anspruch 8, worin der erste Verarbeitungsmodus ein 16-Bit-Verarbeitungsmodus ist und der zweite Verarbeitungsmodus ein 32-Bit-Verarbeitungsmodus ist.
  13. Computerprogrammprodukt nach Anspruch 8, worin der erste Verarbeitungsmodus ein 16-Bit-Verarbeitungsmodus ist und der zweite Verarbeitungsmodus ein 64-Bit-Verarbeitungsmodus ist.
  14. Computerprogrammprodukt nach Anspruch 8, worin, in Reaktion auf das Setzen des Wertes des einen oder der mehreren Sperrbits, die Operationen ferner das Konfigurieren des Prozessors umfassen, sodass er nur im zweiten Verarbeitungsmodus betrieben wird.
DE202012013448.5U 2011-01-13 2012-01-11 Prozessormodussperre Expired - Lifetime DE202012013448U1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201161432526P 2011-01-13 2011-01-13
US61/432,526 2011-01-13
US13/346,547 2012-01-09
US13/346,547 US20120185688A1 (en) 2011-01-13 2012-01-09 Processor mode locking

Publications (1)

Publication Number Publication Date
DE202012013448U1 true DE202012013448U1 (de) 2017-01-20

Family

ID=46491657

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202012013448.5U Expired - Lifetime DE202012013448U1 (de) 2011-01-13 2012-01-11 Prozessormodussperre

Country Status (6)

Country Link
US (1) US20120185688A1 (de)
EP (1) EP2663922B1 (de)
CN (1) CN103547997B (de)
AU (1) AU2012200562B2 (de)
DE (1) DE202012013448U1 (de)
WO (1) WO2012097073A2 (de)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8533343B1 (en) 2011-01-13 2013-09-10 Google Inc. Virtual network pairs
US9135037B1 (en) 2011-01-13 2015-09-15 Google Inc. Virtual network protocol
US9419921B1 (en) 2011-01-13 2016-08-16 Google Inc. Network address translation for virtual machines
US8874888B1 (en) 2011-01-13 2014-10-28 Google Inc. Managed boot in a cloud system
US8745329B2 (en) 2011-01-20 2014-06-03 Google Inc. Storing data across a plurality of storage nodes
US8812586B1 (en) 2011-02-15 2014-08-19 Google Inc. Correlating status information generated in a computer network
US9063818B1 (en) 2011-03-16 2015-06-23 Google Inc. Automated software updating based on prior activity
US8533796B1 (en) 2011-03-16 2013-09-10 Google Inc. Providing application programs with access to secured resources
US9237087B1 (en) 2011-03-16 2016-01-12 Google Inc. Virtual machine name resolution
US8261295B1 (en) 2011-03-16 2012-09-04 Google Inc. High-level language for specifying configurations of cloud-based deployments
US10228959B1 (en) 2011-06-02 2019-03-12 Google Llc Virtual network for virtual machine communication and migration
US9075979B1 (en) 2011-08-11 2015-07-07 Google Inc. Authentication based on proximity to mobile device
US8966198B1 (en) 2011-09-01 2015-02-24 Google Inc. Providing snapshots of virtual storage devices
US8958293B1 (en) 2011-12-06 2015-02-17 Google Inc. Transparent load-balancing for cloud computing services
US9178698B1 (en) 2011-12-21 2015-11-03 Google Inc. Dynamic key management
US8800009B1 (en) 2011-12-30 2014-08-05 Google Inc. Virtual machine service access
US8983860B1 (en) 2012-01-30 2015-03-17 Google Inc. Advertising auction system
US9672052B1 (en) 2012-02-16 2017-06-06 Google Inc. Secure inter-process communication
US8996887B2 (en) 2012-02-24 2015-03-31 Google Inc. Log structured volume encryption for virtual machines
US8677449B1 (en) 2012-03-19 2014-03-18 Google Inc. Exposing data to virtual machines
US9069806B2 (en) 2012-03-27 2015-06-30 Google Inc. Virtual block devices
US8953439B1 (en) 2012-12-31 2015-02-10 Juniper Networks, Inc. Separation of control plane functions using virtual machines in network device
US9430255B1 (en) 2013-03-15 2016-08-30 Google Inc. Updating virtual machine generated metadata to a distribution service for sharing and backup

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69505224T2 (de) * 1994-07-22 1999-05-20 Advanced Micro Devices Inc Computersystem
US5778444A (en) * 1996-05-06 1998-07-07 Motorola, Inc. Method and apparatus for reset-sensitive and controlled register write accesses in a data processing system with user and test modes
US6076157A (en) * 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US6178482B1 (en) * 1997-11-03 2001-01-23 Brecis Communications Virtual register sets
US6018759A (en) * 1997-12-22 2000-01-25 International Business Machines Corporation Thread switch tuning tool for optimal performance in a computer processor
CN1152306C (zh) * 2001-01-23 2004-06-02 英业达股份有限公司 防止多处理器计算机中各处理器间进程发生冲突的方法
US6968460B1 (en) * 2001-05-10 2005-11-22 Advanced Micro Devices, Inc. Cryptographic randomness register for computer system security
US6823451B1 (en) * 2001-05-10 2004-11-23 Advanced Micro Devices, Inc. Integrated circuit for security and manageability
US20030028781A1 (en) * 2001-05-10 2003-02-06 Strongin Geoffrey S. Mechanism for closing back door access mechanisms in personal computer systems
US6862641B1 (en) * 2001-05-10 2005-03-01 Advanced Micro Devices, Inc. Interruptable and re-enterable system management mode programming code
US6832317B1 (en) * 2001-05-10 2004-12-14 Advanced Micro Devices, Inc. Personal computer security mechanism
US6898697B1 (en) * 2002-03-29 2005-05-24 Advanced Micro Devices, Inc. Efficient method for mode change detection and synchronization
US7552255B1 (en) * 2003-07-30 2009-06-23 Intel Corporation Dynamically partitioning pipeline resources
US7478388B1 (en) * 2004-04-21 2009-01-13 Vmware, Inc. Switching between multiple software entities using different operating modes of a processor in a computer system
US7260702B2 (en) * 2004-06-30 2007-08-21 Microsoft Corporation Systems and methods for running a legacy 32-bit x86 virtual machine on a 64-bit x86 processor
US20090271867A1 (en) * 2005-12-30 2009-10-29 Peng Zhang Virtual machine to detect malicious code
US8010966B2 (en) * 2006-09-27 2011-08-30 Cisco Technology, Inc. Multi-threaded processing using path locks
US7836285B2 (en) * 2007-08-08 2010-11-16 Analog Devices, Inc. Implementation of variable length instruction encoding using alias addressing

Also Published As

Publication number Publication date
AU2012200562B2 (en) 2013-06-20
CN103547997A (zh) 2014-01-29
EP2663922B1 (de) 2019-10-23
WO2012097073A2 (en) 2012-07-19
EP2663922A2 (de) 2013-11-20
AU2012200562A1 (en) 2012-08-02
WO2012097073A3 (en) 2012-10-26
EP2663922A4 (de) 2016-06-01
US20120185688A1 (en) 2012-07-19
CN103547997B (zh) 2017-03-01

Similar Documents

Publication Publication Date Title
DE202012013448U1 (de) Prozessormodussperre
DE202013012495U1 (de) Metadatenbasierte virtual Maschine-Konfiguration
EP2642395B1 (de) Verfahren und Vorrichtung zum Ausführen von Workflow-Skripten
DE112015004555B4 (de) Verarbeiten eines Gast-Ereignisses in einem von einem Hypervisor gesteuerten System
DE102013207608B4 (de) Instrumentieren von Software-Anwendungen für die Konfiguration derselben
DE102011103218B4 (de) Systeme, Verfahren und Vorrichtung zum Virtualisieren von TPM- Zugriffen
DE112012005209T5 (de) Brückenfunktion zwischen Virtual Machine Monitor und Bare-Metal-Bootvorgang
DE102007060324A1 (de) Computerbetrieb im Mehrfachmodus
DE102009023953A1 (de) Verfahren zum Booten eines zustandslosen Client
DE102017217971A1 (de) Ermöglichen von Debugging von serverlosen Anwendungen mittels Graph-Rewriting
DE112007001714T5 (de) Virtualisieren von Leistungszählern
DE112012000635T5 (de) Dynamische Speicherverwaltung in einer virtualisierten Datenverarbeitungsumgebung
DE102010001985A1 (de) Vorrichtung zum Schalten des Betriebs einer virtuellen Maschine zwischen mehreren Computern, die der gleichen Computerplattform zugeordnet sind, und entsprechende Schaltverfahren
DE102015118886A1 (de) Lizenzieren in der Cloud
DE112020000280B4 (de) Transparente interpretation von gastbefehlen in einer sicheren virtuellen maschinenumgebung
DE112013000369T5 (de) Verwaltung von Threads innerhalb einer Datenverarbeitungsumgebung
DE112006001933B4 (de) Stillegen eines Prozessorbusagenten
DE202013012493U1 (de) Stufen der Datenspeicherung für Webanwendungen und Browser-Erweiterungen
DE202013012478U1 (de) Kompression der datenkarte
DE112011102876T5 (de) Ressourcenverwaltungs- und Sicherheitssystem
DE102016222861A1 (de) Transparentes, sicheres Durchführen von Abrufvorgängen
DE112020000303T5 (de) Testen von speicherschutz-hardware in einer umgebung einer sicheren virtuellen maschine
DE112020003578B4 (de) Mindern von bedrohungen von arbeitslasten auf grundlage von containern
DE112016001730T5 (de) Virtuelle Maschinensysteme
DE112015001477T5 (de) Hardwarezähler zum Verfolgen einer Auslastung in einem Multithreading-Computersystem

Legal Events

Date Code Title Description
R150 Utility model maintained after payment of first maintenance fee after three years
R207 Utility model specification
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0009445000

Ipc: G06F0009440100

R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R151 Utility model maintained after payment of second maintenance fee after six years
R152 Utility model maintained after payment of third maintenance fee after eight years
R071 Expiry of right