Remove ads
Rein softwarebasierter Computer auf einem anderen Computer Aus Wikipedia, der freien Enzyklopädie
Als virtuelle Maschine (VM) wird in der Informatik die Software-technische Kapselung eines Rechnersystems innerhalb eines lauffähigen Rechnersystems bezeichnet. Die virtuelle Maschine bildet die Rechnerarchitektur eines real in Hardware existierenden oder eines hypothetischen Rechners nach.[1]
Die abstrahierende Schicht zwischen realem oder Host- bzw. Wirt-Rechner, auf dem die virtuelle Maschine ausgeführt wird, und der virtuellen Maschine wird Hypervisor oder Virtual Machine Monitor genannt; ihre Implementierung erfolgt
Der Hypervisor erlaubt in der Regel den Betrieb mehrerer virtueller Maschinen gleichzeitig auf einem physischen Rechner.
Virtuelle Maschinen werden direkt auf der CPU des Gastgeberrechners ausgeführt und nutzen üblicherweise deren Virtualisierungsfunktionen. Dagegen wird bei Emulatoren die Ausführung rein als Software realisiert, wodurch auch eine andere Rechnerarchitektur als die des Gastgeberrechners nachgebildet werden kann.
Virtuelle Maschinen werden heute danach eingeteilt, in welchem Umfang sie die Funktionalität eines realen Rechners nachstellen. Systembasierte virtuelle Maschinen bilden einen Rechner so vollständig nach, dass Betriebssysteme, die für den realen Rechner entworfen wurden, sich auf der virtuellen Maschine genauso wie auf dem entsprechenden realen Rechner ausführen lassen.[2] Dieser Ansatz wird auch als vollständige Virtualisierung bezeichnet.[3] Er basiert im Wesentlichen auf der von Robert Goldberg gegebenen und von Gerald Popek 1972 noch enger gefassten Definition:
„Eine virtuelle Maschine ist ein effizientes, identisches und isoliertes Duplikat eines echten Prozessors.“[4]
Beispiele für bekannte Produkte, die Virtualisierung mit Hilfe systembasierter virtueller Maschinen realisieren, sind Oracles VirtualBox oder VMwares vSphere.
Im Gegensatz dazu erlauben es prozessbasierte virtuelle Maschinen lediglich, einzelne Programme abstrahiert von der Ausführungsumgebung einer Rechnerarchitektur auszuführen, indem sie eine darauf aufbauende Laufzeitumgebung bereitstellen.[5] Meist werden solche virtuellen Maschinen auf mehreren Rechnerarchitekturen bereitgestellt, wodurch die Anwendung dann auf all diesen Plattformen ohne Änderung ausgeführt werden kann. Bekannte Beispiele solcher Umgebungen mit entsprechenden virtuellen Maschinen sind die Java-Laufzeitumgebung als Teil der Java-Plattform und die Common Language Runtime als Teil des .NET Frameworks.
Der Wunsch, mehrere Betriebssysteme gleichzeitig auf einem Rechner betreiben zu können, war die ursprüngliche Motivation zur Einführung systembasierter virtueller Maschinen. IBMs 1966 erstmals veröffentlichte CP/CMS war das erste Betriebssystem, welches vollständige Virtualisierung unterstützte und es dadurch mehreren Benutzern erlaubte, gleichzeitig auf einem physischen Rechner jeweils ein eigenes Einzelbenutzerbetriebssystem unabhängig zu nutzen.[6]
In ihrem Artikel Formal Requirements for Virtualizable Third Generation Architectures von 1974 legten Gerald J. Popek and Robert P. Goldberg die formalen Grundlagen und stellen die grundlegenden Anforderungen an eine Architektur dar, um virtuelle Maschinen mit Hilfe eines Hypervisors zu unterstützen.[4]
Der Einsatz systembasierter virtueller Maschinen bietet gegenüber der direkten Ausführung von Betriebssystemen auf dem Rechner einige Vorteile:
Allerdings „erkauft“ man sich diese Vorteile auch mit einigen Nachteilen, die sich gegenüber direkter Ausführung des Betriebssystems auf dem Rechner ergeben:
Die Geschichte der prozessbasierten virtuellen Maschinen begann mit dem bahnbrechenden Aufsatz Transportability of Software Applications on Microcomputers von W. Wellbourne (1983) und der vorausgegangenen Arbeit A Comparison of Pascal Intermediate Languages von P. Nelson (1979).[7] Es geht hier um die Lösung des Problems, Anwendungscode, der für eine Rechnerarchitektur entwickelt wurde, ohne Änderungen auf einer anderen Rechnerarchitektur auszuführen. Insbesondere um den Portierungsaufwand für Anwendungen von einer Architektur zu anderen (z. B. neuen Rechnerarchitekturen) gering zu halten.
Der Einsatz von prozessbasierten virtuellen Maschinen bietet folgende Vorteile:
Der Einsatz von prozessbasierten virtuellen Maschinen hat folgende Nachteile:
Diese Nachteile können durch geeignete (z. B. 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. Dadurch kann der Compiler noch spezifischere Optimierungen für das System des Anwenders vornehmen als es bei einem vorkompilierten Programm ohne spezielle Optimierungen für das System bzw. den Prozessor des Anwenders möglich wäre.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.