2009-05-14 6 views

Antwort

22

Nr

VMWare und der Rest virtualisieren tatsächlich die Hardware der Maschine. Das Betriebssystem, das innerhalb eines VMWare-Containers (oder der Virtualisierungscontainer von Parallels oder Windows oder Bochs oder ...) ausgeführt wird, hat ein unterschiedliches Maß an Bewusstsein, dass es in einem virtualisierten Container ausgeführt wird. In VMWare hat das Betriebssystem keine Ahnung, dass es in einem virtuellen Container ausgeführt wird. Das Betriebssystem wird überhaupt nicht geändert, obwohl in der Regel spezielle Treiber installiert werden (vor allem Video), um Leistungsprobleme zu vermeiden. Einige andere VMs führen keine vollständige Hardwarevirtualisierung durch und erfordern stattdessen, dass das Betriebssystem innerhalb des Containers spezielle Aufrufe an den Container anstelle der regulären Hardwareaufrufe durchführt.

Die JVM ist in diesem Sinne überhaupt keine virtuelle Maschine. Keine andere Hardware als der Prozessor wird virtualisiert. Die JVM ist im Wesentlichen eine virtualisierte CPU plus die gleiche Art von Laufzeit, die in einer C++ - oder jeder anderen objektorientierten Sprache enthalten ist, plus Speicherbereinigung und andere Notwendigkeiten. Außerdem sind Java-Klassendateien (und JAR-Dateien usw.) natürlich kein Maschinencode, sondern ein Zwischenbyte-Code. Daher muss die JVM zur Laufzeit Klassendateien kompilieren oder interpretieren (unabhängig davon, ob sie in einer JAR-Datei enthalten sind) und kann zur Laufzeit dynamisch neuen Code laden und finden.

Die JVM wird als virtuelle Maschine bezeichnet, da die JVM-Definition eine abstrakte Maschine definiert. Dies umfasst Register, Stapel usw., und der Byte-Code, in den Java-Quelle kompiliert wird, ist praktisch Maschinencode für diese virtuelle Maschine. Die JVM interpretiert oder kompiliert dann diesen Byte-Code in native Maschinenbefehle.

Der Unterschied ist im Wesentlichen, dass die JVM ist eine virtualisierte Prozessor und die anderen virtuellen Maschinen sind Maschinen virtualisierten (einschließlich Videokarte, Netzwerk und andere externe Geräte und Hardware-Register).

6

Nein. Es gibt einen Unterschied zwischen der virtuellen Systemmaschine und der virtuellen Prozessmaschine. JVM ist eine prozessvirtuelle Maschine, während die VMWare und die Art systemvirtuelle Maschinen sind. Weitere Informationen finden Sie unter wikipedia entry.

Soweit parallel virtuelle Maschinen sind betreffen, die oben genannten Eingangszustände,

PVM (Parallel Virtual Machine) sind nicht streng virtuelle Maschinen, wie die Anwendungen, die auf noch laufen Zugang zu alle OS-Dienste, und sind daher nicht auf das System Modell von der "VM" zur Verfügung gestellt beschränkt.

2

Es gibt eine anständige Zusammenfassung der Unterscheidungen in "Running Xen: Ein Hands-On-Leitfaden für die Kunst der Virtualisierung" von Jeanna Matthews, et al. (Amazon). VMWare ist ein Beispiel für vollständige Virtualisierung, und versucht, eine physische Hardwarearchitektur zu virtualisieren, so dass verschiedene unmodifizierte Gastbetriebssysteme darauf sitzen können. Eine Java Virtual Machine ist ein Beispiel dafür, was sie Anwendungsvirtualisierung nennen, wobei "Anwendungen in einer virtuellen Ausführungsumgebung ausgeführt werden, die eine standardmäßige API für die plattformübergreifende Ausführung bereitstellt und den Verbrauch lokaler Ressourcen durch die Anwendung verwaltet." (p.13)

In beiden Fällen verfügen Sie über eine Virtualisierungsebene, auf der die Software ausgeführt wird. Die JVM führt Java-Anwendungen aus, während VMWare vollständige Betriebssysteme ausführt. VMWare virtualisiert eine Maschine, die immer als physische Hardware ausgedrückt wurde. Eine JVM virtualisiert eine Maschine, die in physischer Hardware ausgedrückt werden kann, aber fast immer nicht (aber siehe hardware JVMs).

Verwandte Themen