DE112017008307T5 - Systeme und verfahren zur effizienten unterbrechung von virtuellen maschinen - Google Patents

Systeme und verfahren zur effizienten unterbrechung von virtuellen maschinen Download PDF

Info

Publication number
DE112017008307T5
DE112017008307T5 DE112017008307.9T DE112017008307T DE112017008307T5 DE 112017008307 T5 DE112017008307 T5 DE 112017008307T5 DE 112017008307 T DE112017008307 T DE 112017008307T DE 112017008307 T5 DE112017008307 T5 DE 112017008307T5
Authority
DE
Germany
Prior art keywords
interrupt
virtual machine
execution
vmm
lightweight
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.)
Withdrawn
Application number
DE112017008307.9T
Other languages
English (en)
Inventor
Kai Wang
Bing Zhu
Fangjian ZHONG
Yadong Qi
Peng Zou
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 DE112017008307T5 publication Critical patent/DE112017008307T5/de
Withdrawn 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/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • 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/45579I/O management, e.g. providing access to device drivers or storage
    • 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L2012/40208Bus networks characterized by the use of a particular bus standard
    • H04L2012/40215Controller Area Network CAN
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L2012/40267Bus for use in transportation systems
    • H04L2012/40273Bus for use in transportation systems the transportation system being a vehicle

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 Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Advance Control (AREA)

Abstract

Es sind Systeme und Verfahren bereitgestellt, die einen leichtgewichtigen VMM zur effizienten Unterbrechung virtueller Maschinen befähigen. In einigen Beispielen ist der leichtgewichtige VMM konfiguriert, eine Selbst-IPI zum Zustellen externer Unterbrechungen an die virtuelle Maschinen zu verwenden. Die Selbst-IPI kann durch Schreiben eines Werts oder mehrere Werte, enthaltend eine Kennung der externen Unterbrechung, in ein ICR einer programmierbaren Unterbrechungssteuerung er-zeugt werden. Die programmierbare Unterbrechungssteuerung kann einen oder mehrere Werte aus der ICR abrufen, die externe Unterbrechung identifizieren und die externe Unterbrechung verarbeiten, was dazu führt, dass die externe Unterbrechung in eine IDT einer virtuellen Maschine geschrieben wird, die Ziel einer Unterbrechungszustellung durch den leichtgewichtigen VMM ist.

Description

  • STAND DER TECHNIK
  • Vorteile einer Hardware-Virtualisierung enthalten flexible Ressourcenbereitstellung, Hardware-unabhängigen Betrieb für Gast-Betriebssysteme und erhöhte Sicherheit für Software-Anwendungen. Zur Bereitstellung dieser Vorteile muss ein Virtualisierungssystem jedoch mehrere Schichten von Computer-Hardware und -Software enthalten. Diese Schichten können einen Prozessor und Speicher, einen Hypervisor, der durch den Prozessor ausgeführt wird, um die Computer-Hardware zu virtualisieren, ein oder mehr Gast-Betriebssysteme, die auf der virtualisierten Computer-Hardware laufen, und Software-Anwendungen, die mit der Unterstützung der Gast-Betriebssysteme laufen, enthalten. Der Hypervisor spielt in einem Virtualisierungssystem eine kritische Rolle, da es der Hypervisor ist, der die darunter liegende Hardware virtualisiert, sodass Gast-Betriebssysteme im Allgemeinen so laufen können wie in einem nicht virtualisierten System.
  • Figurenliste
    • 1 ist ein Blockdiagramm, das eine Rechenvorrichtung veranschaulicht, die einen leichtgewichtigen Monitor einer virtuellen Maschine gemäß einem Beispiel der vorliegenden Offenbarung implementiert.
    • 2 ist ein Ablaufdiagramm, das einen Unterbrechungszustellungsprozess gemäß einem Beispiel der vorliegenden Offenbarung veranschaulicht, der durch die Rechenvorrichtung von 1 ausführbar ist.
    • 3 ist ein Blockdiagramm, das eine Rechenvorrichtung gemäß einem Beispiel der vorliegenden Offenbarung veranschaulicht, die einen anderen leichtgewichtigen VMM implementiert.
    • 4 ist ein Ablaufdiagramm, das einen Unterbrechungszustellungsprozess gemäß einem Beispiel der vorliegenden Offenbarung veranschaulicht, der durch die Rechenvorrichtung von 3 ausführbar ist.
    • 5 ist ein schematisches Diagramm eines Fahrzeugs, das die Rechenvorrichtung gemäß einem Beispiel der vorliegenden Offenbarung von 3 enthält, die ferner zum Isolieren eines CAN-Busses konfiguriert ist.
    • 6 ist ein Ablaufdiagramm, das einen Unterbrechungshandhabungsprozess veranschaulicht, der durch die Rechenvorrichtung von 3 gemäß einem Beispiel der vorliegenden Offenbarung ausführbar ist.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die hier offenbarten Systeme und Verfahren befähigen einen leichtgewichtigen VMM, effizient virtuelle Maschinen zu unterbrechen, die er überwacht und steuert. Insbesondere ist in einigen Beispielen der leichtgewichtige VMM konfiguriert, eine Selbst-Inter-Prozessor-Unterbrechung (IPI, Inter-Processor Interrupt) zu verwenden, um externe Unterbrechungen an die virtuellen Maschinen zu liefern. In gewissen Beispielen wird die Selbst-IPI durch Schreiben eines Werts oder mehrerer Werte, enthaltend eine Kennung der externen Unterbrechung, in ein Unterbrechungsbefehlsregister (ICR, Interrupt Command Register) einer programmierbaren Unterbrechungssteuerung erzeugt. Diese programmierbare Unterbrechungssteuerung kann eine fortgeschrittene programmierbare Unterbrechungssteuerung (APIC, Advanced Programmable Interrupt Control) sein. In einigen Beispielen ruft die programmierbare Unterbrechungssteuerung den einen oder die mehr Werte vom ICR ab, identifiziert die externe Unterbrechung und verarbeitet die externe Unterbrechung, was dazu führt, dass die externe Unterbrechung in eine Unterbrechungsdeskriptortabelle (IDT, Interrupt Descriptor Table) einer virtuellen Maschine geschrieben wird, die Ziel für eine Unterbrechungszustellung durch den leichtgewichtigen VMM ist.
  • Diese Technik zum Zustellen von Unterbrechungen verhindert einen unnötigen VM-Austritt, den andere Techniken veranlassen. Ein VM-Austritt ist eine Kontextwechselaktivität, die rechenressourcenintensiv ist und daher die gesamte Systemleistung verschlechtert. Durch Verwendung einer Selbst-IPI zum Zustellen einer externen Unterbrechung an eine IDT einer virtuellen Maschine emulieren die hier offenbarten Beispiele eine nicht virtuelle Rechenumgebung, die der angezielten virtuellen Maschine erlaubt, die externe Unterbrechung zu verarbeiten, als liefe sie auf einer nicht virtualisierten Rechenvorrichtung und ohne einen VM-Austritt zu benötigen.
  • In einigen Beispielen überwacht und steuert der leichtgewichtige VMM seinen eigenen Betrieb und den Betrieb der virtuellen Maschinen durch Zuweisen und Belegen einer virtuellen Maschinensteuerungsstruktur (VMCS, Virtual Machine Control Structure). Die VMCS ist eine Datenstruktur, die verschiedene Felder aufweist. In einigen Beispielen schreibt der leichtgewichtige VMM Werte in seine VMCS, die verhindern, dass sie externe Unterbrechungen während Ausführung aufnimmt und verarbeitet. In diesen Beispielen wird eine solche externe Unterbrechungsverarbeitung an die virtuellen Maschinen und deren Gast-Betriebssysteme delegiert. Dieser Ansatz vereinfacht den leichtgewichtigen VMM, da der VMM keine komplexe Logik ausführen muss, die zum Virtualisieren der programmierbaren Unterbrechungssteuerung notwendig ist. Dieser Ansatz kann auch die Größe der vertrauenswürdigen Rechenbasis (TCB, Trusted Computing Base) senken, abhängig von der Anwendung einer Rechenvorrichtung.
  • In einigen Beispielen überwacht und steuert der leichtgewichtige VMM eine vertrauenswürdige Ausführungsumgebung (TEE, Trusted Execution Environment), die in der Rechenvorrichtung läuft. In diesen Beispielen kann der leichtgewichtige VMM der TEE zusätzliche Sicherheit durch Virtualisieren von Hardware Komponenten bereitstellen, die die TEE ausführen oder mit welchen die TEE mit anderen Komponenten kommuniziert. Beispielsweise virtualisiert in manchen Ausführungsformen der leichtgewichtige VMM einen Speicher der Rechenvorrichtung, wodurch verhindert wird, dass auf Daten, die im Speicher durch eine virtuelle Maschine gespeichert werden, von einer anderen virtuellen Maschine zugegriffen wird. Ferner, wo die Daten, die im Speicher gespeichert sind, zur Kommunikation zwischen dem Prozessor der Rechenvorrichtung und einer Eingabe-/Ausgabe- (I/O, Input/Output) Vorrichtung verwendet werden (z.B. wo die I/O-Vorrichtung DMA zum Speichern von Daten im Speicher verwendet), kann Virtualisierung des Speichers verwendet werden, um die I/O-Vorrichtung von anderen virtuellen Maschinen zu isolieren. Sollte jedoch der VMM auf Daten stoßen, die durch die I/O-Vorrichtung erzeugt werden, die von einer virtuellen Maschine verarbeitet werden müssen, kann der VMM eine solche Verarbeitung effizient durch Zustellung einer externen Unterbrechung an die virtuelle Maschine über die hier offenbarten Techniken einleiten. In mindestens einem Beispiel implementiert der VMM eine Isolierung einer I/O-Vorrichtung innerhalb eines eingebetteten Systems eines Fahrzeugs, das ein Steuergerätenetzwerk- (CAN, Controller Area Network) Bussteuergerät enthält.
  • Weitere andere Aspekte, Ausführungsformen und Vorteile dieser beispielhaften Aspekte und Ausführungsformen sind in der Folge näher besprochen. Überdies sollte klar sein, dass sowohl die vorangehenden Informationen als auch die folgende ausführliche Beschreibung nur veranschaulichende Beispiele verschiedener Aspekte und Ausführungsformen sind und gedacht sind, einen Überblick oder ein Rahmenwerk bereitzustellen, um die Art und Eigenschaft der beanspruchten Aspekte und Ausführungsformen verständlich zu machen. Verweise auf „eine Ausführungsform“, „andere Ausführungsformen“, „ein Beispiel“, „manche Ausführungsformen“, „manche Beispiele“, „eine andere Ausführungsform“, „verschiedene Ausführungsformen“, „eine einzige Ausführungsform“, „mindestens eine Ausführungsform“ „eine andere Ausführungsform“, „diese und andere Ausführungsformen“ oder dergleichen sind nicht unbedingt wechselseitig ausschließend und sollen angeben, dass ein besonderes Merkmal, eine Struktur oder eine Eigenschaft, wie in Verbindung mit der Ausführungsform oder dem Beispiel beschrieben, in mindestens einer Ausführungsform oder einem Beispiel enthalten sein kann. Die Stellen solcher Begriffe hierin beziehen sich nicht unbedingt alle auf dieselbe Ausführungsform oder dasselbe Beispiel. Eine Ausführungsform oder ein Beispiel, wie hier offenbart, kann mit jeder anderen Ausführungsform oder jedem anderen Beispiel kombiniert werden.
  • Ebenso dienen die hier verwendete Phraseologie und Terminologie einer Beschreibung und sollten nicht als Einschränkung angesehen werden. Sämtliche Verweise auf Beispiele, Ausführungsformen, Komponenten, Elemente oder Aktionen der Systeme und Verfahren, auf die hier im Singular Bezug genommen wird, können auch Ausführungsformen umfassen, die eine Vielzahl enthalten, und sämtliche Verweise im Plural auf eine Ausführungsform, Komponente, ein Element oder eine Aktion hier können auch Ausführungsformen umfassen, die nur eine Singularität enthalten. Verweise im Singular oder Plural sollen die gegenwärtig offenbarten Systeme oder Verfahren, deren Komponenten, Aktionen oder Elemente nicht einschränken. Die Verwendung hierin von „enthaltend“, „aufweisend“, „habend“, „beinhaltend“, „involvierend“ und Variationen davon sollen die in der Folge aufgelisteten Punkte und Äquivalente davon wie auch zusätzliche Punkte enthalten. Verweise auf „oder“ können als einschließend ausgelegt werden, sodass sämtliche Begriffe die mit „oder“ beschrieben sind, eines von einem einzelnen, mehr als einem und allen der beschriebenen Begriffe angegeben können. Zusätzlich ist im Fall unbeständiger Verwendungen von Begriffen zwischen diesem Dokument und Dokumenten, die hier zum Zweck der Bezugnahme aufgenommen sind, die Verwendung von Begriffen in den zitierten Referenzen ergänzend zu jener dieses Dokuments; bei widersprüchlichen Unbeständigkeiten gilt die Verwendung von Begriffen in diesem Dokument.
  • Allgemeiner Überblick
  • Herkömmliche Techniken zur Zustellung externer Unterbrechungen an virtuelle Maschinen verbrauchen wesentliche Rechenressourcen. VMMs, die im Wesentlichen die gesamte Hardware einer Rechenvorrichtung virtualisieren, müssen komplexe Logik implementieren, die nicht nur einen Prozessor und Speicher, sondern auch andere spezialisierte Hardware wie programmierbare Unterbrechungssteuerungen emuliert. Während solche vollständig funktionellen VMMs für manche Anwendungen (z.B. Datenzentrumsserver mit wesentlicher Rechenleistung) passend sein können, können sie für andere unpassend sein, wo eine gleichzeitige Verwendung von Hardware selten ist (z.B. eingebettete Systeme).
  • Daher, und gemäß mindestens manchen hier offenbarten Ausführungsformen, implementiert eine Rechenvorrichtung einen leichtgewichtigen VMM, der nur einen Teilsatz der Hardware-Komponenten der Rechenvorrichtung virtualisiert. Beispielsweise vermeidet der leichtgewichtige VMM eine Virtualisierung eines programmierbaren Logiksteuergeräts, das sich in der Rechenvorrichtung befindet, und verarbeitet daher keine externen Unterbrechungen, die durch das programmierbare Logiksteuergerät verarbeitet werden. Da jedoch eine Zustellung externer Unterbrechungen an virtuelle Maschinen für den leichtgewichtigen VMM beim Implementieren gewisser Funktionalität hilfreich ist, führt der leichtgewichtige VMM Techniken aus, die ihn befähigen, dies zu bewerkstelligen, ohne zusätzlichen teuren VM-Austritt zu verursachen.
  • Zustellung von externen Unterbrechungen über einen leichtgewichtigen VMM
  • 1 veranschaulicht ein Beispiel einer Rechenvorrichtung 100, die konfiguriert ist, einen leichtgewichtigen VMM zu befähigen, eine Unterbrechung an eine oder mehr VMs bereitzustellen. Wie dargestellt, enthält die Rechenvorrichtung 100 Rechenhardware 102, einen leichtgewichtigen VMM 106 und mehrere VMs 108A-108N (gemeinsam als die VMs 108 und als allgemein einzelnes Element als VM 108 bezeichnet). Die Rechenhardware 102 enthält einen Speicher 110, einen Prozessor 112, I/O-Vorrichtungssteuergeräte 114 und ein Direktspeicherzugriffssteuergerät (DMAC, Direct Memory Access Controller) 126. Diese Rechenhardware- 102 Komponenten sind über eine Interconnect, wie einen Systembus, miteinander verbunden, der durch Leitungen veranschaulicht ist, die die Komponenten verbinden. Wie in 1 gezeigt, enthält der Prozessor 112 eine lokale APIC 116, die auch mit der Interconnect verbunden ist. Jede der VMs 108 führt ein Gast-Betriebssystem (z.B. Linux, Solaris, Windows, AIX, oder FreeBSD) aus. Wie dargestellt, führt die VM 108A ein Gast-Betriebssystem 118 aus, das eine Ausführung der Anwendungen 120 unterstützt. Die VM 108N führt eine TEE 122 aus, die eine Ausführung der Anwendungen 124 unterstützt.
  • Der Prozessor 112 enthält verschiedene Rechenschaltkreise, wie eine Steuereinheit, einer Arithmetik-Logikeinheit und Registerspeicher, die konfiguriert sind, Anweisungen auszuführen, die durch einen Anweisungssatz definiert sind, der von dem Prozessor 112 unterstützt wird. Bei Ausführung der Anweisungen kann der Prozessor 112 Daten bearbeiten, die im Registerspeicher gespeichert sind, wodurch manipulierte Daten erzeugt werden. Der Prozessor 112 kann einen Einzelkernprozessor, einen Mehrkernprozessor, ein Mikrosteuergerät oder manche andere Datenverarbeitungsvorrichtung enthalten. Zur Implementierung und/oder Steuerung spezialisierter Komponenten führt in manchen Ausführungsformen der Prozessor 112 eine Reihe von Anweisungen (d.h. ein oder mehre Programme) aus. Der Prozessor 112 ist an den Speicher 110 und die I/O-Vorrichtungssteuergeräte über einen Zwischenverbindungsmechanismus wie einen Bus oder manche andere Datenverbindungen gekoppelt und konfiguriert, mit diesen Daten zu kommunizieren. Dieser Zwischenverbindungsmechanismus ist in 1 durch Linien dargestellt, die die Komponenten innerhalb der Rechenhardware 102 verbinden. In Betrieb veranlasst der Prozessor 112, dass Daten und/oder codierte Anweisungen aus einem nicht flüchtigen Datenspeichermedium im Speicher 110 gelesen und in einen Hochleistungsdatenspeicher wie einen Registerspeicher geschrieben werden. Der Prozessor 112 manipuliert die Daten und/oder führt die codierten Anweisungen innerhalb des Hochleistungsdatenspeichers aus und kopiert die manipulierten Daten zum Datenspeichermedium, sobald die Verarbeitung beendet ist. In mindestens manchen Beispielen unterstützt der Prozessor 112 Intel® Virtualisierungstechnologie, enthaltend den VMX-Anweisungssatz. Die APIC 116 enthält Schaltkreise, die konfiguriert sind, verschiedene Hardware- und/oder Software-Unterbrechungen zu empfangen und zu verarbeiten. Das DMAC 126 enthält Schaltkreise, die konfiguriert sind, direkte Speicherzugriffs- (DMA) Anfragen zu empfangen und zu verarbeiten.
  • Der Speicher 110 kann flüchtigen und/oder nicht flüchtigen Datenspeicher beinhalten (z.B. Nur-Lese-Speicher, Direktzugriffsspeicher, Flash-Speicher und/oder manche andere computerlesbare und -beschreibbare Medien). Der Speicher 110 ist so bemessen und konfiguriert, dass er Programme speichert, die durch den Prozessor 112 ausführbar sind, und in einigen Beispielen manche der Daten, die von den Programmen während der Ausführung verwendet werden. Beispiele des Speichers 108 enthalten Nur-Lese-Speicher (ROM, Read Only Memory), Direktzugriffsspeicher (RAM, Random Access Memory), dynamischen Direktzugriffsspeicher (DRAM, Dynamic Random Access Memory) und statischen Direktzugriffsspeicher (SRAM, Static Random Access Memory).
  • Die I/O-Vorrichtungssteuergeräte 114 steuern externe Eingabe- und Ausgabevorrichtungen. Beispiele für I/O-Vorrichtungssteuergeräte 114 enthalten Universal Serial Bus (USB) Steuergeräte, Peripherkomponenten-Interconnect- (PCI, Peripheral Component Interconnect) Steuergeräte, Industriestandardarchitektur- (ISA) Steuergeräte, CAN-Bus-Steuergeräte und dergleichen.
  • Wie in 1 dargestellt, ist der Prozessor 112 konfiguriert, den leichtgewichtigen VMM 106 und die VMs 108 zu implementieren. Im Allgemeinen ist der leichtgewichtige VMM 106 konfiguriert, Elemente der Rechenhardware 102 zu virtualisieren und Ausführung der VMs 108 zu verwalten. In einigen Beispielen virtualisiert der leichtgewichtige VMM 106 den Speicher 110 und den Prozessor 112, virtualisiert aber nicht die APIC 116. Ein Auslassen der APIC 116 aus seinem Virtualisierungsumfang ermöglicht dem leichtgewichtigen VMM 106, eine kleinere, einfachere und effizientere Codebasis aufrechtzuerhalten. Ein Auslassen der APIC aus seinem Virtualisierungsumfang ermöglicht dem leichtgewichtigen VMM 106 auch, zu einer kleineren TCB-Größe innerhalb einer gegebenen Anwendung beizutragen.
  • Bezüglich einer VM-Steuerung ist der leichtgewichtige VMM 106 in einigen Beispielen konfiguriert eine VMCS zuzuweisen, um seinen eigenen Betrieb zu regeln, und separate VMCSs zuzuweisen, um die Ausführung der VMs 108 zu regeln. Die VMCS ist eine Datenstruktur, die eine Reihe von Feldern aufweist, von welchen manche in der Folge beschrieben sind. Mit mindestens seiner eigenen VMCS vor Ort kann der VMM 106 einen virtualisierten Betrieb des Prozessors 112 einleiten (z.B. durch Ausführen einer VMXON-Anweisung), eine sequenzielle Ausführung der VMs 108 einleiten (z.B. durch Ausführung einer VMLAUNCH OR VMRESUME Anweisung), und/oder einen virtualisierten Betrieb des Prozessors 112 beenden (z.B. durch Ausführung einer VMXOFF Anweisung).
  • Wie in 1 dargestellt, ist der leichtgewichtige VMM 106 konfiguriert, ein Unterbrechungsfenster bei einer der VMs 108 anzufragen, die der leichtgewichtige VMM 106 als Ziel für eine Zustellung einer externen Unterbrechung hat.
  • Da er ein leichtgewichtiger VMM wie oben beschrieben ist, ist der leichtgewichtige VMM 106 konfiguriert, keine externen Unterbrechungen von den I/O-Vorrichtungssteuergeräten 114 aufzunehmen oder externe Unterbrechungen handzuhaben. Vielmehr ist der leichtgewichtige VMM 106 konfiguriert, dem Gast-Betriebssystem der aktiven VM 108 zu erlauben, diese Funktionen durchzuführen. In mindestens einem Beispiel ist der leichtgewichtige VMM 106 konfiguriert, externe Unterbrechungsverarbeitung, wie oben beschrieben, durch Schreiben eines Werts von 0 in Bit[0] der Pin-basierten VM-Ausführungssteuerfelder der VMCS für den VMM 106 zu vermeiden.
  • Trotz dieser Konfiguration zur Vermeidung einer Unterbrechungsverarbeitung könnte der leichtgewichtige VMM 106 externe Unterbrechungen in eine VM 108 zustellen müssen, um gewisse Merkmale zu implementieren (wie z.B. CAN-Busisolation, wie weiter unten unter Bezugnahme auf 5 und 6 beschrieben). Daher ist in einigen Beispielen der leichtgewichtige VMM 106 konfiguriert, externe Unterbrechungen unter Verwendung eines VM-Eintritt-Unterbrechungsinformationsfelds innerhalb der VMCS der VM 108 zuzustellen. In diesen Beispielen ist der leichtgewichtige VMM 106 zum Zustellen einer externen Unterbrechung konfiguriert, eine Kennung der externen Unterbrechung (z.B. einen Vektor) in das VM-Eintritt-Unterbrechungsinformationsfeld zu schreiben. Ferner ist in diesen Beispielen der Prozessor 112 konfiguriert, beim nächsten VM-Eintritt in die VM 108 die Kennung der externen Unterbrechung, die im VM-Eintritt-Unterbrechungsinformationsfeld gespeichert ist, abzurufen, und eine virtuelle Unterbrechung durch die IDT der VM 108 zu leiten.
  • In manchen Situationen jedoch kann die VM 108 konfiguriert sein, externe Unterbrechungen zu maskieren (z.B. indem ein Wert von 0 im Bit[9] des RFLAGS Registerfelds der VMCS für die VM 108 gespeichert wird). In dieser Situation ist der Prozessor 112 konfiguriert, den Inhalt des VM-Eintritt-Unterbrechungsinformationsfelds während des VM-Eintritts zu ignorieren, und daher kann ein Versuch, externe Unterbrechungen unter Verwendung des VM-Eintritt-Unterbrechungsinformationsfelds wie oben beschrieben zuzustellen, misslingen. Aus diesem Grund ist der leichtgewichtige VMM 106 in einigen Beispielen konfiguriert, einen Prozess einzuleiten, der externe Unterbrechungen in einer VM 108 unter Verwendung eines Unterbrechungsfensters zustellt. 2 veranschaulicht ein Beispiel eines solchen Unterbrechungszustellungsprozesses 200, der durch die Rechenvorrichtung 100 ausführbar ist.
  • Wie in 2 gezeigt, startet der Unterbrechungszustellungsprozess 200 in Vorgang 202 mit dem leichtgewichtigen VMM 106, der bestimmt, ob die VM 108 für einen Empfang von Unterbrechungen bereit ist. Zum Beispiel kann die VM 108 inaktiv sein. Falls die VM 108 zum Empfang von Unterbrechungen bereit ist, führt der leichtgewichtige VMM 106 Vorgang 204 aus. Andernfalls führt der leichtgewichtige VMM 106 Vorgang 208 aus.
  • Im Vorgang 208 fordert der leichtgewichtige VMM 106 an, dass die VM 108 austritt, wenn die VM 108 bereit ist, eine Unterbrechung anzunehmen. Beispielsweise setzt in einigen Beispielen der leichtgewichtige VMM 106 ein Unterbrechungsfenster-Flag für die VM 108, indem er einen Wert von 1 in Bit[2] des Prozessor-basierten VM-Ausführungssteuerfelds für die VMCS für die VM 108 schreibt. In Vorgang 210 kehrt der leichtgewichtige VMM 106 zu der VM 108 zurück. In Vorgang 212 führt die VM 108 aus, bis sie zum Empfangen einer Unterbrechung bereit ist, und tritt dann aus, um das Unterbrechungsfenster zu öffnen, was einen VM-Austritt erzeugt. Sobald der VM-Austritt beendet ist, ist die VM 108 bereit, Unterbrechungen zu empfangen. In Vorgang 214 löscht der leichtgewichtige VMM 106 das Unterbrechungsfenster-Flag, indem er zum Beispiel, einen Wert von 0 in Bit[2] des Prozessor-basierten VM-Ausführungssteuerfelds der VMCS für die VM 108 schreibt.
  • Im Vorgang 204 schreibt der leichtgewichtige VMM 106 eine Kennung der externen Unterbrechung in das VM-Eintritt-Unterbrechungsinformationsfeld der VMCS für die VM 108. In Vorgang 206 kehrt der leichtgewichtige VMM 106 zur VM 108 zurück, wodurch ein VM-Eintritt veranlasst wird, der die Unterbrechung in der VM 108 wie oben beschrieben zustellt, und der Unterbrechungszustellungsprozess 200 endet.
  • Der Unterbrechungszustellungsprozess 200 befähigt einen leichtgewichtigen VMM, zuverlässig externe Unterbrechungen in eine überwachte VM zuzustellen. Der Unterbrechungszustellungsprozess 200 erreicht dies jedoch mindestens in manchen Fällen, indem er der überwachten VM veranlasst, einen VM-Austritt zu erzeugen. Dieser Betrieb ist rechenressourcenintensiv. Daher enthalten andere Beispiele Rechenvorrichtungen, die konfiguriert sind, Unterbrechungszustellungsprozesse zu implementieren, die keinen VM-Austritt verursachen.
  • 3 veranschaulicht ein Beispiel einer Rechenvorrichtung 300, die konfiguriert ist, einen leichtgewichtigen VMM zu befähigen, eine Unterbrechung bei einer oder mehr VMs bereitzustellen, ohne einen VM-Austritt zu verursachen. Wie gezeigt, enthält die Rechenvorrichtung 300 viel der in 1 veranschaulichten Komponenten. Diese Komponenten sind strukturiert und funktionieren in der Rechenvorrichtung 300 auf gleiche Weise wie in der Rechenvorrichtung 100.
  • Wie in 1 gezeigt, ist der Prozessor 112 konfiguriert, den leichtgewichtigen VMM 306 und die VMs 108 zu implementieren. Im Allgemeinen ist der leichtgewichtige VMM 306 konfiguriert, Elemente der Rechenhardware 102 zu virtualisieren und Ausführung der VMs 108 zu verwalten. In einigen Beispielen virtualisiert der leichtgewichtige VMM 306 den Speicher 110 und den Prozessor 1112, virtualisiert aber nicht die APIC 116. Auslassen der APIC 116 aus dem Umfang einer Virtualisierung befähigt den leichtgewichtigen VMM 306, eine kleinere, einfacherer oder effizientere Codebasis aufrechtzuerhalten. Auslassen der APIC aus seinem Umfang einer Virtualisierung befähigt den leichtgewichtigen VMM 306 auch, zu einer kleineren TCB-Größe innerhalb einer gegebenen Anwendung beizutragen.
  • Bezüglich einer VM-Steuerung ist der leichtgewichtige VMM 306 in einigen Beispielen konfiguriert, eine VMCS zur Regelung seines eigenen Betriebs zuzuweisen und separate VMCSs zur Regelung der Ausführung der VMs 108 zuzuweisen. Mit mindestens seiner eigenen VMCS vor Ort kann der VMM 306 einen virtualisierten Betrieb des Prozessors 112 einleiten (z.B. durch Ausführung einer VMXON-Anweisung), eine sequenzielle Ausführung der VMs 108 einleiten (z.B. durch Ausführung einer VMLAUNCH OR VMRESUME Anweisung) und/oder einen virtualisierten Betrieb des Prozessors 112 beenden (z.B. durch Ausführung einer VMXOFF Anweisung).
  • Da er ein leichtgewichtiger VMM wie oben beschrieben ist, ist der leichtgewichtige VMM 306 konfiguriert, keine externen Unterbrechungen von den I/O-Vorrichtungssteuergeräten 114 anzunehmen oder externe Unterbrechungen handzuhaben. Vielmehr ist der leichtgewichtige VMM 306 konfiguriert, dem Gast-Betriebssystem der aktiven VM 108 zu ermöglichen, diese Funktionen auszuführen. In mindestens einem Beispiel ist der leichtgewichtige VMM 306 konfiguriert, eine externe Unterbrechungsverarbeitung wie oben beschrieben zu vermeiden, indem er einen Wert von 0 in Bit[0] des Pin-basierten VM-Ausführungssteuerfelds der VMCS für den VMM 306 schreibt.
  • Trotz dieser Konfiguration zur Vermeidung einer Unterbrechungsverarbeitung könnte der leichtgewichtige VMM 306 externe Unterbrechungen in einer VM 108 zustellen müssen, um gewisse Merkmale zu implementieren (z.B., wie CAN-Busisolation, wie weiter unten unter Bezugnahme auf 5 und 6 beschrieben ist). Daher ist der leichtgewichtige VMM 306 in einigen Beispielen konfiguriert, externe Unterbrechungen unter Verwendung einer Selbst-IPI zuzustellen. Diese Beispiele unterstützen die Tatsache, dass eine VM 108 bei Ring 0 ausführt, wenn unter Verwendung des VMX Anweisungssatzes implementiert. Als solches empfängt eine VM 108 jede Selbst-IPI, die durch den leichtgewichtigen VMM 306 erzeugt wird, während die VM 108 ausführt. Da der leichtgewichtige VMM 306 konfiguriert ist, keine externen Unterbrechungen anzunehmen und handzuhaben, werden sie zum Gast-Betriebssystem der derzeit ausführenden VM 108 geleitet.
  • 4 veranschaulicht ein Beispiel eines Unterbrechungszustellungsprozesses 400, der durch die Rechenvorrichtung 300 ausführbar ist, um eine Selbst-IPI zu nutzen, um einen VM-Austritt zu vermeiden. Wie in 4 gezeigt, startet der Unterbrechungszustellungsprozess 400 in Vorgang 402 mit dem leichtgewichtigen VMM 306, der eine Selbst-IPI erzeugt. Zum Beispiel kann der VMM 306 eine Selbst-IPI erzeugen, indem er passende Werte in das Unterbrechungsbefehlsregister der APIC 116 schreibt. Diese Werte können eine Kennung (z.B. einen Vektor) der externen Unterbrechung enthalten. In Vorgang 404 kehrt der leichtgewichtige VMM 306 zur VM 108 zurück, wodurch in Vorgang 406 veranlasst wird, dass die externe Unterbrechung der VM 108 über die IDT der VM 108 zugestellt wird, und der Unterbrechungszustellungsprozess 400 endet. Der Unterbrechungszustellungsprozess 400 befähigt einen leichtgewichtigen VMM, externe Unterbrechungen in einer überwachten VM zuverlässig zuzustellen und dies ohne einen überflüssigen VM-Austritt zu bewerkstelligen.
  • Kraftfahrzeugbeispiele
  • Die hier offenbarten innovativen Systeme und Verfahren einer effizienten Zustellung externer Unterbrechungen an virtuelle Maschinen sind für eine Reihe verschiedener Anwendungen geeignet. Beispielsweise verwenden manche Beispiele Virtualisieren, um zusätzliche Sicherheit bei einer TEE bereitzustellen, die in einem eingebetteten System in einem Fahrzeug ausführt. Diese Beispiele isolieren ein CAN-Bussteuergerät, das in dem Fahrzeug angeordnet ist, durch Virtualisieren von Systemspeicher und, falls zutreffend, Zustellung externer Unterbrechungen zu der TEE, um eine Ausführung eines Unterbrechungsdienstprogramms (ISR, Interrupt Service Routine) in der TEE einzuleiten. 5 und 6 veranschaulichen Aspekte dieser Beispiele.
  • 5 veranschaulicht ein Fahrzeug 500. Das Fahrzeug 500 enthält eine Rechenvorrichtung 502, Reifendrucksensoren 506A-506D (gemeinsam als die Reifendrucksensoren 506 und als allgemeine einzelne Elemente als Reifendrucksensor 506 bezeichnet) und einen Näherungssensor 508. Die Rechenvorrichtung 502 enthält die Komponenten der Rechenvorrichtung 300 und ein CAN-Bussteuergerät 504, das an die Interconnect der Rechenhardware 102 gekoppelt ist. Wie in 5 gezeigt, sind die Reifendrucksensoren 506, der Näherungssensor 508 und das CAN-Bussteuergerät 504 über einen CAN-Bus aneinander gekoppelt, wie als ein Satz gestrichelter Linien zwischen diesen Komponenten veranschaulicht ist.
  • In einigen Beispielen ist das CAN-Bussteuergerät 504 konfiguriert, auf den Speicher 110 direkt über Direktspeicherzugriffs-, (DMA), Anfragen an das DMA-Steuergerät 126 zuzugreifen. In diesen Beispielen ist das CAN-Bus Steuergerät 504 konfiguriert, Eingangsdaten von den Sensoren 506 und 508 zu empfangen und DMA-Anfragen zu übertragen, um diese Eingangsdaten in eine oder mehr vordefinierte Speicheradressen im Speicher 110s zu schreiben. Das DMA-Steuergerät 126 ist konfiguriert, nach Beendigung dieser DMA-Anfragen eine Nachricht an den leichtgewichtigen VMM 306 zu senden. Diese Nachricht kann eine spezifische Unterbrechung sein, für deren Verarbeitung der leichtgewichtige VMM 306 konfiguriert ist.
  • In gewissen Beispielen ist der leichtgewichtige VMM 306 konfiguriert, nur die VM 108N auszuführen, die die TEE 122 und die Anwendungen 124 enthält. Ferner ist in diesen Beispielen der leichtgewichtige VMM 306 weiter konfiguriert, das CAN-Bussteuergerät 504 durch Virtualisieren des Speichers 110 zu isolieren. Dadurch stellt der VMM 306 sicher, dass nur Prozesse, die durch die VM 108N ausgeführt werden, auf die eine oder mehreren vordefinierten Speicheradressen zugreifen können, an welchen das CAN-Bussteuergerät 504 Eingangsdaten speichern kann.
  • In einigen Beispielen ist die Rechenvorrichtung 502 konfiguriert, einen Prozess auszuführen, durch den Sensordaten, die von den Sensoren 506 und 508 erzeugt werden, empfangen und analysiert werden. In diesen Beispielen übertragen die Sensoren 506 und 508 die Sensordaten an das CAN-Bussteuergerät 504. Das CAN-Bussteuergerät 504 empfängt die Sensordaten und überträgt eine DMA-Anfrage an das DMA-Steuergerät 126, um die Sensordaten als Eingangsdaten an der einen oder den mehreren vordefinierten Speicheradressen zu schreiben. Nachdem die Eingangsdaten an der einen oder den mehreren vordefinierten Speicheradressen gespeichert wurden, benachrichtigt das DMA-Steuergerät 126 den leichtgewichtigen VMM 306 über das Vorliegen der Eingangsdaten. Bei Empfang dieser Nachricht führen der leichtgewichtige VMM 306 und die virtuelle Maschine 108 gemeinsam einen Unterbrechungshandhabungsprozess 600 aus, wie in 6 veranschaulicht.
  • Wie in 6 gezeigt, startet der Unterbrechungshandhabungsprozess 600 in Vorgang 602 mit dem leichtgewichtigen VMM 306, der die Nachricht, die verfügbare Eingangsdaten angeben, vom DMA-Steuergerät 126 empfängt. In Vorgang 604 erzeugt der leichtgewichtige VMM 306 eine Selbst-IPI. In Vorgang 606 kehrt der leichtgewichtige VMM 306 zur Ausführung der VM 108N zurück. In Vorgang 608 empfängt die VM 108N eine externe Unterbrechung, die aus der Selbst-IPI resultiert, über ihre IDT. In Vorgang 610 führt die VM 108N eine ISR aus, die mit der externen Unterbrechung verknüpft ist, um die Eingangsdaten zu verarbeiten.
  • Jeder der hier gezeigten Prozesse enthält in einem Beispiel eine Abfolge von Vorgängen. Diese Vorgänge, die in diesen Prozessen enthalten sind, können von, oder unter Verwendung von, einer oder mehreren Rechenvorrichtungen durchgeführt werden, die im Speziellen wie hier besprochen konfiguriert sind. Einige Vorgänge sind optional und können als solche gemäß einem oder mehreren Beispiele ausgelassen werden. Zusätzlich kann die Reihenfolge von Vorgängen geändert werden oder andere Vorgänge können hinzugefügt werden, ohne vom Umfang der hier besprochenen Systeme und Verfahren abzuweichen.
  • Wie oben beschrieben, kann der Prozessor 112 ein Allzweckprozessor sein. Wenn jedoch ein spezifischer Softwareprozess wie hier beschrieben durchgeführt wird (z.B. wie in einer von 2 und/oder 4 gezeigt), wird der Prozessor 112 zu einem Spezialzweckprozessor, der imstande ist, spezifische logikbasierte Bestimmungen basierend auf empfangenen Eingangsdaten vorzunehmen, und weiter imstande ist, einen oder mehrere Ausgänge bereitzustellen, die zum Steuern oder auf andere Weise Informieren einer anschließenden Verarbeitung verwendet werden, die durch den Prozessor 112 und/oder andere Prozessoren oder Schaltkreise, mit welchen Prozessor 112 kommunikativ gekoppelt ist, durchgeführt werden. Der Prozessor 112 reagiert auf einen spezifischen Eingangsstimulus in einer spezifischen Weise und erzeugt einen entsprechenden Ausgang basierend auf diesem Eingangsstimulus. In diesem Sinn ist die Struktur von Prozessor 112 gemäß einer Ausführungsform durch die Prozesse definiert, die in einer von 2 und/oder 4 gezeigt sind. Überdies läuft in manchen beispielhaften Fällen der Prozessor 112 durch eine Abfolge logischer Übergänge, in welchen verschiedene interne Registerzustände und/oder andere Bit-Zellzustände intern oder extern des Prozessors 112 auf ein logisches Hoch oder ein logisches Tief gesetzt werden können. Diese spezifische Abfolge logischer Übergänge wird durch den Zustand elektrischer Eingangssignale zu dem Prozessor 112 bestimmt und eine Spezialzweckstruktur wird effektiv durch den Prozessor 112 angenommen, wenn jede Software-Anweisung der Prozesse, die in 2 und/oder 4 dargestellt sind, ausgeführt wird. Im Speziellen nehmen diese Anweisungen den unterschiedlichen, zu empfangenden Stimulus vorweg und ändern die implizierten Speicherzustände entsprechend. Auf diese Weise kann der Prozessor 112 nützliche Ausgangssignale erzeugen und speichern oder auf andere Weise bereitstellen. Daher ist klar, dass der Prozessor 112 während Ausführung eines Softwareprozesses eine Spezialzweckmaschine wird, die zur Verarbeitung nur spezifischer Signale und Rendern spezifischer Ausgangssignale basierend auf dem einen oder den mehreren logischen Betrieben imstande ist, die während Ausführung jeder Anweisung durchgeführt werden. In mindestens manchen Beispielen ist der Prozessor 112 konfiguriert, eine Funktion auszuführen, wo Software in einer Datenspeichervorrichtung gespeichert ist, die mit dem Prozessor 112 gekoppelt ist (z.B. dem Speicher 110), und diese Software ist konfiguriert, den Prozessor 112 zu veranlassen, durch eine Abfolge verschiedener Logikbetriebe zu laufen, die dazu führen, dass die Funktion ausgeführt wird.
  • Überdies können verschiedene Beispiele unter Verwendung von Hardwareelementen, Softwareelementen oder einer Kombination von beiden implementiert sein. Beispiele für Hardwareelemente können Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z.B. Transistoren Widerstrände, Kondensatoren, Induktoren usw.), integrierte Schaltungen, anwendungsspezifische integrierte Schaltungen (ASIC), programmierbare Logikvorrichtungen (PLD, Programmable Logic Device), Digitalsignalprozessoren (DSP), feldprogrammierbare Gate Array (FPGA), Logikgates, Register, Halbleitervorrichtung, Chips, Mikrochips, Chipsätze und so weiter enthalten. Beispiele für Software können Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystem-Software, Middleware, Firmware, Softwaremodule, Programme, Teilprogramme, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, Anwendungsprogrammschnittstellen (API, Application Programm Interface), Anweisungssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder eine Kombination davon enthalten. Ob Hardwareelemente und/oder Softwareelemente verwendet werden, kann von einem Beispiel zum nächsten gemäß einer Anzahl von Faktoren variieren, wie gewünschte Rechenrate, Leistungspegel, Wärmetoleranzen, Verarbeitungszyklusbudget, Eingangsdatenraten, Ausgangsdatenraten, Speicherressourcen, Datenbusgeschwindigkeiten und andere Design- oder Leistungseinschränkungen.
  • Einige Beispiele können zum Beispiel unter Verwendung eines nicht transitorischen, maschinenlesbaren Mediums oder Gegenstands oder Computerprogrammprodukts implementiert werden, die eine Anweisung oder einen Satz von Anweisungen speichern können, die, falls von einer Maschine ausgeführt, die Maschine veranlassen können, ein Verfahren, einen Prozess und/oder Betriebe gemäß einem Beispiel der vorliegenden Offenbarung auszuführen. Eine solche Maschine kann zum Beispiel jede geeignete Verarbeitungsplattform, Rechenplattform, Rechenvorrichtung, Verarbeitungsvorrichtung, jedes geeignete Rechensystem, Verarbeitungssystem, jeden geeigneten Computer, Prozessor oder dergleichen enthalten und kann unter Verwendung einer geeigneten Kombination von Hardware und Software implementiert werden. Das maschinenlesbare Medium oder der Gegenstand kann zum Beispiel jede geeignete Art von Speichereinheit, Speichervorrichtung, Speichergegenstand, Speichermedium, Datenspeichervorrichtung, Datenspeichergegenstand, Datenspeichermedium und/oder Datenspeichereinheit enthalten, zum Beispiel Speicher, entfernbare oder nicht entfernbare Medien, löschbare oder nicht löschbare Medien, beschreibbare oder wieder beschreibbare Medien, digitale oder analoge Medien, Festplattenlaufwerk, Diskette, Compact Disk Read Only Memory (CD-ROM), Compact Disk Recordable (CD-R), Compact Disk Rewriteable (CD-RW), optische Platte, magnetische Medien, magneto-optische Medien, entfernbare Speicherkarten oder -platten, verschiedene Arten von Digital Versatile Disk (DVD), ein Band, eine Kassette oder dergleichen. Die Anweisungen können jede geeignete Art von ausführbarem Code enthalten, der unter Verwendung einer geeigneten hohen, niedrigen objektorientierten, visuellen, kompilierten und/oder interpretierten Programmierungssprache implementiert wird.
  • Weitere beispielhafte Ausführungsformen
  • Die folgenden Beispiele beziehen sich auf weitere Ausführungsformen, aus welchen zahlreiche Abänderungen und Konfigurationen hervorgehen.
  • Beispiel 1 ist eine Rechenvorrichtung, aufweisend einen Speicher, mindestens einen Prozessor, der an den Speicher gekoppelt ist, und eine fortgeschrittene programmierbare Unterbrechungssteuerung (APIC), die in dem mindestens einen Prozessor enthalten ist. Der mindestens eine Prozessor ist konfiguriert, einen leichtgewichtigen Monitor einer virtuellen Maschine (VMM) auszuführen; eine virtuelle Maschine unter Steuerung des leichtgewichtigen VMM auszuführen; und über Ausführung des leichtgewichtigen VMM eine Selbst-Inter-Prozessor-Unterbrechung (IPI) auszuführen, die eine Kennung einer externen Unterbrechung aufweist. Die fortgeschrittene programmierbare Unterbrechungssteuerung (APIC) ist konfiguriert, die Selbst-IPI zu empfangen; die externe Unterbrechung zu identifizieren; und die externe Unterbrechung an die virtuelle Maschine zuzustellen.
  • Beispiel 2 enthält den Gegenstand von Beispiel 1, wobei der leichtgewichtige VMM weiter konfiguriert ist, Hardware außer der APIC zu virtualisieren.
  • Beispiel 3 enthält den Gegenstand von entweder Beispiel 1 oder Beispiel 2, wobei der leichtgewichtige VMM weiter konfiguriert ist, eine erste virtuelle Maschinensteuerungsstruktur (VMCS) zuzuweisen, um Ausführung der virtuellen Maschine zu verwalten; eine zweite VMCS zuzuweisen, um Ausführung des leichtgewichtigen VMM zu verwalten, wobei die zweite VMCS ein Pin-basiertes VM-Ausführungssteuerfeld aufweist; und einen Wert von 0 in Bit[0] des Pin-basierten VM-Ausführungssteuerfelds der zweiten VMCS zu schreiben.
  • Beispiel 4 enthält den Gegenstand eines der Beispiele 1 bis 3, wobei der leichtgewichtige VMM weiter konfiguriert ist, Ausführung der virtuellen Maschine einzuleiten.
  • Beispiel 5 enthält den Gegenstand eines der Beispiele 1 bis 4, wobei die APIC ein Unterbrechungsbefehlsregister (ICR) aufweist und der leichtgewichtige VMM konfiguriert ist, die Selbst-IPI mindestens teilweise durch Schreiben eines oder mehrerer Werte in das ICR zu erzeugen.
  • Beispiel 6 enthält den Gegenstand eines der Beispiele 1 bis 5, wobei die virtuelle Maschine eine Unterbrechungsdeskriptortabelle (IDT) aufweist und die APIC konfiguriert ist, die externe Unterbrechung mindestens teilweise durch Schreiben einer Kennung der externen Unterbrechung in die IDT zuzustellen.
  • Beispiel 7 enthält den Gegenstand eines der Beispiele 1 bis 6, wobei die virtuelle Maschine konfiguriert ist, ein Unterbrechungsdienstprogramm (ISR) in Antwort auf Erfassen der externen Unterbrechung auszuführen, wobei das ISR konfiguriert ist, Eingangsdaten zu verarbeiten, die an einer vordefinierten Adresse im Speicher gespeichert sind, und der leichtgewichtige VMM weiter konfiguriert ist, den Speicher zu virtualisieren, den Prozessor ohne Virtualisierung der APIC zu virtualisieren; eine Nachricht zu empfangen, die anzeigt, dass Eingangsdaten an der vordefinierten Adresse verfügbar sind; und die Selbst-IPI in Antwort auf Empfangen der Nachricht zu erzeugen.
  • Beispiel 8 enthält den Gegenstand von Beispiel 7, ferner aufweisend ein Steuergerätenetzwerk-, (CAN), Bussteuergerät, das an einen CAN-Bus und den Speicher gekoppelt ist, und konfiguriert ist, die Eingangsdaten über den CAN-Bus zu empfangen; und die Eingangsdaten an der vordefinierten Adresse zu speichern.
  • Beispiel 9 enthält den Gegenstand von Beispiel 8, wobei der CAN-Bus in einem Fahrzeug angeordnet ist.
  • Beispiel 10 ist ein Verfahren zur Zustellung einer externen Unterbrechung an eine virtuelle Maschine unter Verwendung eines leichtgewichtigen Monitors einer virtuellen Maschine (VMM). Das Verfahren weist Ausführen, über mindestens einen Prozessor einer Rechenvorrichtung, des leichtgewichtigen VMM; Ausführen, über den mindestens einen Prozessor der Rechenvorrichtung, einer virtuellen Maschine unter Steuerung des leichtgewichtigen VMM; Erzeugen, über Ausführung des leichtgewichtigen VMM, einer Selbst-Inter-Prozessor-Unterbrechung (IPI), die eine Kennung einer externen Unterbrechung aufweist; Empfangen, über eine fortgeschrittene programmierbare Unterbrechungssteuerung (APIC), der Selbst-IPI; Identifizieren, über die APIC, der externen Unterbrechung; und Zustellen, über die APIC, der externen Unterbrechung an die virtuelle Maschine auf.
  • Beispiel 11 enthält den Gegenstand von Beispiel 10, ferner aufweisend Virtualisierungs-Hardware außer der APIC.
  • Beispiel 12 enthält den Gegenstand von entweder Beispiel 10 oder Beispiel 11, ferner aufweisend Zuweisen einer ersten virtuellen Maschinensteuerungsstruktur (VMCS), um Ausführung der virtuellen Maschine zu verwalten; Zuweisen einer zweiten VMCS, um Ausführung des leichtgewichtigen VMM zu verwalten, wobei die zweite VMCS ein Pin-basiertes VM-Ausführungssteuerfeld aufweist; und Schreiben eines Werts von 0 in Bit[0] des Pin-basierten VM-Ausführungssteuerfelds der zweiten VMCS.
  • Beispiel 13 enthält den Gegenstand eines der Beispiele 10 bis 12, ferner aufweisend Einleiten einer Ausführung der virtuellen Maschine durch den leichtgewichtigen VMM.
  • Beispiel 14 enthält den Gegenstand eines der Beispiele 10 bis 13, wobei Erzeugen der Selbst-IPI Schreiben eines oder mehrerer Werte in ein Unterbrechungsbefehlsregister aufweist.
  • Beispiel 15 enthält den Gegenstand eines der Beispiele 10 bis 14, wobei Zustellen der externen Unterbrechung Schreiben einer Kennung der externen Unterbrechung in eine Unterbrechungsdeskriptortabelle der virtuellen Maschine aufweist.
  • Beispiel 16 enthält den Gegenstand eines der Beispiele 10 bis 15, ferner aufweisend Virtualisieren, über Ausführung des leichtgewichtigen VMM, eines Speichers der Rechenvorrichtung; Virtualisieren, über Ausführung des leichtgewichtigen VMM, des Prozessors ohne Virtualisieren der APIC; Empfangen, über Ausführung des leichtgewichtigen VMM, einer Nachricht, die anzeigt, dass Eingangsdaten an einer vordefinierten Adresse im Speicher verfügbar sind; Erzeugen der Selbst-IPI in Antwort auf Empfangen der Nachricht; Ausführen, über Ausführung der virtuellen Maschine, eines Unterbrechungsdienstprogramms (ISR) in Antwort auf Erfassen der externen Unterbrechung; und Verarbeiten, über Ausführung des ISR, von Eingangsdaten, die an der vordefinierten Adresse gespeichert sind.
  • Beispiel 17 enthält den Gegenstand von Beispiel 16, ferner aufweisend Empfangen der Eingangsdaten über einen CAN-Bus und Speichern der Eingangsdaten an der vordefinierten Adresse.
  • Beispiel 18 enthält den Gegenstand von Beispiel 17, wobei Empfangen der Eingangsdaten Empfangen der Eingangsdaten über einen CAN-Bus aufweist, der in einem Fahrzeug angeordnet ist.
  • Beispiel 19 ist ein nicht transitorisches computerlesbares Medium, das mit Anweisungen codiert ist, die, wenn von einem oder mehreren Prozessoren ausgeführt, veranlassen, das ein Prozess zum Zustellen von Unterbrechungen an eine virtuelle Maschine durchgeführt wird. Der Prozess weist Ausführen, über mindestens einen Prozessor einer Rechenvorrichtung, eines leichtgewichtigen VMM; Ausführen, über den mindestens einen Prozessor der Rechenvorrichtung, einer virtuellen Maschine unter Steuerung des leichtgewichtigen VMM; Erzeugen, über Ausführung des leichtgewichtigen VMM, einer Selbst-Inter-Prozessor-Unterbrechung (IPI), die eine Kennung einer externen Unterbrechung aufweist; Empfangen, über eine fortgeschrittene programmierbare Unterbrechungssteuerung (APIC), der Selbst-IPI; Identifizieren, über die APIC, der externen Unterbrechung; und Zustellen, über die APIC, der externen Unterbrechung an die virtuelle Maschine auf.
  • Beispiel 20 enthält den Gegenstand von Beispiel 19, wobei der Prozess weiter Virtualisieren Hardware außer der APIC aufweist.
  • Beispiel 21 enthält den Gegenstand von entweder Beispiel 19 oder Beispiel 20, wobei der Prozess ferner Zuweisen einer ersten virtuellen Maschinensteuerungsstruktur (VMCS), um Ausführung der virtuellen Maschine zu verwalten; Zuweisen einer zweiten VMCS, um Ausführung des leichtgewichtigen VMM zu verwalten, wobei die zweite VMCS ein Pin-basiertes VM-Ausführungssteuerfeld aufweist; und Schreiben eines Werts von 0 in Bit[0] des Pin-basierten VM-Ausführungssteuerfelds der zweiten VMCS aufweist.
  • Beispiel 22 enthält den Gegenstand eines der Beispiele 19 bis 21, wobei der Prozess ferner Einleiten einer Ausführung der virtuellen Maschine durch den leichtgewichtigen VMM aufweist.
  • Beispiel 23 enthält den Gegenstand eines der Beispiele 19 bis 22, wobei Erzeugen der Selbst-IPI Schreiben eines oder mehrerer Werte in ein Unterbrechungsbefehlsregister aufweist.
  • Beispiel 24 enthält den Gegenstand eines der Beispiele 19 bis 23, wobei Zustellen der externen Unterbrechung Schreiben einer Kennung der externen Unterbrechung in eine Unterbrechungsdeskriptortabelle der virtuellen Maschine aufweist.
  • Beispiel 25 enthält den Gegenstand eines der Beispiele 19 bis 24, wobei der Prozess ferner Virtualisieren, über Ausführung des leichtgewichtigen VMM, eines Speichers der Rechenvorrichtung; Virtualisieren, über Ausführung des leichtgewichtigen VMM, des Prozessors ohne Virtualisieren der APIC; Empfangen, über Ausführung des leichtgewichtigen VMM, einer Nachricht, die anzeigt, dass Eingangsdaten an einer vordefinierten Adresse im Speicher verfügbar sind; Erzeugen der Selbst-IPI in Antwort auf Empfangen der Nachricht; Ausführen, über Ausführung der virtuellen Maschine, eines Unterbrechungsdienstprogramms (ISR) in Antwort auf Erfassen der externen Unterbrechung; und Verarbeiten, über Ausführung des ISR, von Eingangsdaten, die an der vordefinierten Adresse gespeichert sind, aufweist.
  • Beispiel 26 enthält den Gegenstand von Beispiel 25, wobei der Prozess ferner Empfangen der Eingangsdaten über einen CAN-Bus; und Speichern der Eingangsdaten an der vordefinierten Adresse aufweist.
  • Beispiel 27 enthält den Gegenstand von Beispiel 26, wobei Empfangen der Eingangsdaten Empfangen der Eingangsdaten über einen CAN-Bus aufweist, der in einem Fahrzeug angeordnet ist.
  • Die Begriffe und Ausdrücke, die hier benutzt wurden, sind Begriffe einer Beschreibung und nicht einer Einschränkung und es ist nicht beabsichtigt, durch Verwendung solcher Begriffe und Ausdrücke, Äquivalente der gezeigten und beschriebenen Merkmale (oder Teile davon) auszuschließen, und es ist klar, dass verschiedene Modifizierungen im Umfang der Ansprüche möglich sind. Daher sollen die Ansprüche alle solche Äquivalente abdecken. Verschiedene Merkmale, Aspekte und Ausführungsformen wurden hier beschrieben. Die Merkmale, Aspekte und Ausführungsformen eignen sich für eine Kombination miteinander wie auch für eine Variation und Modifikation, wie dem Fachmann klar sein wird. Die vorliegende Offenbarung sollte daher so betrachtet werden, dass sie solche Kombinationen, Variationen und Modifikationen umfasst. Es ist beabsichtigt, dass der Umfang der vorliegenden Offenbarung nicht durch diese ausführliche Beschreibung, sondern vielmehr durch die beiliegenden Ansprüche begrenzt ist. Zukünftig eingereichte Anwendungen, die Priorität zu dieser Anwendung beanspruchen, können den offenbarten Gegenstand auf andere Weise beanspruchen, und können im Allgemeinen einen Satz eines oder mehrerer Elemente enthalten, der unterschiedlich offenbart oder auf andere Weise hier gezeigt ist.

Claims (25)

  1. Rechenvorrichtung aufweisend: einen Speicher; mindestens einen Prozessor, der an den Speicher gekoppelt ist und konfiguriert ist zum: Ausführen eines leichtgewichtigen Monitors einer virtuellen Maschine (VMM); Ausführen einer virtuellen Maschine unter Steuerung des leichtgewichtigen VMM; und Erzeugen, über Ausführung des leichtgewichtigen VMM, einer Selbst-Inter-Prozessor-Unterbrechung (IPI), die eine Kennung einer externen Unterbrechung aufweist; und eine fortgeschrittene programmierbare Unterbrechungssteuerung (APIC), die in dem mindestens einen Prozessor enthalten ist und konfiguriert ist zum: Empfangen der Selbst-IPI; Identifizieren der externen Unterbrechung; und Zustellen der externen Unterbrechung an die virtuelle Maschine.
  2. Rechenvorrichtung nach Anspruch 1, wobei der leichtgewichtige VMM weiter konfiguriert ist, Hardware außer der APIC zu virtualisieren.
  3. Rechenvorrichtung nach Anspruch 2, wobei der leichtgewichtige VMM weiter konfiguriert ist zum: Zuweisen einer ersten virtuellen Maschinensteuerungsstruktur (VMCS), um Ausführung der virtuellen Maschine zu verwalten; Zuweisen einer zweiten VMCS, um Ausführung des leichtgewichtigen VMM zu verwalten, wobei die zweite VMCS ein Pin-basiertes VM-Ausführungssteuerfeld aufweist; und Schreiben eines Werts von 0 in Bit[0] des Pin-basierten VM-Ausführungssteuerfelds der zweiten VMCS.
  4. Rechenvorrichtung nach Anspruch 1, wobei der leichtgewichtige VMM weiter konfiguriert ist, Ausführung der virtuellen Maschine einzuleiten.
  5. Rechenvorrichtung nach Anspruch 1, wobei die APIC ein Unterbrechungsbefehlsregister (ICR) aufweist und der leichtgewichtige VMM konfiguriert ist, die Selbst-IPI mindestens teilweise durch Schreiben eines oder mehrerer Werte in das ICR zu erzeugen.
  6. Rechenvorrichtung nach einem der Ansprüche 1 bis 5, wobei die virtuelle Maschine eine Unterbrechungsdeskriptortabelle (IDT) aufweist und die APIC konfiguriert ist, die externe Unterbrechung mindestens teilweise durch Schreiben einer Kennung der externen Unterbrechung in die IDT zuzustellen.
  7. Rechenvorrichtung nach Anspruch 1, wobei die virtuelle Maschine konfiguriert ist, ein Unterbrechungsdienstprogramm (ISR) in Antwort auf Erfassen der externen Unterbrechung auszuführen, das ISR konfiguriert ist, Eingangsdaten zu verarbeiten, die an einer vordefinierten Adresse im Speicher gespeichert sind, und der leichtgewichtige VMM weiter konfiguriert ist zum: Virtualisieren des Speichers; Virtualisieren des Prozessors ohne Virtualisieren der APIC; Empfangen einer Nachricht, die anzeigt, dass Eingangsdaten an der vordefinierten Adresse verfügbar sind; und Erzeugen der Selbst-IPI in Antwort auf Empfangen der Nachricht.
  8. Rechenvorrichtung nach Anspruch 7, ferner aufweisend ein Steuergerätenetzwerk(CAN)-Bussteuergerät, das an einen CAN-Bus und den Speicher gekoppelt ist, und konfiguriert ist zum: Empfangen der Eingangsdaten über den CAN-Bus; und Speichern der Eingangsdaten an der vordefinierten Adresse.
  9. Rechenvorrichtung nach Anspruch 8, wobei der CAN-Bus in einem Fahrzeug angeordnet ist.
  10. Verfahren zum Zustellen einer externen Unterbrechung an eine virtuelle Maschine unter Verwendung eines leichtgewichtigen Monitors einer virtuellen Maschine (VMM), das Verfahren aufweisend: Ausführen, über mindestens einen Prozessor einer Rechenvorrichtung, des leichtgewichtigen VMM; Ausführen, über den mindestens einen Prozessor der Rechenvorrichtung, einer virtuellen Maschine unter Steuerung des leichtgewichtigen VMM; Erzeugen, über Ausführung des leichtgewichtigen VMM, einer Selbst-Inter-Prozessor-Unterbrechung (IPI), die eine Kennung einer externen Unterbrechung aufweist; Empfangen, über eine fortgeschrittene programmierbare Unterbrechungssteuerung (APIC), der Selbst-IPI; Identifizieren, über die APIC, der externen Unterbrechung; und Zustellen, über die APIC, der externen Unterbrechung an die virtuelle Maschine.
  11. Verfahren nach Anspruch 10, ferner aufweisend Virtualisieren von Hardware außer der APIC.
  12. Verfahren nach Anspruch 11, ferner aufweisend: Zuweisen einer ersten virtuellen Maschinensteuerungsstruktur (VMCS), um Ausführung der virtuellen Maschine zu verwalten; Zuweisen einer zweiten VMCS, um Ausführung des leichtgewichtigen VMM zu verwalten, wobei die zweite VMCS ein Pin-basiertes VM-Ausführungssteuerfeld aufweist; und Schreiben eines Werts von 0 in Bit[0] des Pin-basierten VM-Ausführungssteuerfelds der zweiten VMCS.
  13. Verfahren nach Anspruch 10, wobei Erzeugen der Selbst-IPI Schreiben eines Werts oder mehrerer Werte in ein Unterbrechungsbefehlsregister aufweist.
  14. Verfahren nach einem der Ansprüche 10 bis 13, wobei Zustellen der externen Unterbrechung Schreiben einer Kennung der externen Unterbrechung in eine Unterbrechungsdeskriptortabelle der virtuellen Maschine aufweist.
  15. Verfahren nach Anspruch 10, ferner aufweisend: Virtualisieren, über Ausführung des leichtgewichtigen VMM, eines Speichers der Rechenvorrichtung; Virtualisieren, über Ausführung des leichtgewichtigen VMM, des Prozessors ohne Virtualisieren der APIC; Empfangen, über Ausführung des leichtgewichtigen VMM, einer Nachricht, die anzeigt, dass Eingangsdaten an einer vordefinierten Adresse im Speicher verfügbar sind, Erzeugen der Selbst-IPI in Antwort auf Empfangen der Nachricht; Ausführen, über Ausführung der virtuellen Maschine, eines Unterbrechungsdienstprogramms (ISR) in Antwort auf Erfassen der externen Unterbrechung; und Verarbeiten, über Ausführung des ISR, von Eingangsdaten, die an der vordefinierten Adresse gespeichert sind.
  16. Verfahren nach Anspruch 15, ferner aufweisend: Empfangen der Eingangsdaten über einen CAN-Bus; und Speichern der Eingangsdaten an der vordefinierten Adresse.
  17. Verfahren nach Anspruch 16, wobei Empfangen der Eingangsdaten Empfangen der Eingangsdaten über einen CAN-Bus aufweist, der in einem Fahrzeug angeordnet ist.
  18. Nicht transitorisches computerlesbares Medium, das mit Anweisungen codiert ist, die, wenn durch einen oder mehrere Prozessoren ausgeführt, eine Ausführung eines Prozesses zum Zustellen von Unterbrechungen an eine virtuelle Maschine veranlasst, der Prozess aufweisend: Ausführen, über mindestens einen Prozessor einer Rechenvorrichtung, eines leichtgewichtigen VMM; Ausführen, über den mindestens einen Prozessor der Rechenvorrichtung, einer virtuellen Maschine unter Steuerung des leichtgewichtigen VMM; Erzeugen, über Ausführung des leichtgewichtigen VMM, einer Selbst-Inter-Prozessor-Unterbrechung (IPI), die eine Kennung einer externen Unterbrechung aufweist; Empfangen, über eine fortgeschrittene programmierbare Unterbrechungssteuerung (APIC), der Selbst-IPI; Identifizieren, über die APIC, der externen Unterbrechung; und Zustellen, über die APIC, der externen Unterbrechung an die virtuelle Maschine.
  19. Computerlesbares Medium nach Anspruch 18, wobei der Prozess ferner Virtualisieren von Hardware außer der APIC aufweist.
  20. Computerlesbares Medium nach Anspruch 19, wobei der Prozess ferner aufweist: Zuweisen einer ersten virtuellen Maschinensteuerungsstruktur (VMCS), um Ausführung der virtuellen Maschine zu verwalten; Zuweisen einer zweiten VMCS, um Ausführung des leichtgewichtigen VMM zu verwalten, wobei die zweite VMCS ein Pin-basiertes VM-Ausführungssteuerfeld aufweist; und Schreiben eines Werts von 0 in Bit[0] des Pin-basierten VM-Ausführungssteuerfelds der zweiten VMCS.
  21. Computerlesbares Medium nach Anspruch 18, wobei Erzeugen der Selbst-IPI Schreiben eines oder mehrerer Werte in ein Unterbrechungsbefehlsregister aufweist.
  22. Computerlesbares Medium nach einem der Ansprüche 18 bis 21, wobei Zustellen der externen Unterbrechung Schreiben einer Kennung der externen Unterbrechung in eine Unterbrechungsdeskriptortabelle der virtuellen Maschine aufweist.
  23. Computerlesbares Medium nach Anspruch 18, wobei der Prozess ferner aufweist: Virtualisieren, über Ausführung des leichtgewichtigen VMM, eines Speichers der Rechenvorrichtung; Virtualisieren, über Ausführung des leichtgewichtigen VMM, des Prozessors ohne Virtualisieren der APIC; Empfangen, über Ausführung des leichtgewichtigen VMM, einer Nachricht, die anzeigt, dass Eingangsdaten an einer vordefinierten Adresse im Speicher verfügbar sind, Erzeugen der Selbst-IPI in Antwort auf Empfangen der Nachricht; Ausführen, über Ausführung der virtuellen Maschine, eines Unterbrechungsdienstprogramms (ISR) in Antwort auf Erfassen der externen Unterbrechung; und Verarbeiten, über Ausführung des ISR, von Eingangsdaten, die an der vordefinierten Adresse gespeichert sind.
  24. Computerlesbares Medium nach Anspruch 23, wobei der Prozess ferner aufweist: Empfangen der Eingangsdaten über einen CAN-Bus; und Speichern der Eingangsdaten an der vordefinierten Adresse.
  25. Computerlesbares Medium nach Anspruch 24, wobei Empfangen der Eingangsdaten Empfangen der Eingangsdaten über einen CAN-Bus aufweist, der in einem Fahrzeug angeordnet ist.
DE112017008307.9T 2017-12-27 2017-12-27 Systeme und verfahren zur effizienten unterbrechung von virtuellen maschinen Withdrawn DE112017008307T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/118920 WO2019127080A1 (en) 2017-12-27 2017-12-27 Systems and methods of efficiently interrupting virtual machines

Publications (1)

Publication Number Publication Date
DE112017008307T5 true DE112017008307T5 (de) 2020-09-17

Family

ID=67064252

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017008307.9T Withdrawn DE112017008307T5 (de) 2017-12-27 2017-12-27 Systeme und verfahren zur effizienten unterbrechung von virtuellen maschinen

Country Status (3)

Country Link
US (1) US10884784B2 (de)
DE (1) DE112017008307T5 (de)
WO (1) WO2019127080A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019127080A1 (en) 2017-12-27 2019-07-04 Intel Corporation Systems and methods of efficiently interrupting virtual machines
US11308215B2 (en) 2019-03-08 2022-04-19 International Business Machines Corporation Secure interface control high-level instruction interception for interruption enablement
US11347529B2 (en) * 2019-03-08 2022-05-31 International Business Machines Corporation Inject interrupts and exceptions into secure virtual machine

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060294518A1 (en) * 2005-06-28 2006-12-28 Richmond Michael S Method, apparatus and system for a lightweight virtual machine monitor
US8909946B2 (en) * 2005-11-15 2014-12-09 Microsoft Corporation Efficient power management of a system with virtual machines
US8886862B2 (en) * 2011-08-11 2014-11-11 Mellanox Technologies Ltd. Virtualization of interrupts
US9594703B2 (en) 2012-03-29 2017-03-14 Intel Corporation Architecture and method for managing interrupts in a virtualized environment
US9411625B2 (en) * 2013-12-13 2016-08-09 International Business Machines Corporation Apparatus and control method for hypervisor to obtain faulting instruction
US10142192B2 (en) * 2014-04-09 2018-11-27 International Business Machines Corporation Management of virtual machine resources in computing environments
KR20160039846A (ko) 2014-10-02 2016-04-12 한국전자통신연구원 인터럽트 처리 시스템 및 인터럽트 처리 방법
US10417102B2 (en) * 2016-09-30 2019-09-17 Commvault Systems, Inc. Heartbeat monitoring of virtual machines for initiating failover operations in a data storage management system, including virtual machine distribution logic
WO2019127080A1 (en) 2017-12-27 2019-07-04 Intel Corporation Systems and methods of efficiently interrupting virtual machines

Also Published As

Publication number Publication date
WO2019127080A1 (en) 2019-07-04
US10884784B2 (en) 2021-01-05
US20200249983A1 (en) 2020-08-06

Similar Documents

Publication Publication Date Title
DE10397004B4 (de) Verfahren und Vorrichtung zum Laden eines vertrauenswürdigen Betriebssystems
DE10197121B4 (de) Neuer Prozessormodus zum Begrenzen des Betriebes von auf einer virtuellen Maschine laufender Gast-Software mit Unterstützung eines Virtuelle-Maschine-Monitors
DE10393679B4 (de) Prozessor, der einen Übergang zwischen einem virtuellen Maschinen Betriebsmodus (VM) und einem virtuellen Maschinen Monitor Betriebsmodus (VMM) unterstützt
DE102006061939B4 (de) Verfahren und Vorrichtung zum Zugriff auf eine speicherabgebildete Vorrichtung durch einen Gast
DE112004003080B4 (de) Verwendung mehrerer Monitore virtueller Maschinen zur Abwicklung privilegierter Ereignisse
DE10297273B4 (de) Verfahren zur Bereitstellung von Systemintegrität und Legacy-Umgebungsemulation
EP2575002B1 (de) Verfahren und Virtualisierungssoftware für die Bereitstellung von unabhängigen Zeitquellen für virtuelle Laufzeitumgebungen
DE112012000693B4 (de) Ausführen einer Vielzahl von Instanzen einer Anwendung
DE102010001985A1 (de) Vorrichtung zum Schalten des Betriebs einer virtuellen Maschine zwischen mehreren Computern, die der gleichen Computerplattform zugeordnet sind, und entsprechende Schaltverfahren
DE112010005821T5 (de) Kontextwechsel
DE102014003690A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
DE102014003705A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
DE112012005209T5 (de) Brückenfunktion zwischen Virtual Machine Monitor und Bare-Metal-Bootvorgang
DE112011103411B4 (de) Einheitenemulation in einer virtualisierten Datenverarbeitungsumgebung
DE112015006934T5 (de) Verschachtelte Virtualisierung für virtuelle Maschinenexits
DE102018115670A1 (de) Technologien für die Ausführung von nicht vertrauenswürdigem Code mit Prozessor-Sandbox-Unterstützung
DE112005002347T5 (de) Zeitgeber-Versetzungsmechanismus in der Umgebung einer virtuellen Maschine
DE112011102822T5 (de) Leistungsoptimierte Interrupt-Abgabe
DE102008059790A1 (de) Verfahren, Vorrichtung und Befehle zum Verarbeiten von Vektordaten
DE112006003598T5 (de) Fehlertolerantes Booten in Multiprozessorsystemen
DE102014003540A1 (de) Erzeugen einer isolierten ausführungsumgebung in einem co-designten prozessor
DE102009050983A1 (de) Eine Technik, um Interrupts in einem Computersystem zu kommunizieren
DE112013000369T5 (de) Verwaltung von Threads innerhalb einer Datenverarbeitungsumgebung
DE112017008307T5 (de) Systeme und verfahren zur effizienten unterbrechung von virtuellen maschinen
DE112011102876T5 (de) Ressourcenverwaltungs- und Sicherheitssystem

Legal Events

Date Code Title Description
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee