Virtuelle Maschine


Virtuelle Maschine
virtuelle Maschine in VirtualBox

Eine virtuelle Maschine, kurz VM, ist ein virtueller Computer. Eine solche Maschine besteht nicht aus Hardware, sondern aus Software. Auf einem physischen Computer können gleichzeitig mehrere virtuelle Maschinen betrieben werden.

Virtuelle Maschinen werden als Betriebssystem ausgeführt, das nicht exklusiv über den Computer verfügt, oder als Laufzeitumgebung. Eine Laufzeitumgebung ist ein Modell eines Computers in Software. Sich als Betriebssystem darstellende virtuelle Maschinen können vollständig durch Software (z/VM), mit zusätzlicher Unterstützung durch Hardware und Firmware (Intel VT, AMD-V) oder allein durch Hardware und Firmware (LPAR) realisiert werden.

Stellt das Host-System keine Möglichkeit zur Verfügung, für ein bestimmtes Programm den Anwendungscode direkt auf einem Prozessor ausführen zu können, muss ein Interpreter den Anwendungscode indirekt ausführen. Benötigt bei der Virtualisierung von Hardware (VMware, QEMU) das darauf zugreifende System Schnittstellen (z. B. für Geräte und Kommunikation), die das Betriebssystem nicht bereitstellen kann, müssen diese emuliert werden.

Inhaltsverzeichnis

Systeme und Modelle

In der Entwicklung der Rechnerarchitekturen hat sich eine Trennung der typischen VM-Modelle ergeben, mit denen Hardware-CPUs und Software-VMs entwickelt werden. Die große Mehrzahl physischer CPUs verwalten mehrere Operanden in einer beschränkten Zahl direkt adressierbarer Register (Registermaschinen), die große Mehrzahl der portablen VM-Systeme verwalten ihre Operanden in einem verschiebbaren unbeschränkten Stapel (Stapelmaschinen). Dies ergab sich durch die verschiedenen Vorteile dieser Ansätze.

Bei VM-Modellen nach Art von Stapelmaschinen entsprechen die obersten Stapelwerte jeweils dem Parameterblock eines Funktionsaufrufs, der nur einmal vorhanden ist. Die Registermaschinen kommen dagegen ohne Parameterblock aus, indem Schalter bestimmte Register für eine Operation an- und abschalten, wofür zusätzliche Schalter und Leiterbahnen gebraucht werden. Dies beschränkt die Zahl der Register und Recheneinheiten. Eine Emulation von Registermaschinen ersetzt nun die Recheneinheiten durch Funktionsblöcke, für deren Aufruf jeweils Parameterblöcke erstellt werden.

Virtuelle Maschinen mit Orientierung auf Ausführung in Software spielen heute eine bedeutende Rolle, da Microsoft mit der .NET-Architektur dem Beispiel von SUN mit der virtuellen Java-Maschine (Java VM) folgt. Hintergrund ist jeweils die Orientierung auf plattformunabhängige Ausführung von Programmen auf verschiedenen Rechnern, die über ein Netzwerk (z.B. das Internet) verbunden sind.

Die heutigen VM-Systeme besitzen eine große Zahl von Vorläufern, bei denen nutzerorientierte Darstellungen eines Programms (Programmiersprachen) nicht direkt in die maschinenorientierte Darstellung der CPU übersetzt wurden (Maschinencode), sondern in einen einfach strukturierten Zwischencode. Dieser Zwischencode wird dann auf dem Zielsystem durch einen Interpreter ausgeführt. Neben der direkten Ausführung stehen dabei auch verschiedene Optimierungen zur Verfügung, insbesondere die JIT-Compiler.

Die Speicherung des Zwischencodes kann unterschiedlich ausfallen, etwa als Bytecode oder als Baumstruktur. Technisch kann dies als Vorkompilierung betrachtet werden, bei der die Analyseschritte eines Compilers zum Verständnis der problemorientierten Programmiersprache durchlaufen werden (Frontend des Compilers), jedoch keine maschinenorientierte Anpassung an eine spezielle CPU erfolgt (Backend des Compilers), sondern die Anpassung an die abstrakten Ausführungseigenschaften der virtuellen Maschine erfolgt.

Hypervisor

Hauptartikel: Hypervisor

Der „Hypervisor“ oder „Virtual Machine Monitor“ verwaltet die Ressourcenverteilung für einzelne virtuelle Maschinen. Er verteilt die Hardware-Ressourcen derart, dass für jedes einzelne VM-Betriebssystem alle Ressourcen bei Bedarf verfügbar sind, so als ob nur ein Betriebssystem vorhanden wäre.

Komponentenübersicht eines Virtual Machine Monitors mit Hardware und VMs

Vorteile und Nachteile

Vorteile einer portablen virtuellen Maschine:

Nachteile einer portablen virtuellen Maschine:

  • Die Ausführung eines portablen Programms auf einer portablen virtuellen Maschine ist meist langsamer als die native Ausführung von Programmen, die speziell für die Zielumgebung übersetzt wurden.
    • Bei Verwendung eines Interpreters ergeben sich zusätzliche Indirektionen, was weniger effizient als direkte Ausführung ist.
    • Dynamische Übersetzung zur Laufzeit (JIT-Compiler) löst zwar die meisten Indirektionen auf und sorgt für großteils direkte Ausführung, jedoch erfordert die Übersetzung selbst, bis der Code direkt ausgeführt werden kann, zusätzlichen Aufwand, der jedoch nur im Moment der Übersetzung anfällt, dagegen nicht mehr bei späteren Durchläufen.

Diese Nachteile können durch geeignete (zum Beispiel dynamische) Optimierung verringert werden. Eine weitere Möglichkeit ist die automatische Kompilierung mittels Ahead-of-time-Compiler unmittelbar vor der Ausführung. Damit wird das Backend eines hochoptimierenden maschinenorientierten Compilers unmittelbar auf dem Anwendersystem ausgeführt. Dabei kann dieser noch spezifischere Optimierungen an das System des Anwenders vornehmen, als es bei einem vorkompilierten Programm ohne spezielle Optimierungen für den Prozessor des Anwenders möglich wäre.

Weitere virtuelle Maschinen

Neben den Stapelmaschinen der JVM/CLR gibt es auch registerbasierte virtuelle Maschinen, etwa Parrot (VM von Perl 6). Neben der Definition von virtuellen Maschinen für allgemeine Aufgaben gibt es auch spezielle Modelle wie etwa die VM-Definition für Shaderprogramme in 3D-Systemen.

Ein verbreitetes, aber unbekannt gebliebenes VM-System ist Open Firmware, auf der Basis einer Forth-Stapelmaschine mit festgelegten F-Codes und Laufzeitumgebung für den speziellen Einsatz zur BIOS-Programmierung. Eingesetzt wird dieses System heute überwiegend bei PowerPC-Rechnern auf CHRP-Basis.

Umgekehrt findet sich die Möglichkeit, die Hardware einer CPU um die Möglichkeit zur Ausführung mehrerer verschiedener VM-Modelle zu erweitern. CPUs bieten oft einen Kompatibilitätsmodus (z. B. Virtual 8086 Mode). Eine andere Möglichkeit ist es, fremden Maschinencode in den internen Maschinencode (Microcode) zu übersetzen (z. B. CPUs von Transmeta).

Anwendungen

Weblinks


Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • virtuelle Maschine —   [Abk. VM, engl. virtual machine], Simulation von Hardware, z. B. eines Prozessors oder eines ganzen Computers, auf einem Computer durch Verwendung geeigneter Software. So wird beispielsweise im Virtual 8086 Mode auf 80386er oder höheren… …   Universal-Lexikon

  • virtuelle Maschine — 1. Begriff aus dem ⇡ Software Engineering: Struktur eines Softwaresystems nach Abstraktionsebenen ausgehend von dem Grundgedanken, dass die „reale“ Maschine die ⇡ Hardware ist: Diese wird erst grundsätzlich funktionsfähig durch das ⇡… …   Lexikon der Economics

  • virtuelle Maschine — virtualioji mašina statusas T sritis automatika atitikmenys: angl. virtual machine vok. virtuelle Maschine, f rus. виртуальная машина, f pranc. ordinateur virtuel, m …   Automatikos terminų žodynas

  • Parallele Virtuelle Maschine — Die Parallele Virtuelle Maschine (Abkürzung PVM, engl. Parallel Virtual Machine) ist ein Public Domain Softwarepaket, mit dem auf Standard PCs verteilte Anwendungen realisierbar sind. Die vernetzten PCs können unter PVM wie ein großer… …   Deutsch Wikipedia

  • virtuelle Realität: Nicht nur zur Unterhaltung —   Schon heute fällt es manchen Menschen schwer, die reale Welt von der virtuellen Welt zu unterscheiden. Ist das, was das Fernsehen zeigt, wirklich? Wo liegen die Grenzen zwischen »künstlicher« und »natürlicher« Welt? Die Technik von morgen… …   Universal-Lexikon

  • Virtuelle Realität — Virtuelle Wirklichkeit; Virtual Reality; VR * * * I virtuelle Realität   (englisch virtual reality; Abkürzung: VR) …   Universal-Lexikon

  • Virtuelle Inbetriebnahme — Unter einer virtueller Inbetriebnahme (kurz: VIBN) versteht man das Einspielen, Erproben und Ändern von Planungsdaten auf einer virtuellen Maschine, bevor die erfolgreich getesteten Programme auf die reale Maschine übertragen werden. Dabei können …   Deutsch Wikipedia

  • Virtuelle Mobilität — Mit dem Begriff E Mobilität bzw. E Mobility wird die Abwicklung von Aufträgen und Geschäftsprozessen über das Internet bezeichnet, bei der vor allem Arbeitsvorgänge losgelöst von der Mobilität der Person mobil im virtuellen Raum mit Hilfe der… …   Deutsch Wikipedia

  • Virtuelle Adresse — Die virtuelle Speicherverwaltung (engl. virtual memory management) ist eine spezielle Speicherverwaltung in einem Computer. Der virtuelle Speicher bezeichnet den vom tatsächlich vorhandenen Arbeitsspeicher unabhängigen Adressraum, der einem… …   Deutsch Wikipedia

  • Virtuelle Speicherverwaltung — Schemabild der Anwendung des virtuellen Speichermanagement: links: virtueller Speicherraum pro Prozess, Speicher ist linear und unfragmentiert rechts: reale Speicherquellen, typischerweise RAM oder Festplatte, mehrere, auch kleine… …   Deutsch Wikipedia