Die virtuelle Maschine ist ein Computersystem. Das ultimative Ziel eines Computersystems ist die Ausführung programmierter Logik. Aus dieser Perspektive können virtuelle Maschinen je nach Abstraktionsebene und Emulationsumfang in vier Typen eingeteilt werden:
Typ 1: Die virtuelle ISA-Maschine (Full Instruction Set Architecture) bietet die ISA-Emulation oder -Virtualisierung eines vollständigen Computersystems. Gastbetriebssysteme und -anwendungen können als tatsächlicher Computer (z. B. VirtualBox, QEMU, XEN ) auf der virtuellen Maschine ausgeführt werden .
Typ 2: Die virtuelle ABI-Maschine (Application Binary Interface) bietet eine Gastprozess-ABI-Emulation. Anwendungen gegen diesen ABI können im Prozess neben anderen Prozessen nativer ABI-Anwendungen ausgeführt werden (z. B. Intels IA-32-Ausführungsschicht auf Itanium, Transmetas Code Morphing für X86-Emulation, Apples Rosetta-Übersetzungsschicht für PowerPC-Emulation ).
Typ 3: Virtuelle virtuelle ISA-Maschine bietet eine Laufzeit-Engine, damit in der virtuellen ISA codierte Anwendungen darauf ausgeführt werden können. Virtuelle ISA definiert normalerweise einen hohen und begrenzten Umfang der ISA-Semantik, sodass die virtuelle Maschine kein vollständiges Computersystem emulieren muss (z. B. JVM von Sun Microsystem, Common Language Runtime von Microsoft, Parrot Foundation, virtuelle Maschine von Parrot Foundation).
Typ 4: Language Virtual Machine bietet eine Laufzeit-Engine, die Programme ausführt, die in einer Gastsprache ausgedrückt werden. Die Programme werden der virtuellen Maschine normalerweise in der Quellform der Gastsprache präsentiert, ohne zuvor vollständig in Maschinencode kompiliert worden zu sein. Die Laufzeit-Engine muss das Programm interpretieren oder übersetzen und bestimmte Funktionen erfüllen, die von der Sprache abstrahiert werden, z. B. die Speicherverwaltung (z. B. die Laufzeit-Engines für Basic, Lisp, Tcl, Ruby ).
Die Grenzen zwischen den Typen virtueller Maschinen sind nicht eindeutig. Beispielsweise kann eine virtuelle Sprachmaschine auch die Technik einer virtuellen virtuellen ISA-Maschine verwenden, indem das Programm zu einer Art virtueller ISA kompiliert und dann der Code auf einer virtuellen Maschine dieser virtuellen ISA ausgeführt wird.
Viele VM-Designs wie BEAM überschreiten die Grenzen. Sie könnten sowohl in die 3. als auch in die 4. Kategorie eingeteilt werden.
Quelle:
- Wikipedia
- Fortgeschrittenes Design und Implementierung virtueller Maschinen; Xlao-Feng LI