La macchina virtuale è un sistema informatico. L'obiettivo finale di un sistema informatico è eseguire la logica programmata. Da questo punto di vista, le macchine virtuali possono essere classificate in 4 tipi in base al livello di astrazione e alla portata dell'emulazione:
Tipo 1: macchina virtuale ISA (Full Instruction Set Architecture) fornisce l'emulazione o virtualizzazione ISA di un sistema informatico completo. I sistemi operativi e le applicazioni guest possono essere eseguiti sulla parte superiore della macchina virtuale come un computer reale (ad esempio, VirtualBox, QEMU, XEN ).
Tipo 2: la macchina virtuale ABI (Application Binary Interface) fornisce un'emulazione ABI del processo guest. Le applicazioni contro tale ABI possono essere eseguite nel processo fianco a fianco con altri processi di applicazioni ABI native (ad esempio, Intel IA-32 Execution Layer su Itanium, Transmeta's Code Morphing per l'emulazione X86, Apple's Rosetta Translation Layer per l'emulazione PowerPC ).
Tipo 3: la macchina virtuale ISA virtuale fornisce un motore di runtime in modo che le applicazioni codificate nell'ISA virtuale possano essere eseguite su di essa. Virtual ISA di solito definisce un ambito di alto livello e limitato della semantica ISA, quindi non richiede che la macchina virtuale emuli un sistema informatico completo (ad esempio, JVM di Sun Microsystem, Common Language Runtime di Microsoft, macchina virtuale Parrot di Parrot Foundation).
Tipo 4: Language Virtual Machine fornisce un motore di runtime che esegue programmi espressi in una lingua guest. I programmi vengono solitamente presentati alla macchina virtuale nella forma sorgente del linguaggio guest, senza essere stati completamente compilati in anticipo nel codice macchina. Il motore di runtime deve interpretare o tradurre il programma e soddisfare anche alcune funzionalità astratte dal linguaggio come la gestione della memoria (ad esempio, i motori di runtime per Basic, Lisp, Tcl, Ruby ).
I confini tra i tipi di macchine virtuali non sono netti. Ad esempio, una macchina virtuale in linguaggio può anche utilizzare la tecnica di una macchina virtuale ISA virtuale compilando il programma in una sorta di ISA virtuale e quindi eseguendo il codice su una macchina virtuale di tale ISA virtuale.
Molti progetti VM, come BEAM , superano i confini. Potrebbero essere inseriti in entrambe le categorie 3a e 4a.
fonte:
- Wikipedia
- Progettazione avanzata e implementazione di macchine virtuali; Xlao-Feng LI