Tous les comparatifs
- la virtualisation
- logiciel de virtualisation
- virtualisation pc
- virtualisation intel
- logiciel cpu
- pacifica amd
- processeur pour virtualisation
- type de virtualisation
- les défis de la virtualisation
- les différents types de virtualisation
- processeur intel x86
- logiciel t cpu
- memoire virtualisation
- c est quoi la virtualisation
- executer un logiciel
La faute de l’ISA x86
Un processeur n’est capable d’exécuter qu’un nombre réduit d’instructions élémentaires. Cet ensemble, appelé ISA (Instruction Set Architecture), est stocké en mémoire et n’est pas modifiable. Il définit les capacités d’un processeur, dont l’architecture matérielle est ensuite optimisée pour exécuter les instructions de l’ISA le plus efficacement possible. Plusieurs ISA existent. Le plus connu dans le monde PC est le x86, utilisé depuis l’origine par les processeurs Intel et repris par les puces d’AMD. On peut aussi citer le PowerPC, l’Alpha AXP, le SPARC, ou encore les récents AMD64 ou EM64T.
Très répandu, voire même omniprésent, le x86 n’est pour autant pas exempt de défauts. D’un point de vue de la virtualisation il fait pour ainsi dire partie des moins bons ISA. Mais comme il est hors de question de le remplacer, il fallait trouver des solutions de contournement. C’est ce qu’ont développé Intel et AMD avec respectivement VT et Pacifica, ou AMD-V.
Si le x86 se prête mal à la virtualisation c’est à cause de 17 instructions critiques, mais non privilégiées. Si vous n’avez rien compris à la phrase précédente lisez ce qui suit :
Toutes les instructions de l’ISA x86 ne sont pas sur un pied d’égalité. Parmi elles, certaines peuvent modifier la configuration des ressources du processeur ; elles sont dites critiques. Pour protéger la stabilité de la machine, ces instructions ne peuvent pas être exécutées par tous les logiciels. Du point de vue du CPU, les logiciels appartiennent à 4 catégories, ou niveaux d’abstraction : les anneaux 0, 1, 2, 3. Chaque anneau définit un niveau de privilège décroissant. Les instructions les plus critiques réclament les privilèges les plus élevés, d’ordre 0. Malheureusement, sur un processeur x86, 17 de ces instructions critiques peuvent être exécutées même par des logiciels de rang 1, 2, ou 3.
Cela constitue un gros problème pour les logiciels de virtualisation. Un système d’exploitation est en effet prévu pour fonctionner en anneau 0 et utiliser des instructions critiques afin de répartir les ressources du processeur entre les différentes applications. Mais lorsqu’il est en situation d’invité, sur une machine virtuelle, le même OS ne doit pas pouvoir modifier les ressources matérielles, sous peine de faire planter tout le système. Seul l’hyperviseur doit avoir ces droits. Il faut donc que toutes les instructions critiques soient interceptées.

C’est très facile pour toutes les instructions privilégiées. L’OS est alors exécuté en ring 3, comme les applications, et toutes les requêtes d’instructions privilégiées déclenchent une erreur qui est traitée par le VMM. C’est beaucoup plus compliqué pour les 17 instructions dangereuses et non privilégiées. Celles-ci ne déclenchant pas d’erreur automatique, elles doivent être détectées au coup par coup par le VMM, puis réinterprétées. Il en résulte une surcharge en calcul importante, et une grande complexité du logiciel hyperviseur.
Les autres coupables
Au-delà des défauts du x86, la virtualisation du matériel pose d’autres soucis. Par exemple, l’OS invité suppose qu’il a accès à la totalité de la mémoire de la machine. Or ce n’est pas le cas puisqu’il la partage avec les autres OS et le VMM. Ce dernier doit donc surveiller et intercepter les tentatives d’accès de l’OS invité à des adresses mémoires non disponibles, et les détourner. Autre exemple, le fait que l’OS invité fonctionne au même niveau (anneau 3) que les applications invitées met en danger sa stabilité. Enfin, l’OS invité ne doit jamais découvrir qu’il tourne en réalité en anneau 3, sous peine de plantage. Le VMM doit donc là encore intercepter les instructions susceptibles de révéler l’état des privilèges de l’invité.
Dernier souci, la gestion des périphériques : générant des accès en mémoire et des interruptions, les périphériques doivent être gérés par le VMM qui doit ensuite les émuler pour chaque OS invité. Une source supplémentaire de ralentissement, et surtout une perte énorme en termes de fonctionnalités.
- Les enjeux du parallélisme [Les news : vos réactions]
- Intel, les CPU et la virtualisation [Les news : vos réactions]
- Conseils avant achats, PC multimédia [Matériel]
- pentium D 940 ou Conroe ? [Matériel]
- Pilotes WHQL de NVIDIA pour Windows 7 [Les news : vos réactions]
Posez votre question sur ce sujet à la communauté !
Sujets relatifs sur le forum
- [Topic Unique] La Config Ultime
- Les Pentium reviennent
- Symantec en rajoute sur les failles de Vista
- Un programme malveillant indécelable
- Red Hat aussi parle virtualisation
- AMD choisit le Quad Core
- Virtual PC bientôt sur MacIntel
- Microsoft Virtual Server 2005 va gérer Linux
- Le Cell se dévoile petit à petit

Manque Qemu...!
je savais pas que popek était un informaticien renommé ^^

Manque aussi VirtualBox !
Existe-t-il un comparatif des performances obtenus avec ces logiciels de virtualisation ?
Virtual PC est réputé lent, Qemu aussi. Mais et les autres ?
qemu avec l'accelerator est loin d'être lent. ça représente presque du 1:1 si l'arch hote est la même que "l'émulée".
Intéressant !
Mais quand même, Denis, on avait pas besoin du screen d'une convers' Messenger truquée pour savoir que David avait des soucis avec la grammaire...
Manque aussi linux-vserver, qui représente un autre type de virtualisation par isolation de contexte, très pratique parce que très léger (et bien maintenu et stable maintenant). On partage les ressources du noyau mais les processus tournent dans un contexte isolé (et étanche : l'invité ne peut pas ouvrir une porte sur l'hôte). A essayer sur debian ou gentoo (de préférence).
manque aussi linux 2.6.20 avec KVM
Existe-t-il un comparatif des performances obtenus avec ces logiciels de virtualisation ?
Virtual PC est réputé lent, Qemu aussi. Mais et les autres ?
kqemu n'est pas lent... la paravirtualistion est rapide en générale...
avec KVM on s'approche de la vitesse d'un systeme natif...
Existe-t-il un comparatif des performances obtenus avec ces logiciels de virtualisation ?
Virtual PC est réputé lent, Qemu aussi. Mais et les autres ?
En voici une liste http://en.wikipedia.org/wiki/Compa [...] l_machines
Intéressant !
![[:rire2]](http://img.infos-du-net.com/forum/images/perso/rire2.gif)
Mais quand même, Denis, on avait pas besoin du screen d'une convers' Messenger truquée pour savoir que David avait des soucis avec la grammaire...
les logiciels de virtualisation ne trompent rien du tout votre definition est fausse ^^
mais y a t il des solutions qui ne gèrent pas le snapshot ? c'est quand même plus simple 
Le plus simple c'est de faire une analogie:
Un simulateur de vol créer un monde virtuel dans lequel on pilote un avion
le logiciel de virtualisation créé un environement materiel virtuel dans lequel on va implanter un système d'exploitation, c'est un simulateur de pc quoi!
sauvegarder le fichier mwai mwai mwai
Qu'il manque tel ou tel émulateur celà ne semble pas très important, l'article ne voulant seulement expliquer le principe.
Aujourd'hui le virtualisation se limite à héberger un OS traditionnel "monolithique" dans un autre à son insu.
Mais on peut aussi imaginer le morcellement futur des OS actuels.
Les couches différentes de l'OS pourront tourner chacunes dans une machine virtuelle distincte.
On obtient un gain de stabilité, car si une brique plante, il suffit de la redémarrer et les autres parties fonctionnent toujours... Ou si de la mémoire est perdue il suffit donc de redémarrer cette partie sans toucher aux autres...
L'avantage sera surtout pour les concepteurs de l'OS : au lieu de sortir des nouvelles versions complètes, on pourra mettre à jour seulement une des briques. Le développement s'en trouvera grandement simplifié...
Merci pour le lien vers wikipedia, excellent.
Merci pour les commentaires sur Qemu, je n'avais des retours que dans le cadre d'une émulation de processeur, d'où la lenteur constatée.
Merci pour le lien vers wikipedia, excellent.
Merci pour les commentaires sur Qemu, je n'avais des retours que dans le cadre d'une émulation de processeur, d'où la lenteur constatée.
De rien.
Tout d'abord merci à tous pour vos commentaires.
A ceux qui regrettent quelques oublis, je précise que ce dossier n'avait pas l'intention d'être exhaustif. il s'agit plus d'une présentation de la technologie destinée aux non-spécialistes
Qu'il manque tel ou tel émulateur celà ne semble pas très important, l'article ne voulant seulement expliquer le principe.
Aujourd'hui le virtualisation se limite à héberger un OS traditionnel "monolithique" dans un autre à son insu.
Mais on peut aussi imaginer le morcellement futur des OS actuels.
Les couches différentes de l'OS pourront tourner chacunes dans une machine virtuelle distincte.
On obtient un gain de stabilité, car si une brique plante, il suffit de la redémarrer et les autres parties fonctionnent toujours... Ou si de la mémoire est perdue il suffit donc de redémarrer cette partie sans toucher aux autres...
L'avantage sera surtout pour les concepteurs de l'OS : au lieu de sortir des nouvelles versions complètes, on pourra mettre à jour seulement une des briques. Le développement s'en trouvera grandement simplifié...
je donne 5 ans et pas plus au développeur pour mettre en place ce genre de système partout, sinon je pourrais considérer la virtualistion comme morte. De plus, le coup 'redémarrer la brique sans rien faire planter' je demande à voir
Virtual PC 2007 est sorti depuis mi-février.
http://www.microsoft.com/downloads [...] c0b40a73b6
Matthieu, j'ai beaucoup apprécié ton article, je lui trouvé très clair et objectif. Pourtant, il contienne un petit erreur :
"Le VMM peut soit être installé comme une application d’un système d’exploitation hôte (type 1), soit comme une couche logicielle plus profonde que le système d’exploitation (type 2)."
En effet, c'est le contraire - le Type 1 est exécuté directement sous la couche matérielle, jouant aussi le rôle de système d'exploitation, pendant que le Type 2 est installé tel q'une application sous le système d'exploitation (voir http://www.cs.nps.navy.mil/people/ [...] 0-0611.pdf comme source)