Machine virtuelle

Machine virtuelle
Page d'aide sur l'homonymie Pour les articles homonymes, voir VM.
machine virtuelle des assistants personnels Palm

En informatique, une machine virtuelle (anglais virtual machine, abr. VM) est une illusion d'un appareil informatique créée par un logiciel d'émulation. Le logiciel d'émulation simule la présence de ressources matérielles et logicielles telles que la mémoire, le processeur, le disque dur, voire le système d'exploitation et les pilotes, permettant d'exécuter des programmes comme si ceux-ci s'exécutaient sur la machine simulée[1].

Les machines virtuelles sont utilisées pour exploiter les logiciels d'une machine qui n'existe plus dans le commerce (ordinateur, console de jeu, assistant personnel, ...), pour cacher la machine simulatrice et simuler une machine fictive, telle que la machine virtuelle Java. Elles sont également utilisées pour exploiter une machine unique comme s'il y en avait plusieurs (virtualisation).

Sommaire

Histoire

le produit VM/370, créé par IBM dans les années 1970, permettait à plusieurs usagers d'utiliser en temps partagé un ordinateur qui exécute le système d'exploitation IBM DOS. IBM DOS tout seul n'offrait pas la possibilité d'utilisation en temps partagé[2].

VM/370 a été l'un des premiers systèmes de virtualisation en informatique, et le premier à être diffusé à l'échelle industrielle. Il fonctionnait sur les ordinateurs IBM 370, bien qu'une version destinée aux universités ait fonctionné sur le modèle 67 sous le nom de Control program (CP).

En 1989, les logiciels Desqview, Omniview, VM/386 et Windows/386 permettent de simuler des machines virtuelles qui exécutent le système d'exploitation MS-DOS. Les logiciels Desqview et Windows/386 offrent en plus une interface graphique permettant de voir sur un même écran les différentes machines virtuelles en fonctionnement[3].

La machine virtuelle Java a été créée en 1995 par Sun Microsystems. Elle était destinée à exécuter des logiciels téléchargés depuis un serveur Web, ceci quelles que soient les caractéristiques techniques de l'appareil qui télécharge et exécute le logiciel. Le produit est accompagné du langage de programmation Java, inspiré de C++, et promis à devenir un standard de facto[4].

Windows NT et ses successeurs incorporent une machine virtuelle pour simuler une machine qui exécute MS-DOS; Windows Server 2008 propose un hyperviseur intégré. Linux possède lui aussi un environnement de virtualisation Open Source nommé Xen.

Créé en 1999, VMware est un logiciel qui permet d'exécuter simultanément plusieurs systèmes d'exploitation sur une même machine. (voir plus loin: virtualisation)[5] Une version simplifiée de ce produit de la société VMware a été rendue gratuite par cet éditeur en 2006

Utilisations

Émulation

Article détaillé : émulateur.

L'émulation est le fait de mettre en œuvre les fonctionnalités d'un appareil en utilisant un autre appareil offrant des fonctionnalités différentes. Une des utilisations consiste à mettre en œuvre le jeu d'instructions d'un processeur en utilisant un autre processeur. Ceci permet par exemple d'utiliser un ordinateur récent pour exécuter des programmes destinés à un ordinateur ou une console de jeu qui n'existent plus dans le commerce. La simulation s'accompagne d'une baisse significative de la puissance de calcul: la puissance du processeur simulé sera une fraction de celle du processeur simulateur[6],[7].

Multitâches

Article détaillé : multitâches.

Les machines virtuelles sont utilisées depuis les années 1970 pour mettre en œuvre du multitâches: permettre à l'ordinateur de réaliser plusieurs opérations simultanément au service de plusieurs utilisateurs. Une machine virtuelle est affectée à chaque utilisateur, lui donnant l'illusion qu'il est le seul à utiliser l'ordinateur. Cette fonctionnalité est maintenant incluse dans tous les systèmes d'exploitation[8].

Machine virtuelle de haut niveau

Dans la technique de la machine virtuelle de haut niveau, le code source des programmes est traduit par un compilateur en un code objet intermédiaire, qui sera traduit plus tard en un code machine utilisant le jeu d'instructions spécifique du processeur qui va exécuter le programme. Le code intermédiaire - bytecode - utilise un jeu d'instruction d'une machine fictive, qui n'existe pas dans le commerce. Les programmes sont distribués sur le marché sous forme de bytecode et peuvent être exécutés par tout appareil informatique qui possède le logiciel nécessaire pour simuler cette machine.

Le jeu d'instructions du bytecode est conçu pour faire abstraction du jeu d'instruction final qui sera utilisé pour exécuter le programme. Cette technique a été utilisée la première fois pour le langage de programmation Pascal en 1980[9].

La CLI exploitée par Microsoft .NET et la machine virtuelle Java de Sun Microsystems sont des machines virtuelles de haut niveau.

Machine virtuelle Java

Article détaillé : Java (technique).

La spécification technique de la machine virtuelle Java, définie par la société Sun Microsystems, mentionne le jeu d'instructions du processeur, le format des fichier exécutables et l'interface de programmation de la bibliothèque standard. La machine virtuelle Java est simulée par un logiciel tel que le Java Runtime Environment. Le slogan de cette technologie est write once, run anywhere (traduction: écrire une fois, utiliser n'importe où): que le logiciel écrit une seule fois peut être utilisé sur une large palette de machines (qui va du téléphone portable jusqu'au superordinateur)[10].

Virtualisation

Article détaillé : virtualisation.

Au sens large, la virtualisation consiste à simuler l'existence de plusieurs machines informatiques en en utilisant une seule. Ceci permet en particulier de diminuer les coûts d'achat de matériel informatique et de rentabiliser leur utilisation: Les technologies de 2008 sont si puissantes qu'en condition ordinaire un serveur n'utilise que 10% des capacités du matériel. La virtualisation permet également de gagner du temps: une courte procédure de modification de la configuration de l'émulateur remplace une longue procédure d'acquisition de matériel informatique[11].

KVM, QEMU, VMware, VirtualBox, VirtualPC, Xen et Bochs sont quelques logiciels de virtualisation.

Serveur dédié virtuel

Article détaillé : serveur dédié virtuel.

Un serveur dédié virtuel (anglais: virtual private server abr. VPS) est une machine virtuelle qui simule un serveur informatique dédié à un consommateur en particulier. La machine utilisée pour la simulation sert, à leur insu, plusieurs consommateurs simultanément. Chaque serveur dédié virtuel a son propre espace disque et son propre système d'exploitation, qui peut être installé et redémarré par le consommateur[12].

Machine virtuelle parallèle

Une machine virtuelle parallèle crée l'illusion d'un seul ordinateur alors que les ressources de plusieurs ordinateurs sont utilisées.

PVM est un logiciel de machine virtuelle parallèle.

Programmation

Une machine virtuelle est un environnement confiné et contrôlé, abrité contre l'utilisation abusive des ressources matérielles. Ceci en fait un environnement de choix pour l'exécution de programmes qui ne sont pas dignes de confiance, tels que des logiciels en cours de mise au point, et tout particulièrement des systèmes d'exploitation. De plus l'utilisation pour la programmation de systèmes d'exploitation résout un problème circulaire: Les logiciels qui servent au développement et à la mise au point du système d'exploitation ont besoin d'un système d'exploitation[13].

Techniques

La compilation juste-à-temps (anglais just-in-time - JIT) est une technique utilisée pour simuler un processeur. Le code machine prévu pour le processeur à simuler est traduit en vue de devenir du code machine pour le processeur qui simule. L'opération de traduction est réalisée par un logiciel semblable à un compilateur immédiatement avant que le code traduit soit exécuté.

L'hyperviseur est le logiciel qui contrôle l'utilisation, par les différentes machines virtuelles, du matériel de l'appareil simulateur. Un hyperviseur de Type 2 utilise le système d'exploitation de l'ordinateur simulateur, tandis qu'un hyperviseur de Type 1 n'a pas besoin de ce système d'exploitation sur l'appareil simulateur[14].

Une des fonctionnalités courantes des logiciels hyperviseurs ainsi que des systèmes d'exploitation est de simuler la présence de mémoire centrale par de la mémoire virtuelle. Le mécanisme permet également de simuler la présence de 4 Go de mémoire dans une machine réellement équipée de 1 Go, l´overbooking est mis en œuvre en copiant le contenu inutilisé de la mémoire vers le disque dur[15].

Machine virtuelle de haut niveau

Le logiciel ou interpréteur qui met en œuvre une machine virtuelle de haut niveau isole l'application utilisée par l'utilisateur des spécificités de l'ordinateur, c’est-à-dire de celles de son architecture ou de son système d'exploitation. Cette indirection permet au concepteur d'une application de la rendre disponible sur un grand nombre d'ordinateurs sans les contraintes habituelles à la rédaction d'un logiciel portable tournant directement sur l'ordinateur. La compilation juste-à-temps permet dans bien des cas à l'application d'avoir des performances comparables à une application native.

Windows XP et similaires tournent également dans un environnement virtualisé, qui est créé par la couche HAL. En cas de changement de machine physique, on peut en principe ne changer que le HAL sans toucher au reste de son installation Windows.

.NET vs. Java et Java EE

La CLI et C# ont plusieurs similarités avec la JVM de Sun et Java. Les deux sont basés sur une machine virtuelle qui cache les détails matériels de l'ordinateur sur lequel leurs programmes s'exécutent. Les deux utilisent leur propre langage intermédiaire bytecode Common Intermediate Language (CIL, anciennement MSIL) pour Microsoft et Java byte-code pour Sun. Avec .NET, le byte-code est toujours compilé avant l'exécution, soit juste-à-temps (JIT), ou en avance en utilisant l'utilitaire ngen.exe. Avec Java, le byte-code est soit interprété, soit compilé en avance ou encore compilé juste-à-temps. Les deux fournissent des bibliothèques de classes extensibles qui résolvent plein de problèmes de programmation courants, et les deux résolvent beaucoup de problèmes de sécurités par la même approche. Les espaces de noms fournis par le .NET Framework ressemblent beaucoup au package de l'API Java EE aussi bien dans le style que dans l'invocation.

.NET dans sa forme complète (à savoir l'implémentation Microsoft) est actuellement disponible entièrement pour Windows et partiellement pour Linux et Mac, alors que Java est entièrement disponible sur presque toutes les plates-formes. Depuis le début, .NET supporte plusieurs langages et demeure indépendant de la plateforme de telle sorte que n'importe qui peut le réimplémenter sur d'autres plates-formes (l'implémentation Microsoft cible uniquement Windows, Windows CE et la Xbox360). La plate-forme Java a été initialement construite pour supporter uniquement le langage Java, mais sur plusieurs systèmes d'exploitations avec le slogan « Write once, run anywhere » (écrit une fois, tourne n'importe où). D'autres langages ont été développés pour la machine virtuelle java, mais ils ne sont pas très utilisés. L'implémentation Java de Sun est open source (ce qui inclut la bibliothèque de classes, le compilateur, la JVM ainsi que quelques autres outils associés à la plate-forme Java) sous la licence GNU GPL.

RIA-RDA

De plus en plus de technologies se rejoignent actuellement pour fonctionner côté web et OS. Elles se différencient plus par les outils de production, maintenance que par les technologies utilisées qui se résument en l'utilisation d'un langage de compilation et d'exécution (machine virtuelle) / interprétation et un formalisme xml (xaml, xmm, xul). Ces technologies se retrouvent selon les cas sur des ordinateurs, des téléphones, des pdaphones ou des périphériques multimédia (récepteurs satellite).

Les RIA sont basées sur une machine virtuelle fonctionnant dans un navigateur web. Les RDA sont basées sur une machine virtuelle fonctionnant sur le système d'exploitation. Les RIA et RDA en évoluant sont de plus en plus multi-langage (C#, javascript, java, C#), multi-interface (swing, wpf, flash, AJAX-ui-widgets), multi OS (Mac, Window, unix), multi-matériel (PC, pda, téléphone).

Technologie web et applicatif
Société Technologie Système d'exploitation Langage de programmation Application technologie Web format
Microsoft CLI Microsoft Microsoft .NET C#puis CLR/DLR MFC/ GDI ClickOnce Silverlight XAML .cs→.dll
Novell CLI Microsoft unix/SuSE C#puis CLR/DLR Mono  ? Moonlight
Adobe Flash player Animation flash Actionscript AIR  ? Adobe Flex .as →.swf
Sun Microsystems Java Applet Java java JFC awt-swing Java Web Start JavaFX .java→.class
Netscape navigator unix javascript Gears(google) AJAX XUL SMIL SVG

Exemples

Voir aussi

Notes et références

  1. (en)Karen Hazzah,Writing Windows VxDs and device drivers,Focal Press - 1996,(ISBN 9780879304386)
  2. (en)Computerworld,Vol. 9 - N° 33,août 1975,(ISSN 0010-4841)
  3. (en)InfoWorld,Vol. 11 - N° 7,févr. 1989,(ISSN 0199-6649)
  4. (en)Network World,Vol. 12 - N° 50, décembre 1995, (ISSN 0887-7661)
  5. (en)InfoWorld,Vol. 21 - N° 16,avr. 1999,(ISSN 0199-6649)
  6. (en)Harry Henderson,Encyclopedia of computer science and technology,Infobase Publishing - 2009,(ISBN 9780816063826)
  7. (en)James Edward Smith et Ravi Nair,Titre Virtual machines: versatile platforms for systems and processes,Elsevier - 2005,(ISBN 9781558609105)
  8. (en)F. J. M. Laver,An introduction to the uses of computers,CUP Archive - 1976,(ISBN 9780521290357)
  9. (en)James Edward Smith et Ravi Nair,Virtual machines: versatile platforms for systems and processes,Elsevier - 2005,(ISBN 9781558609105)
  10. (en)Joshua Engel,Programming for the Java virtual machine,Addison-Wesley Professional - 1999,(ISBN 9780201309720)
  11. (en)Ivanka Menken et Gerard Blokdijk,Virtualization: The Complete Cornerstone Guide to Virtualization Best Practices,Lulu.com - 2008,(ISBN 9781921523915)
  12. (en)Judith Hurwitz - Robin Bloor - Marcia Kaufman et Fern Halper,Cloud Computing For Dummies,For Dummies - 2009,(ISBN 9780470484708)
  13. (en)Michael J. Jipping,Smartphone operating system concepts with Symbian OS: a tutorial guide,John Wiley and Sons - 2007,(ISBN 9780470034491)
  14. (en)Maximum PC,déc. 2008,(ISSN 1522-4279)
  15. (en)Michael A. Davis - Sean Bodmer et Aaron LeMasters,Hacking exposed malware & rootkits: malware & rootkits security secrets & solutions,McGraw Hill Professional, 2009,(ISBN 9780071591188)

Liens externes


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Machine virtuelle de Wikipédia en français (auteurs)

Игры ⚽ Поможем сделать НИР

Regardez d'autres dictionnaires:

  • Machine Virtuelle — Pour les articles homonymes, voir VM. VirtualBox Le sens originel de machine virtuelle (ou Virtual Machine (VM) en anglais) e …   Wikipédia en Français

  • Machine virtuelle (informatique) — Machine virtuelle Pour les articles homonymes, voir VM. VirtualBox Le sens originel de machine virtuelle (ou Virtual Machine (VM) en anglais) e …   Wikipédia en Français

  • Machine Virtuelle Java — La Java virtual machine (abrégé JVM, en français machine virtuelle Java) est une machine virtuelle permettant d’interpréter et d’exécuter le bytecode Java. Architecture générale : illustration du slogan Compile once, run everywhere Ce… …   Wikipédia en Français

  • Machine virtuelle java — La Java virtual machine (abrégé JVM, en français machine virtuelle Java) est une machine virtuelle permettant d’interpréter et d’exécuter le bytecode Java. Architecture générale : illustration du slogan Compile once, run everywhere Ce… …   Wikipédia en Français

  • Machine virtuelle Java — La machine virtuelle Java (anglais Java virtual machine abr. JVM) est un appareil informatique fictif qui exécute des programmes compilés sous forme de bytecode Java. Architecture générale : illustration du slogan Compile once, run… …   Wikipédia en Français

  • Machine virtuelle Dalvik — Dalvik est la machine virtuelle utilisée dans les appareils mobiles Android. Elle permet d exécuter les applications qui peuvent être écrites en java et converties en un exécutable compact Dalvik (.dex), format adapté aux systèmes limités en… …   Wikipédia en Français

  • Machine virtuelle parallèle — Parallel Virtual Machine Parallel Virtual Machine (PVM) est une bibliothèque de communication (langages C et Fortran) pour machines parallèles et réseau d ordinateurs (locaux ou distants, éventuellement hétérogènes). Il permet à un réseau d… …   Wikipédia en Français

  • machine virtuelle — ● loc. f. ►EXEC Machine abstraite simulée au sein d une autre machine bien réelle celle là, et utilisée comme environnement d exécution d un langage portable de haut niveau, e.g. JVM. virtual machine en anglais …   Dictionnaire d'informatique francophone

  • Machine Virtuelle DOS — Machine DOS virtuelle Virtual DOS machine (Machine DOS virtuelle) (VDM) est le nom des technologies de Microsoft permettant d exécuter des programmes MS DOS sur les ordinateurs équipés de processeurs Intel 80386 ou plus récents quand il y a un… …   Wikipédia en Français

  • Machine Virtuelle dos — Machine DOS virtuelle Virtual DOS machine (Machine DOS virtuelle) (VDM) est le nom des technologies de Microsoft permettant d exécuter des programmes MS DOS sur les ordinateurs équipés de processeurs Intel 80386 ou plus récents quand il y a un… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”