web-dev-qa-db-fra.com

Quelles sont les différences spécifiques entre un "émulateur" et une "machine virtuelle"?

Je vois que ce sont des choses différentes mais je ne peux vraiment pas dire pourquoi. Certaines personnes disent: "les émulateurs sont pour les jeux; les machines virtuelles sont pour les systèmes d'exploitation" Je ne suis pas d'accord avec cette réponse car il existe des émulateurs pour des plates-formes autres que les consoles de jeux vidéo (AMIGA (?))

Pouvez-vous m'aider s'il vous plaît?

33
A.J.

Les machines virtuelles utilisent l'auto-virtualisation du processeur, dans la mesure où elle existe, pour fournir une interface virtualisée au matériel réel. Les émulateurs émulent le matériel sans se fier au processeur pour pouvoir exécuter le code directement et rediriger certaines opérations vers un hyperviseur contrôlant le conteneur virtuel.

Un exemple x86 spécifique pourrait aider: Bochs est un émulateur, émulant un processeur entier dans un logiciel même lorsqu'il fonctionne sur un processeur physique compatible; qem est également un émulateur, bien qu'avec l'utilisation d'un package kqemu côté noyau, il ait acquis une capacité de virtualisation limitée lorsque la machine émulée correspondait au matériel physique - mais cela ne pouvait pas vraiment prendre avantage de l'auto-virtualisation complète x86, il s'agissait donc d'un hyperviseur limité; kvm est un hyperviseur de machine virtuelle.

On pourrait dire qu'un hyperviseur "émule" l'accès protégé; il n'émule pas le processeur, cependant, et il serait plus correct de dire qu'il assure la médiation de l'accès protégé.

L'accès protégé signifie des choses comme la configuration de tables de pages ou la lecture/écriture de ports d'E/S. Pour le premier, un hyperviseur valide (et modifie généralement, pour correspondre à la mémoire de l'hyperviseur) le fonctionnement de la table de pages et exécute lui-même l'instruction protégée; Les opérations d'E/S sont mappées sur le matériel du périphérique émulé au lieu du CPU émulé.

Et juste pour compliquer les choses, Wine est aussi plus un hyperviseur/machine virtuelle (bien qu'à un niveau ABI plus élevé) qu'un émulateur (d'où "Wine Is Not an Emulator").

32
geekosaur

Le but d'une machine virtuelle est de créer un environnement isolé.

Le but d'un émulateur est de reproduire avec précision le comportement de certains matériels.

Les deux visent un certain niveau d'indépendance par rapport au matériel de la machine hôte, mais une machine virtuelle a tendance à simuler juste assez de matériel pour faire fonctionner l'invité, et ce en mettant l'accent sur l'efficacité de l'émulation/virtualisation. En fin de compte, la machine virtuelle peut ne pas agir comme n'importe quel matériel qui existe réellement et peut nécessiter des pilotes spécifiques aux VM, mais l'ensemble des pilotes invités sera cohérent dans un grand nombre d'environnements virtuels.

Un émulateur, d'autre part, essaie de reproduire exactement tout le comportement, y compris les bizarreries et les bogues, de certains matériels réels simulés. Les pilotes invités requis correspondront exactement à l'environnement simulé.

La technologie de virtualisation, de paravirtualisation et d'émulation, ou une combinaison peut être utilisée pour l'implémentation de machines virtuelles. Les émulateurs ne peuvent généralement pas utiliser la virtualisation, car cela rendrait l'abstraction quelque peu fuyante.

22
Ben Voigt

Dell a expliqué exactement quelle est la différence entre les émulateurs et les machines virtuelles.

Source - http://techpageone.Dell.com/technology/emulation-virtualization-whats-difference/

Émulation ou virtualisation: quelle est la différence?

L'émulation et la virtualisation présentent de nombreuses similitudes, mais elles présentent des différences opérationnelles distinctes. Si vous cherchez à accéder à un ancien système d'exploitation au sein d'une architecture plus récente, l'émulation serait votre voie préférée. Inversement, les systèmes virtualisés agissent indépendamment du matériel sous-jacent. Nous chercherons à séparer ces termes souvent confus et à décrire ce que chacun d'eux signifie pour les opérations informatiques de l'entreprise.

Quelle est la différence?

L'émulation, en bref, implique de faire imiter un système par un autre. Par exemple, si un logiciel s'exécute sur le système A et non sur le système B, nous faisons en sorte que le système B "émule" le fonctionnement du système A. Le logiciel s'exécute alors sur une émulation du système A.

Dans ce même exemple, la virtualisation impliquerait de prendre le système A et de le diviser en deux serveurs, B et C. Ces deux serveurs "virtuels" sont des conteneurs logiciels indépendants, ayant leur propre accès aux ressources logicielles - CPU, RAM, stockage et réseau - et peut être redémarré indépendamment. Ils se comportent exactement comme du vrai matériel, et une application ou un autre ordinateur ne serait pas en mesure de faire la différence.

Chacune de ces technologies a ses propres utilisations, avantages et inconvénients.

Émulation

Dans notre exemple d'émulation, le logiciel remplace le matériel - créant un environnement qui se comporte de la même manière que le matériel. Cela prend un péage sur le processeur en allouant des cycles au processus d'émulation - des cycles qui seraient plutôt utilisés pour exécuter des calculs. Ainsi, une grande partie du muscle CPU est consacrée à la création de cet environnement.

Chose intéressante, vous pouvez exécuter un serveur virtuel dans un environnement émulé. Donc, si l'émulation est un tel gaspillage de ressources, pourquoi y penser?

L'émulation peut être efficacement utilisée dans les scénarios suivants:

• Exécution d'un système d'exploitation destiné à d'autres matériels (par exemple, un logiciel Mac sur un PC; des jeux sur console sur un ordinateur)

• Exécution de logiciels destinés à un autre système d'exploitation (exécution de logiciels spécifiques à Mac sur un PC et vice versa)

• Exécution de logiciels hérités une fois que le matériel comparable est devenu obsolète

L'émulation est également utile lors de la conception de logiciels pour plusieurs systèmes. Le codage peut être effectué sur une seule machine, et l'application peut être exécutée dans des émulations de plusieurs systèmes d'exploitation, tous s'exécutant simultanément dans leurs propres fenêtres.

Virtualisation

Dans notre exemple de virtualisation, nous pouvons affirmer en toute sécurité qu'il utilise les ressources informatiques de manière efficace et fonctionnelle - indépendamment de leur emplacement physique ou de leur configuration. Une machine rapide avec un grand RAM et un stockage suffisant peut être divisée en plusieurs serveurs, chacun avec un pool de ressources. Cette machine unique, habituellement déployée en tant que serveur unique, pourrait alors héberger le site Web d'une entreprise et serveur de messagerie. Les ressources informatiques qui étaient auparavant sous-utilisées peuvent maintenant être utilisées à leur plein potentiel, ce qui peut contribuer à réduire considérablement les coûts.

Alors que les environnements émulés nécessitent un pont logiciel pour interagir avec le matériel, la virtualisation accède directement au matériel. Cependant, bien qu'elle soit l'option globale la plus rapide, la virtualisation se limite à l'exécution d'un logiciel qui était déjà capable de s'exécuter sur le matériel sous-jacent. Les avantages les plus évidents de la virtualisation incluent:

• Large compatibilité avec l'architecture CPU x86 existante

• Possibilité d'apparaître comme des périphériques physiques à tous les matériels et logiciels

• Autonome dans chaque instance

Entre émulation et virtualisation, votre entreprise peut exécuter la plupart des fonctions des systèmes virtuels. Bien que les deux services se ressemblent, tout tourne autour de la façon dont vous utilisez le logiciel. Si vous voulez que le logiciel s'éloigne, la virtualisation permet au code invité de s'exécuter directement sur le CPU. Inversement, les émulateurs exécuteront le code invité eux-mêmes, économisant le CPU pour d'autres tâches.

6
LianY