La machine virtuelle est un système informatique. Le but ultime d'un système informatique est d'exécuter une logique programmée. De ce point de vue, les machines virtuelles peuvent être classées en 4 types selon le niveau d'abstraction et la portée de l'émulation:
Type 1: la machine virtuelle ISA (Full Instruction Set Architecture) fournit l'émulation ou la virtualisation ISA d'un système informatique complet. Les systèmes d'exploitation et applications invités peuvent s'exécuter sur le dessus de la machine virtuelle en tant qu'ordinateur réel (par exemple, VirtualBox, QEMU, XEN ).
Type 2: la machine virtuelle ABI (Application Binary Interface) fournit une émulation ABI de processus invité. Les applications contre cet ABI peuvent s'exécuter dans le processus côte à côte avec d'autres processus d'applications ABI natives (par exemple, la couche d'exécution IA-32 d'Intel sur Itanium, le code Morphing de Transmeta pour l'émulation X86, la couche de traduction Rosetta d'Apple pour l'émulation PowerPC ).
Type 3: la machine virtuelle ISA virtuelle fournit un moteur d'exécution afin que les applications codées dans l'ISA virtuel puissent s'exécuter dessus. Virtual ISA définit généralement un niveau élevé et une portée limitée de la sémantique ISA, il ne nécessite donc pas que la machine virtuelle émule un système informatique complet (par exemple, la JVM de Sun Microsystem, le Common Language Runtime de Microsoft, la machine virtuelle Parrot de Parrot Foundation).
Type 4: Language Virtual Machine fournit un moteur d'exécution qui exécute des programmes exprimés dans un langage invité. Les programmes sont généralement présentés à la machine virtuelle sous la forme source du langage invité, sans avoir été préalablement compilés en code machine. Le moteur d'exécution a besoin d'interpréter ou de traduire le programme et également de remplir certaines fonctionnalités qui sont abstraites par le langage telles que la gestion de la mémoire (par exemple, les moteurs d'exécution pour Basic, Lisp, Tcl, Ruby ).
Les frontières entre les types de machines virtuelles ne sont pas clairement définies. Par exemple, une machine virtuelle de langage peut également utiliser la technique d'une machine virtuelle ISA virtuelle en compilant le programme dans une sorte d'ISA virtuel, puis en exécutant le code sur une machine virtuelle de cet ISA virtuel.
De nombreuses conceptions de VM, telles que BEAM , franchissent les limites. Ils pourraient être classés dans les 3ème et 4ème catégories.
la source:
- Wikipédia
- Conception et mise en œuvre avancées de machines virtuelles; Xlao-Feng LI