Virtualisation et Emulation à quoi ça sert ?
1 – Introduction
Rassurez-vous cet article n’a pas pour but de vous abrutir de termes techniques, il y a déjà tout ce qu’il faut sur Internet pour vous remplir le cerveau ou vous endormir pendant les longues soirées d’hiver, nous irons donc droit au but en expliquant les bases des deux techniques, avantages et inconvénients, et utilité.
2 – L’émulation
Commençons par l’émulation qui permet de simuler le fonctionnement de n’importe quel ordinateur (processeur et matériel) sur un autre ordinateur même si celui-ci est technologiquement différent.
On peut ainsi émuler des consoles de jeux, des bornes d’arcade de jeux de café, tout un tas d’ordinateurs plus ou moins récents et même dans une certaine mesure des flippers. L’inconvénient de cette technique est qu’elle demande beaucoup de puissance processeur car chaque instruction du processeur émulé et de ses composants doivent être traduits en temps réel pour donner le même résultat visuel ou sonore sur l’ordinateur final. Cette technique étant souvent réservée à émuler le fonctionnement de machines plutôt anciennes, les ordinateurs d’aujourd’hui sont tout à fait capable de reproduire la puissance de traitement d’origine.
Pour ceux qui ont utilisé les ordinateurs dans les années 90 du temps des Macintosh équipés de processeurs PowerPC sous MacOS 7 ou 8, on pouvait émuler un ordinateur PC sous Windows de façon relativement rapide car à l’époque les PC ne possédaient pas de carte son ou graphique très compliquées il suffisait donc se concentrer sur l’émulation du processeur Intel.
Paradoxalement, il faut un processeur à 1.5GHz pour émuler pleinement le fonctionnement d’un vieil Amiga 500 basé sur un Motorola 68000 à seulement 7.14Mhz (on parle bien de quelques MégaHertz comparés aux GigaHertz des processeurs actuels) car celui-ci était épaulé de plusieurs co-processeurs spécialement conçus pour le son et l’animation vidéo permettant de produire des jeux plus rapides, plus complexes et plus fluides que le processeur n’aurait pu le faire.
Il y a aussi eu des émulateurs moitié logiciel, moitié matériel sous forme de cartes d’extension permettant d’y mettre certains composants de la machine d’origine rendant l’émulation plus efficace.
Il y a eu aussi des cartes d’extension intégrant un ordinateur complet comme la carte d’extension PC que l’on pouvait mettre à l’intérieur des Amiga 2000, mais là on ne parle plus vraiment d’émulation puisqu’il s’agissait d’un vrai PC qui ne faisait que partager les interfaces clavier, souris, lecteur de disquette avec son hôte.
Au niveau applicatif il existe des outils permettant de convertir du code binaire d’un processeur/OS vers un autre ce qui a l’avantage de rendre l’application plus plus rapide. pour expliquer cela par une métaphore, disons qu’elle aura été traduite directement dans une autre langue, du coup plus besoin d’interprète qui faisait perdre du temps à la conversation.
3 – L’émulation des bornes d’arcades … un monde à part
Là où l’émulation fait très fort c’est sur les bornes d’arcade des jeux de café !
Quel plaisir/nostalgie de pouvoir rejouer au pacman d’origine avec exactement le même son, même affichage, même comportement et mêmes bugs qui permettaient de tricher 😉
Ces jeux sont pour la plupart toujours protégés par copyright et donc leur émulation reste en grande partie illégale si vous ne possédez pas les jeux originaux même si ceux-ci ont plus de 20 ans !
Le concept des émulateurs dédiés aux bornes d’arcade (dont le projet M.A.M.E est le plus abouti), est assez simple, d’un côté on fait des bouts de programmes qui émulent chaque processeur, puce sonore et graphique qui équipaient ces bornes d’arcades, d’un autre côté on copie le programmes de chaque jeux dans des fichiers, puis on fait un bout de programme qui relie le tout pour récréer virtuellement telle ou telle borne d’arcade et voilà (ça semble simple sur papier mais cela reste tout de même une prouesse technique).
4 – La virtualisation
La virtualisation est une technique un peu différente car ici on ne va pas simuler le fonctionnement d’ordinateurs basés sur des processeurs différents, mais on va essayer de diviser un ordinateur en plusieurs “sous-ordinateurs” pouvant démarrer sur des systèmes d’exploitation différents. L’ordinateur hôte (le vrai) va donc faire tourner des ordinateurs invités (virtuels) en partageant son processeur, sa mémoire et ses périphériques.
Au final on pourra par exemple lancer une machine virtuelle sous Linux alors que la vrai machine tourne sous Windows XP, ou faire tourner un PC virtuel sous Windows Vista sur un MacBook Pro sous MacOS dont le processeur et et le matériel sont identiques à ceux d’un PC standard.
Les ordinateurs virtuels seront du coup plus rapides à exécuter que leurs homologues émulés car on échappe en grande partie aux lourdes tâches d’émulation du processeur. L’ordinateur virtuel pourra aussi utiliser presque directement la majorité des périphériques de son hôte (disque dur, son, vidéo, réseau, webcam, USB..) au travers de d’un système de passerelles entre l’hôte et l’invité.
Certains processeurs possèdent des fonctions supplémentaires dédiées à faciliter la virtualisation et il est certain que ces fonctions sont appelées à évoluer afin de rompre le lien étroit qui existe actuellement entre un système d’exploitation et le processeur et périphériques dont il dépend.
L’ordinateur virtuel pourra soit utiliser un vrai disque pour y stocker son système d’exploitation et ses programmes, soit un gros fichier dont l’intérieur sera vu comme un vrai disque dur. L’avantage de cette technique de disques virtuels est de pouvoir facilement copier, déplacer, dupliquer un ordinateur virtuel sur une autre machine, créer des captures de contenu pour revenir dessus à un instant T ou revenir en arrière pour annuler toutes les modifications.
Partant de là, un point d’intérêt essentiel apparait : pouvoir lancer un ordinateur virtuel, tester n’importe quel programme “douteux” et pouvoir arrêter l’ordinateur virtuel en annulant toute modification éventuelle faite par ce programme.
L’ordinateur virtuel pourra bien sûr partager ses données et le réseau avec l’ordinateur hôte mais il restera indépendant en terme de fonctionnement…et de dysfonctionnement ! Du coup, si vous lancez un programme qui réussit à planter l’ordinateur sur lequel il tourne, seul l’ordinateur virtuel sera impacté, il suffira alors de l’arrêter et de le relancer sans impacter l’ordinateur hôte.
La virtualisation est aussi un vrai bonheur pour les développeurs qui peuvent ainsi faire fonctionner Windows 2000, XP, Vista, Seven, Linux sur une même machine sans être obligé de posséder plusieurs ordinateurs ou perdre de temps à redémarrer et choisir un système d’exploitation différent, et si leur programme contient des erreurs graves pouvant corrompre le système, ce n’est pas un problème, il suffira d’annuler les modifications apportées au disque dur virtuel.
5 – Les machines virtuelles
Il existe une solution de virtualisation “inverse” qui consiste non pas à simuler telle ou telle machine mais à l’inverse, de proposer une machine qui a la base est totalement virtuelle et qui ne dépend ni du processeur ni du matériel sur lequel elle fonctionne, un programmeur affichant une fenêtre “bonjour” et communiquant sur Internet fera un seul programme sans se soucier que vous l’exécutiez sous Windows ou Linux ou MacOS X. C’est le moteur de la machine virtuelle qui se chargera de faire l’interface et la traduction pour qu’il fonctionne sur la machine réelle.
L’inconvénient de cette méthode est que cela ralenti l’exécution du fait de ce traducteur. Mais d’un autre côté, plus besoin pour le programmeur de développer des versions spécifiques à tel ou tel système d’exploitation ou de compiler leur programme pour tel ou tel processeur, c’est autant de gagné en temps de développement et en support technique.
L’exemple le plus connus de machine virtuelle est JAVA dont le moteur existe sur à peu près n’importe quel type d’ordinateur y compris les téléphones mobiles. Bien sûr, un programme dont l’interface utilisateur aura besoin d’un écran en 1200*800 ne pourra pas fonctionner sur un téléphone mobile avec un écran en 320*240, mais cela reste vrai pour tout programme qui a besoin d’une configuration minimum pour fonctionner.
Si on regarde le principe de fonctionnement d’un navigateur Internet, son moteur d’interprétation HTML peut être considéré comme un système virtuel dont la fonction principale est d’afficher du contenu WEB, d’ailleurs il existe plusieurs systèmes d’exploitations totalement “WEB” qui vous proposent un environnement de travail qui n’est ni Windows, ni Linux mais “WEB”, accessible depuis n’importe quel navigateur.
6 – Je ne suis pas technicien, ça va ma servir à quoi la virtualisation ?
Si vous n’êtes pas technicien, il y a un avantage certain à créer un ordinateur virtuel (en y re-installant votre version de Windows par exemple), cela vous permettra d’avoir un ordinateur virtuel où vous pourrez tester des programmes que vous trouvez sur Internet sans risque de “casser” votre machine réelle, surfer sur des sites douteux en toute sécurité, ou vérifier des astuces et bidouilles censées ne pas perturber le fonctionnement de la machine, tout en pouvant annuler ces modifications à tout instant.
Un autre intérêt est de pouvoir par exemple créer un ordinateur virtuel installé avec un vieux Windows 95 parceque vous avez un ancien programme ou jeux qui ne fonctionne plus sur une version plus récente de Windows.
7 – La virtualisation d’application
Cela consiste à ne pas virtualiser une machine complète mais simplement l’environnement d’une application, cette méthide est souvent utilisée pour rendre une application “portable”, en un seul gros fichier EXE exécutable sur n’importe quelle machine fonctionnant avec le même OS de base comme par exemple Windows. J’ai rédigé un article à ce sujet ici.
8 – Conclusion
Chaque méthode a donc ses avantages et ses inconvénients, chacune répond à des besoins spécifiques. A vous de choisir en fonction du résultat recherché.
Côté virtualisation il existe VirtualPC, VirtualBox et VMWare serveur qui sont gratuits et faciles d’accès, VMWare WorkStation et Parallels WorkStation sont payants, QEmu est gratuit mais plus complexe.
Côté émulation, M.A.M.E est le top des émulateurs de bornes d’arcades allant de pacman aux bornes basées sur des consoles Néo-Géo, plusieurs milliers de jeux sont ainsi émulés pour peu que vous obteniez une copie du programme des jeux qui vous intéressent. Il existe aussi des émulateurs dédiés à un type de console de jeux telles que la SNES de Nintendo, la PSX de Sony ou encore la très ancienne console Vectrex et ses jeux en dessins “fils de fer”.
Comme d’habitude, n’hésitez pas à commenter cet article qui n’est pas figé et peu évoluer en fonction des remarques apportées par les lecteurs.