Wie Java Virtual Machine kann ohne Virtualisierungsunterstützung auf dem System arbeiten?

stimmen
3

Wenn Hardwareunterstützung ein Muss für die Virtualisierung ist, wie kann Java Virtual Machines laufen auf Rechnern ohne Unterstützung für Virtualisierung? Oder ist JVM nicht eine virtuelle Maschine?

Veröffentlicht am 30/12/2009 um 03:59
quelle vom benutzer
In anderen Sprachen...                            


6 antworten

stimmen
1

Die JVM ist eine virtuelle Maschine, aber es keine zusätzliche Unterstützung vom Betriebssystem benötigen. Anstelle von Anweisungen für einen bestimmten CPU-Virtualisierung führt es Java-Bytecode.

Beantwortet am 30/12/2009 um 04:01
quelle vom benutzer

stimmen
11

Eine JVM ist nicht virtuell im gleichen Sinne als VirtualBox oder VMWare virtuelle Maschine. Es ist eine ‚Maschine‘, die den Java-Bytecode implementiert, nicht eine virtualisierte Version der tatsächlichen Hardware.

Der Begriff-of-art ‚virtuelle Maschine‘ wurde für das folgende Szenario vor sehr langer Zeit geprägt:

  1. macht einen Computer auf, wie Knuth MIX.
  2. schreibt ein Computerprogramm, das den konfektionierten Computer implementiert.
  3. Programme ausführen

Wenn diese virtuelle Maschine läuft, ist es ein ganz gewöhnliches Programm, vollständig im User-Modus ausgeführt wird. Es braucht keine spezielle Hilfe von der Hardware oder Betriebssystem einigermaßen gut zu arbeiten. Dies gilt vor allem für die JVM, da der Java-Bytecode befaßt sich nicht mit Low-Level-Hardware-I / O oder anderen Dingen, die schwer zu simulieren.

Später Historisch (um eine bestimmte Instanz zu holen), erfunden IBM VM / 370. VM / 370 verwendet die anderen Sinne der ‚virtuellen Maschine‘ Begriff. In diesem letzteren Sinne ist die Hardware und das Betriebssystem zusammen , um eine einzigen physischen Maschine zu ermöglichen , mehrere virtuelle Instanzen von (mehr oder weniger) zu bewirten die gleiche Architektur, bei der mehrere Kopien des gesamten Betriebssystems geschrieben werden , als ob sie auf mehr laufen oder weniger nackte Hardware. Später wurde die X86 mit Funktionen , um dies zu erleichtern.

Also, ja, jede virtuelle Maschine Verwendung einiger physischer Hardware zu machen, wenn Sie es mit einem Stück Papier um einen Tisch (Tempo John Searle) übergeben implementieren. Aber wenn die virtuelle Maschine keine Ähnlichkeit mit der Maschine trägt es läuft, dann gibt es keine Notwendigkeit für spezielle Hilfe von Betriebssystem und Hardware, und keine Notwendigkeit, für etwas so komplex wie VM / 370 oder VMware.

Beantwortet am 30/12/2009 um 04:02
quelle vom benutzer

stimmen
1

Die JVM ist eine virtuelle Maschine für die Ausführung von Java, mit anderen Worten es eine Maschine emuliert, die Ausführung von Java-fähig sein würde. Es ist eine verwirrende Auswahl von Namen, aber es kommt von der allgemeinen Bedeutung des Begriff „Maschine“ nicht von der häufigeren Virtual Machine Bedeutung.

Die JVM, wie eine normale VM emuliert die Ausführung von Befehlen, aber im Fall der JVM der Anweisungen emuliert werden Java Anweisungen, und im Fall einer VM sind sie Hardware Anweisungen wie durch ein O auf demselben ausgeführt werden würde Hardware.

Beantwortet am 30/12/2009 um 04:04
quelle vom benutzer

stimmen
1

Ja, die JVM hat Zugriff Hardware, aber das ist, warum Sie einen Mac oder Windows-JVM installieren, da die Anweisungen von der JVM übersetzt und gehandelt werden an der Installation der JVM in Abhängigkeit davon, zum Beispiel Datei-Dialog auf dem Mac öffnet den Mac Dialog und Fenster JVM öffnet das Fenster Dialog.

So ist es nicht vom System virtualisiert werden, aber der Bytecode von der JVM installiert Sie virtualisiert wird. Es ist im Grunde wie eine Anwendung, die etwas (Bytecode) und tut etwas (Zugang Hardware oder andere Sachen) liest.

Beantwortet am 30/12/2009 um 04:10
quelle vom benutzer

stimmen
3

Wenn Hardwareunterstützung ist ein Muss für die Virtualisierung, ...

Lassen Sie mich Ihnen genau dort aufhören :-)

Es gibt einen Unterschied in Konzept zwischen der JVM (Software-Virtualisierung) und (zum Beispiel) ein VMWare VM (Hardware-unterstützte Virtualisierung).

Die JVM (und andere Software-basierten VMM wie diejenigen, die x86 auf Solaris Hardware erlauben, zu emulieren - ich glaube, Bochs und möglicherweise DosBox in diese Kategorie fällt) laufen wie jede andere Anwendung, das Betriebssystem mit Zugriff auf die Hardware zu gewinnen oder seine eigene Hardware rein in Software emuliert.

VMWare und die anderen VMM-Software optimiert für die Geschwindigkeit, die sich auf Hardware-Unterstützung. Mit anderen Worten, sie laufen auf der Hardware, als ob sie vollen Zugriff auf die Hardware haben und nur, wenn sie versuchen, sie etwas zu tun, sind nicht, die versuchen, und gefälschte fängt es an funktioniert das OS soll.

Deshalb VMWare läuft so viel schneller als die reine Software-Emulatoren. Es ist, weil, für die überwiegende Mehrheit der Zeit, es ist tatsächlich auf der realen Hardware läuft.

Beantwortet am 30/12/2009 um 04:16
quelle vom benutzer

stimmen
0

Es soll beachtet werden , dass nichts festgelegt , dass eine JVM nicht nicht (müssen) , hat HW - Virtualisierung Zugang. Es gibt bemerkenswerte Ausnahmen, aber auf dem das beantwortete Plakat erwähnt, gibt es wenige CPs , die ausgeführt werden Java - Bytecode nativ. Vielleicht eines Tages ein Java - Bytecode HAL oder TIMI wird alltäglich sein , um die JVM in der gleichen Klasse wie die formalisierte HW - Virtualisierung zu setzen?

Beantwortet am 02/01/2010 um 21:28
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more