Question émulateur et machine virtuelle


Je me demandais quelles étaient les différences et les relations entre émulateur et machine virtuelle? L'un est-il un genre particulier de l'autre et quelles sont les autres sortes dans l'autre? Je ne comprends pas très bien ces questions des articles de Wikipédia liés.


4
2018-06-02 01:31


origine




Réponses:


Comme les termes les plus couramment utilisés, un émulateur est une application qui exécute du code conçu pour une plate-forme sur une autre plate-forme.

Une machine virtuelle est un cas particulier d'un émulateur, car elle exécute du code conçu pour une plate-forme dans un environnement virtualisé sur la même plate-forme - par exemple, des logiciels comme VMWare et VirtualBox exécuter du code conçu pour un PC x86 sur un PC x86 - cela permet entre autres d’exécuter un système d’exploitation par-dessus un autre.

La différence entre l'émulation et la virtualisation est que, avec l'émulation, l'environnement d'exploitation complet est simulé dans un logiciel, tandis qu'avec la virtualisation, une partie du travail à effectuer est transmise directement au processeur hôte. La plupart des processeurs x86 modernes ont du matériel pour accélérer cette fonction. Cela rend la virtualisation très rapide par rapport aux émulateurs qui doivent agir en réponse à chaque opération effectuée par le logiciel invité.

Un émulateur PC populaire est Bochs. Comme il émule le matériel x86 de manière assez précise (au détriment de la vitesse), il peut être très utile pour le débogage au niveau du système d'exploitation.


3
2018-06-02 02:00



Merci! Donc, par "plate-forme", vous voulez dire l'architecture du processeur? - Tim
Je veux parler de l'architecture du processeur et de tout autre matériel spécialisé dont le programme pourrait avoir besoin - avec les PC x86, vous pouvez utiliser du matériel très générique, car les programmes sont généralement conçus pour tirer parti des API de niveau supérieur. , en essayant d’exécuter du code écrit pour une plate-forme ARM sur une autre - vous ne pouvez pas virtualiser votre Nintendo DS sur votre téléphone portable même lorsque l’architecture du processeur est pratiquement identique, car vous devez émuler tout le matériel graphique. - user55325
J'ai également échappé à la différence entre une "machine virtuelle" (il y a des machines virtuelles génériques comme JVM ou l'environnement d'exécution .NET qui sont en quelque sorte des émulateurs, mais elles effectuent beaucoup de compilation juste-à-temps en code natif en interne) ). - user55325