Vous êtes sur la page 1sur 22

Faculté des Sciences

Département d’Informatique

La Virtualisation

François Santy

Projet de Recherche et Communication Scientifique


Année académique 2009 - 2010
Table des matières
1 Introduction 1
2 Définition 2
3 Les domaines de la virtualisation 2
3.1 La virtualisation d’applications . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3.2 La virtualisation de réseaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.3 La virtualisation de stockage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.4 La virtualisation de serveurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4 Les avantages de la virtualisation 5
5 Les inconvénients de la virtualisation 7
6 Les principes de la virtualisation 8
6.1 Vocabulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
6.2 Prérequis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
6.3 Théorèmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
6.4 Composants d’un hyperviseur . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

7 Les problèmes liés à la virtualisation 11


8 La virtualisation matérielle 13
9 Les différents types de virtualisation 14
9.1 Machine virtuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
9.2 Para-virtualisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
9.3 Virtualisation au niveau du système d’exploitation . . . . . . . . . . . . . . . . 16

10 Conclusion 18
A Les 18 instructions problématiques de x86 20
1 INTRODUCTION

1 Introduction
La virtualisation est un outil qui change radicalement l’approche de l’informatique en
repoussant les limites de nos ordinateurs. Il s’agit d’une technologie à la portée de tous, du
particulier qui souhaite exécuter en toute sécurité une distribution Linux sur sa plate-forme
Windows, aux grandes entreprises qui souhaitent rentabiliser davantage leur infrastructure
informatique.
Dans ce document, nous commencerons par présenter brièvement les différents domaines
de la virtualisation, pour nous concentrer ensuite plus particulièrement sur la virtualisation
des serveurs.
Après avoir présenté l’historique de cette technologie nous explorerons les avantages et
les inconvénients qu’elle présente.
Nous nous attarderons ensuite sur la théorie de Popek et Goldberg, deux chercheurs
américains qui se sont rapidement intéressés à la virtualisation et en ont posé les bases.
Nous nous rendrons compte par la suite que les ordinateurs actuels ne respectent mal-
heureusement pas complètement cette théorie, et que cela pose de nombreux problèmes en
terme d’implémentation des systèmes de virtualisation.
Nous montrerons par après qu’il est possible de résoudre ces problèmes au moyen de
technologies matérielles d’aide à la virtualisation.
Nous terminerons notre analyse par une rapide présentation des grandes classes de
stratégies de virtualisation.

1 / 20
3 LES DOMAINES DE LA VIRTUALISATION

2 Définition
“Virtualization is a term that refers to the abstraction of computer resources.”
“[...] virtualization is a framework or methodology of dividing the resources of
a computer into multiple execution environments, by applying one or more concepts
or technologies such as hardware and software partitioning, time-sharing, partial or
complete machine simulation, emulation, quality of service, and many others.” [14]
“Virtualization is the creation of a virtual (rather than actual) version of some-
thing, such as an operating system, a server, a storage device or network resources.” [1]
Nous voyons que la virtualisation repose sur trois éléments importants :
1. L’abstraction des ressources informatiques ;
2. La répartition des ressources par l’intermédiaire de différents outils, de manière à ce
que celles-ci puissent être utilisées par plusieurs environnements virtuels ;
3. La création d’environnements virtuels.
Ces trois concepts fondamentaux nous amènent à donner la définition suivante de la
virtualisation :
La virtualisation est un processus qui va permettre de masquer les caractéristiques
physiques d’une ressource informatique de manière à simplifier les interactions entre cette
ressource et d’autres systèmes, d’autres applications et les utilisateurs. Elle va permettre
de percevoir une ressource physique comme plusieurs ressources logiques et, inversément,
de percevoir plusieurs ressources physiques comme une seule ressource logique.

3 Les domaines de la virtualisation


3.1 La virtualisation d’applications
La virtualisation d’application est une technologie logicielle qui va permettre d’améliorer
la portabilité et la compatibilité des applications en les isolant du système d’exploitation sur
lequel elles sont exécutées. Elle consiste à encapsuler l’application et son contexte d’exécution
système dans un environnement cloisonné. La virtualisation d’application va nécessiter l’a-
jout d’une couche logicielle supplémentaire entre un programme donné et le système d’-
exploitation ; son but est d’intercepter toutes les opérations d’accès ou de modification de
fichiers ou de la base de registre1 afin de les rediriger de manière totalement transparente
vers une localisation virtuelle (généralement un fichier). Puisque cette opération est trans-
parente, l’application n’a pas notion de son état virtuel. Le terme virtualisation d’application
est trompeur puisqu’il ne s’agit pas de virtualiser l’application mais plutôt le contexte au
sein duquel elle s’exécute (registres du processeur, système de fichiers,...).

F. 1 – Virtualisation d’applications


1
La base de registre est utilisée par les systèmes Windows qui y renseignent les données de configuration du
système d’exploitation et des autres logiciels installés

2 / 20
3 LES DOMAINES DE LA VIRTUALISATION

La virtualisation d’applications a de nombreux avantages : elle permet d’exécuter des


applications qui ont été développées pour d’autres environnements d’exécution (p. ex. Wine
permet d’exécuter des applications Windows sur une plateforme Linux) ; elle protège le
système d’exploitation hôte en s’assurant que l’application virtualisée ne viendra pas inter-
agir avec les fichiers de configuration du système ; elle évite de faire appel à une machine
virtuelle qui consomme plus de ressources ; elle autorise l’exécution de code incorrect (p. ex.
une application pourrait vouloir écrire un fichier dans un répertoire système dont elle ne
possède que les droits en lecture).

3.2 La virtualisation de réseaux


De manière générale, la virtualisation des réseaux consiste à partager une même infras-
tructure physique (débit des liens, ressources CPU des routeurs,...) au profit de plusieurs
réseaux virtuels isolés. Un VLAN (Virtual Local Area Network) est un réseau local regroupant
un ensemble de machines de façon logique et non physique. Puisqu’un VLAN est une entité
logique, sa création et sa configuration sont réalisées de manière logicielle et non matérielle.
On distingue plusieurs types de réseaux virtuels :
• Les réseaux virtuels de niveau 1, appelés réseaux virtuels par port (port-based VLAN) :
ils définissent un réseau virtuel en fonction des ports de raccordement sur le com-
mutateur (switch). Ainsi, chaque port du commutateur est associé à un réseau virtuel,
indépendamment de la machine qui y est physiquement raccordée. Le principal in-
convénient d’un VLAN de niveau 1 est sa rigidité : si une station se raccorde physique-
ment au réseau par l’intermédiaire d’un autre port du commutateur, alors il est
nécessaire de reconfigurer ce commutateur afin de réintégrer la station dans le bon
réseau virtuel.
• Les réseaux virtuels de niveau 2, appelés réseaux virtuels par adresse MAC (MAC
address-based VLAN) : ils consistent à définir un réseau virtuel sur base des adresses
MAC des stations. Une adresse MAC est un identifiant unique implémenté dans chaque
adaptateur réseau. Ce type de VLAN est beaucoup plus souple que le précédent car il
est indépendant de la localisation de la machine.
• Les réseaux virtuels de niveau 3. On distingue principalement deux types de VLAN
de niveau 3 :
◦ Les réseaux virtuels par adresse de sous-réseau (Network address-based VLAN) : ils
déterminent les réseaus virtuels sur base de l’adresse IP source des segments. Ce type
de réseau virtuel est très flexible puisque les commutateurs adaptent automatique-
ment leur configuration lorsqu’une station est déplacée. En revanche, une légère
dégradation des performances peut se faire resentir puisque les segments doivent
être analysés plus minutieusement.
◦ Les réseaux virtuels par protocole (Protocol-based VLAN). Dans ce cas, les réseaux
virtuels sont créés sur base des protocoles utilisés (TCP/IP, IPX,...) et les stations sont
regroupées en réseaux virtuels suivant le protocole qu’elles utilisent.
Les avantages qu’offrent les réseaux virtuels sont les suivants : une réduction du traffic de
diffusion (broadcast) puisque celui-ci est à présent contenu au sein de chaque réseau virtuel ;
une sécurité accrue puisque l’information est encapsulée dans une couche supplémentaire ;
une meilleure flexibilité puisqu’une modification de la structure des réseaux peut être réalisée
en modifiant la configuration du commutateur.

3.3 La virtualisation de stockage


La virtualisation de stockage est un procédé qui va séparer la représentation logique et la
réalité physique de l’espace de stockage. Son but est de faire abstraction des périphériques
de stockage utilisés et des interfaces qui leur sont associés (SATA, SCSI,...) afin de limiter
l’impact des modifications structurelles de l’architecture de stockage.

3 / 20
3 LES DOMAINES DE LA VIRTUALISATION

F. 2 – Réseaux virtuels

Ce type de virtualisation fait appel à une application d’administration de volumes


logiques (Logical Volume Manager, LVM). Il s’agit d’une couche logicielle qui va permettre de
regrouper plusieurs espaces de stockage, appelés volumes physiques, pour ensuite découper
cet espace global suivant la demande en partitions virtuelles appelées volumes logiques. Ce
processus de virtualisation peut être vu comme une extension du modèle de partitionnement
classique des disques dur.
La virtualisation de stockage permet :
• d’adjoindre un périphérique de stockage supplémentaire sans interruption des ser-
vices ;
• de regrouper des unités de disques durs de différentes vitesses, de différentes tailles et
de différents constructeurs ;
• de réallouer dynamiquement de l’espace de stockage. Ainsi, un serveur nécessitant
un espace de stockage supplémentaire pourra rechercher des ressources non allouées
sur le disque logique. Inversément, un serveur nécessitant moins d’espace de stockage
pourra libérer cet espace et le rendre disponible pour d’autres serveurs.

F. 3 – Virtualisation de stockage

4 / 20
4 LES AVANTAGES DE LA VIRTUALISATION

3.4 La virtualisation de serveurs


La virtualisation des serveurs consiste à masquer les ressources du serveur, c.-à-d. le nom-
bre et les caractéristiques de chaque machine physique, de chaque processeur et de chaque
système d’exploitation pour les utilisateurs de ce serveur. L’administrateur du serveur va
utiliser un logiciel grâce auquel il va diviser un serveur physique (constitué ou non de
plusieurs machines distinctes) en plusieurs environnements virtuels isolés les uns des autres.
Ces environnements isolés sont parfois appelés serveurs privés virtuels, hôtes, instances, con-
taineurs ou émulations.
La virtualisation de serveurs s’inscrit dans une tendance globale qui tend à promou-
voir la virtualisation au sein des entreprises en faisant notamment appel à la virtualisation
de stockage et à la virtualisation de réseaux. Cette tendance est une composante dans le
développement de systèmes autonomes. Un système est dit autonome si il est capable de
s’auto-gérer sur base de l’activité qu’il perçoit, sans aucune intervention externe, et en con-
servant les détails de son implémentation invisibles pour l’utilisateur.
La suite de ce document concerne plus particulièrement la virtualisation des serveurs.

4 Les avantages de la virtualisation


Au cours des dernières années, la virtualisation semble s’être imposée comme un élément
incontournable au sein des entreprises et ce sont principalement les serveurs qui sont au
centre de toutes les attentions. La virtualisation présente les avantages suivants :
1. Une optimisation de l’infrastructure. La virtualisation permet d’optimiser la charge
de travail des serveurs physiques. En effet, il y a quelques années, la relation une ap-
plication ↔ un serveur était encore largement répandue. Cependant, comme le montre
le schéma 4, cette relation introduit un gaspillage important des ressources puisqu’on
estime que la charge moyenne d’un serveur se situe entre 5% et 15% [4]. L’idée est alors

F. 4 – Rendement d’un serveur en F. 5 – Rendement d’un serveur en


l’absence de virtualisation présence de virtualisation

de récupérer ces ressources disponibles afin d’en faire bénéficier d’autres applications.
La virtualisation va apporter une solution efficace : plutôt que de faire tourner une
seule application sur le serveur physique, on va installer sur celui-ci plusieurs serveurs
virtuels exécutant chacun une application bien précise, et c’est le logiciel de virtu-
alisation qui se charge de répartir équitablement les ressources entre les différentes
instances. De cette manière, comme le montre le schéma 5, on optimise le rendement
de chacun des serveurs physiques.
2. Une réduction de l’infrastructure physique et des économies d’énergies. Les centres
de données sont d’importants consommateurs de ressources. VMware affirme qu’un
serveur au repos consomme jusqu’à 30% du pic de consommation électrique et selon

5 / 20
4 LES AVANTAGES DE LA VIRTUALISATION

Intel, 36,4% de l’énergie est utilisée par les composants physiques des serveurs (pro-
cesseurs, mémoire,...) tandis que les 63,6% restants sont consommés par les équipements
de climatisation. Ces chiffres sont interpelants et la virtualisation de l’infrastructure
d’une entreprise doit devenir un de ses projets prioritaires. Puisque plusieurs appli-
cations peuvent à présent cohabiter de manière efficace sur un même système, les
entreprises vont pouvoir réduire le nombre de machines de leur centre de données
en investissant à nouveau dans d’importants mainframes avec lesquels réapparaı̂t le
modèle de centralisation de la puissance de calcul. Par conséquent, les entreprises
font des économies en terme d’espace mais aussi en terme de frais de ventilation et
d’alimentation. La réduction des coûts d’alimentation et de refroidissement s’inscrit

F. 7 – Centre de calcul cen-


F. 6 – Centre de calcul distribué tralisé

également dans une tendance générale à la promotion du respect de l’environnement.


Selon Gartner, une entreprise américaine de conseil et de recherche dans le domaine des
techniques avancées, l’industrie informatique serait responsable de 2% des émissions
mondiales de CO2. La virtualisation aurait permis d’économiser 5 milliards de kWh
d’énergie électrique (source :VMware).
3. Une reprise automatique lors des incidents. La virtualisation permet d’améliorer la
prévention et la gestion des pannes ainsi que le plan de reprise de l’activité du système.
En effet, les équipements virtuels étant constitués d’un ensemble de fichiers, il est très
simple de les sauvegarder. Si un problème survient sur une machine physique, les
fichiers qui ont été sauvegardés auparavant pourront rapidement être restaurés sur une
autre machine physique, en attendant que la machine virtuelle initiale soit redémarrée.
4. Une optimisation de la sécurité des données. Par la centralisation des ressources ap-
plicatives au sein du centre de données, la virtualisation contribue à sécuriser l’accès
et l’usage des données de l’entreprise. Il est en effet beaucoup plus simple de contrôler
l’accès aux données lorsqu’elles sont regroupées en un lieu que lorsqu’elles sont
réparties sur l’ensemble des sites de l’entreprise, comme c’est le cas dans un modèle
d’informatique distribué. Il est néanmoins indispensable de disposer d’un système
de synchronisation qui permettra de sauvegarder l’ensemble des informations sur un
site extérieur. De cette manière, on limite les risques liés à la destruction du centre de
donnée initial.
5. Une facilité de migration. La virtualisation apporte la possiblité de migrer facilement
un environnement virtuel d’une machine physique vers une autre, facilitant ainsi la
mise à jour du centre de donnée ou le remplacement de matériel défectueux.
De nombreux outils d’aide à la migration ont été développés. Ils peuvent être regroupés
en 3 grandes catégories : P2V (Physical to Virtual), V2P (Virtual to Physical) et V2V (Virtual

6 / 20
5 LES INCONVÉNIENTS DE LA VIRTUALISATION

to Virtual). Les outils P2V sont généralement utilisés dans les projets de virtualisation
d’une infrastructure informatique. Ils consistent à convertir les serveurs physiques en
serveurs virtuels. Les outils V2P, qui permettent de convertir des serveurs virtuels
en serveurs physiques, sont peu demandés mais une telle fonctionnalité rassure les
entreprises qui souhaitent utiliser de la virtualisation ; elle leur permet, si elles le
désirent, de faire marche arrière. Enfin, les outils V2V, qui permettent de convertir
des serveurs virtuels d’un format dans un autre, sont principalement utilisés au sein
d’entreprises qui utilisent des gestionnaires de systèmes virtuels différents.
6. Flexibilité et compatibilité. La virtualisation est un outil efficace en terme de flexibilité
et de compatibilité. En effet, elle supprime toute dépendance entre une application
donnée et et l’aspect matériel de la machine sur laquelle elle est exécutée. Il devient alors
possible d’exécuter sur un système une application qui a été développée à destination
d’un autre système.
7. Un cloisonnement. Le développement d’une application s’accompagne nécessairement
de phases de tests au cours desquelles le programmeur s’assure du bon fonctionnement
et de la stabilité de son logiciel. Néanmoins, il est parfois risqué d’exécuter une ap-
plication lorsque l’on n’est pas certain du résultat qui sera produit. Pour réduire les
risques liés à des applications peu fiables, la virtualisation peut être utilisée pour créer
des environnements isolés et sécurisés qui vont servir de plateformes d’essai. Il devient
dès lors possible d’itérer un grand nombre de fois un processus de test sans craindre
de déstabiliser la machine physique sur laquelle s’exécute l’application.

5 Les inconvénients de la virtualisation


1. Un point de défaillance unique. Il s’agit probablement du plus gros désavantage de la
virtualisation. Puisque plusieurs environnements virtuels s’exécutent sur une unique
machine physique, si cette machine tombe en panne, alors les services fournis par les
environnements virtuels sont interrompus.
2. Un recours à des machines puissantes. La virtualisation permet de réaliser des économies
puisque moins de machines physiques sont nécessaires. Néanmoins, les outils de vir-
tualisations sont des applications très gourmandes en ressources et nécessitent des
machines puissantes. Il est évidemment possible d’utiliser la virtualisation sur des
machines plus modestes, mais un manque de mémoire ou de capacité CPU peut faire
chuter les performances de manière dramatique.
3. Une dégradation des performances. Bien qu’elle soit implémentée sur des machines
puissantes, la virtualisation peut réduire les performances des applications. Suivant le
type de virtualisation envisagé, cette perte de performances peut ou non être significa-
tive. Ce problème est d’autant plus embarassant qu’il est difficile d’estimer à l’avance
l’impact qu’aura la virtualisation sur une application donnée. Dans certains cas, la
dégradation des performances est telle qu’il est préférable de conserver l’application
dans un environnement physique.
4. Une complexité accrue de l’analyse d’erreurs. La virtualisation d’un serveur implique
des changements importants dans l’infrastructure du système. La couche de virtuali-
sation vient s’ajouter aux autres et apporte potentiellement avec elle un ensemble de
nouveaux problèmes. La difficulté de cette couche additionnelle réside dans le fait
que, si quelque chose ne fonctionne pas correctement, la localisation du problème peut
demander des efforts considérables.
5. Une impossibilité de virtualisation. Bien que, dans la plupart des cas, il n’est pas
possible de prédire si une application se comportera normalement une fois virtualisée,
il existe des applications qui sont connues pour rencontrer des difficultés lors de
leur virtualisation. Les bases de données sont un exemple de telles applications. En
effet, les bases de données ont recours à de nombreux accès disques et le délai d’accès
supplémentaire introduit par la virtualisation peut dans certain cas rendre l’application
inutilisable.

7 / 20
6 LES PRINCIPES DE LA VIRTUALISATION

6. Un déploiement massif de serveurs. Il ne s’agit pas réellement d’un désavantage de


la virtualisation en tant que tel, mais d’un désavantage de la facilité de mise en place
d’un nouvel environnement virtuel. En effet, certains administrateurs estiment qu’il
est plus sécurisant de déployer un serveur dans un nouvel environnement virtuel, isolé
des autres, plutôt qu’au sein d’un système d’exploitation qui exécute simultanément
d’autres applications. Cependant, l’administration et les coûts d’une telle opération
ajoutent une charge supplémentaire qu’il est difficile d’estimer à l’avance.
7. Un problème de standardisation. La virtualisation est une technologie largement
répandue mais elle ne fait l’objet d’aucun protocole de normalisation. Il n’existe par
conséquent aucun outil standard aux différentes formes de virtualisation.

6 Les principes de la virtualisation


Gerald J. Popek et Robert P. Goldberg sont deux chercheurs en informatique qui, en
1974, ont posé les bases de la virtualisation. Leur article [11], publié dans le Communications
of the ACM (Association for Computing Machinery) de juillet 1974, discute les possibilités de
virtualisation des architecture de troisième génération. A l’heure actuelle, on distingue cinq
générations d’architectures :
1. La première génération, de 1940 à 1956 : les tubes sous vide. Les premiers ordina-
teurs utilisaient des tubes sous vide pour réaliser des calculs numériques et stockaient
les résultats dans de la mémoire primaire matérialisée sous la forme de tambours
magnétiques (magnetic drums). Les opérations d’entrées (inputs) se faisaient à l’aide
de cartes perforées et les opérations de sorties (outputs) étaient réalisés sous forme
d’impressions.
2. La deuxième génération, de 1956 à 1963 : les transistors. Inventés en 1947 par les
Bell Laboratories, ce n’est qu’à partir des années 1950 qu’ils se déploient et viennent
remplacer les tubes sous vide. Les transistors sont devenus un composant clé dans
la fabrication de tout circuit digital et disposent de nombreux avantages par rapport
aux tubes sous vide : ils sont plus petit, consomment moins d’énergie et sont moins
sujets aux pannes. Les opérations d’entrées/sorties sont similaires aux ordinateurs de
première génération.
3. La troisième génération, de 1964 à 1971 : les circuits intégrés. Le développement des
circuits intégrés s’est imposé comme la raison d’être des architectures de troisième
génération. Les transistors sont miniaturisés et placés sur des puces en silicium, appelé
semiconducteur, ce qui a pour effet d’accroı̂tre considérablement la vitesse et l’efficacité
des ordinateurs de l’époque. Les ordinateurs de troisième génération révolutionnent
également les interactions avec l’utilisateur. Les cartes perforées sont remplacées par
un clavier et les moniteurs prennent la place des impressions. De plus, l’utilisation
d’un système d’exploitation permet de gérer l’exécution de plusieurs programmes
simultanément.
4. La quatrième génération, de 1971 à aujourd’hui : les microprocesseurs. Des milliers de
circuits intégrés sont assemblés sur une seule puce en silicium pour donner naissance
à l’unité centrale de traitement (Central Processing Unit, CPU) qui équipe à l’heure
actuelle tous les ordinateurs. Ce qui, dans les années 1960, nécessitait une pièce entière
tient à présent dans la paume de la main. Cette quatrième génération d’ordinateur
a également vu apparaı̂tre les interfaces graphiques et la souris qui ont facilité les
interactions avec l’utilisateur.
5. La cinquième génération : l’intelligence artificielle. Bien qu’elle soit toujours en cours
de développement, certaines applications des ordinateurs de cinquième génération,
comme la reconnaissance vocale, sont déjà largement répandues. Le développement
de cette technologie a pour but de rendre le comportement des ordinateur similaire à
celui des humains.

8 / 20
6 LES PRINCIPES DE LA VIRTUALISATION

6.1 Vocabulaire
Avant de poursuivre notre analyse, il est nécessaire de définir deux termes qui seront
largement utilisés dans la suite de ce document :
• Une machine virtuelle (Virtual Machine, VM) : il s’agit d’une reproduction isolée et
efficace d’une machine physique. [11]
• Un hyperviseur ou contrôleur de machine virtuelle (Virtual Machine Monitor, VMM) :
il s’agit d’un logiciel qui va créer et gérer l’exécution d’un certain nombre de machines
virtuelles. Popek et Goldberg ont établi trois contraintes que doivent respecter les
contrôleurs de machines virtuelles pour pouvoir être considérés en tant que tels :
1. Critère d’équivalence :
Any program run under the VMM should exhibit an effect identical with that
demonstrated if the program had been run on the original machine directly, with
the possible exception of differences caused by the availability of system resources
and differences caused by timing dependencies.
Ce critère impose que tout programme doit montrer un comportement simi-
laire, qu’il soit exécuté au travers d’un système de virtualisation ou bien directe-
ment sur la machine physique, à l’exception d’une éventuelle indisponibilité des
ressources ou de contraintes temporelles. Les contraintes temporelles sont dues
à la couche logicielle de virtualisation qui intervient et à l’existence d’autres ma-
chines virtuelles.
2. Critère d’efficacité :
The second characteristic of a virtual machine monitor is efficiency. It demands
that a statistically dominant subset of the virtual processor’s instructions be
executed directly by the real processor, with no software intervention by the
VMM.
Cette contrainte exige qu’une majorité des instructions du processeur virtuel
soient directement exécutées par le processeur physique et ce, sans intervention
du système de virtualisation. La virtualisation matérielle (voir 8) permet de mieux
répondre à cette contrainte. Ce critère exclut les systèmes purement logiciels
(simulations) ainsi que l’émulation.
3. Critère de contrôle des ressources :
The VMM is said to have complete control of these resources if it is not possible for
a program running under it in the created environment to access any resource
not explicitly allocated and it is possible under certain circumstances for the
VMM to regain control of resources already allocated.
Ce critère impose au système de virtualisation d’avoir un contrôle total des
ressources. Un programme virtualisé ne doit pas avoir la possibilité d’accéder à
une ressources autrement qu’au travers du système de virtualisation et ce dernier
se réserve le droit de reprendre le contrôle d’une ressource à n’importe quel mo-
ment. Le terme ressource se réfère à la mémoire et aux autres périphériques, pas
uniquement au processeur.

6.2 Prérequis
Les prérequis énoncés par Popek et Goldberg sont un ensemble de conditions nécessaires
assurant à une architecture matérielle de supporter efficacement le processus de virtualisa-
tion.
Le problème est de déterminer les caractéristiques que doit posséder le jeu d’instructions
d’un processeur afin de répondre de manière efficace aux contraintes évoquées en 6.1. Le
jeu d’instructions (Instruction Set Architecture, ISA) est l’ensemble des instructions qu’un
processeur est en mesure d’exécuter. Pour énoncer leurs théorèmes, Popek et Goldberg ont
classé les instructions de l’ISA en 3 groupes :

9 / 20
6 LES PRINCIPES DE LA VIRTUALISATION

F. 8 – Le schéma d’hyperviseur et de machine virtuelle présenté dans l’article de Popek et


Goldberg de 1974 [11]

• Les instructions privilégiées : pour les exécuter, le processeur doit être dans un mode
particulier, le mode privilégié. Si le processeur ne se trouve pas dans cet état, une
interruption est déclenchée et l’instruction est piégée (trapped). L’interruption consiste
en un changement de contexte au cours duquel le système (que ce soit l’OS hôte ou
l’hyperviseur) décide de la suite à donner à cette instruction.
• Les instructions sensibles à la configuration : ce sont les instructions qui ont la possi-
bilité d’interroger ou de modifier la configuration du système comme par exemple le
mode du processeur ou la quantité de mémoire allouée à un processus particulier.
• Les instructions sensibles au comportement : il s’agit des instructions dont le com-
portement ou le résultat va dépendre de l’état ou la disponibilité des ressources (si le
processeur se trouve en mode privilégié ou non,...).

6.3 Théorèmes
Les résultats de l’analyse de Popek et Golberg peuvent s’énoncer suivant 2 théorèmes :
• Théorème 1
For any conventional third generation computer, a VMM may be constructed if
the set of sensitive instructions for that computer is a subset of the set of privileged
instructions.
De manière intuitive, le théorème affirme que pour construire un hyperviseur pour une
architecture particulière, il est nécessaire que les instructions qui pourraient compro-
mettre le bon fonctionnement de cet hyperviseur (instructions sensibles à la configura-
tion) soient piégées et que le contrôle soit donné à l’hyperviseur. Ceci garantit le critère
de contrôle des ressources. Les instrutions non privilégiées, quant à elles, doivent être
exécutées sans intervention de l’hyperviseur afin de garantir le critère d’efficacité.
Remarquons que si les instructions sensibles à la configurations ne font pas par-
tie des instructions privilégiées, alors, en vertu du critère d’efficacité, elles seront
exécutées sans intervention de l’hyperviseur et par conséquent, le critère de contrôle
des ressources n’est pas respecté.
Une démonstration plus rigoureuse de ce théorème est présentée dans l’article original
de Popek et Goldberg [11].
• Théorème 2
A conventional third generation computer is recursively virtualizable if 1) it is
virtualizable and 2) a VMM [...] can be constructed for it.

10 / 20
7 LES PROBLÈMES LIÉS À LA VIRTUALISATION

Le second théorème porte sur la possibilité de faire de la virtualisation récursive, c’est


à dire d’exécuter une ou plusieurs machines virtuelles au sein d’une machine virtuelle.
Ce théorème affirme que ce processus est réalisable pour autant que l’architecture
matérielle réponde au premier théorème et qu’un hyperviseur puisse être développé
pour cette architecture.

6.4 Composants d’un hyperviseur


L’hyperviseur, ou programme de contrôle, est un logiciel constitué d’un ensemble de
modules. Les modules d’un hyperviseur peuvent être regroupés en trois catégories :
1. Le régulateur (dispatcher) : il peut être considéré comme le module de contrôle de plus
haut niveau de l’hyperviseur. Son rôle est de donner le contrôle à un des modules de
la deuxième ou de la troisième catégorie.
2. L’allocateur : son rôle est de déterminer quelle(s) ressource(s) doivent être allouées
aux applications virtualisées. Il est également du ressort de l’allocateur de ne pas
donner une même ressource simultanément à deux environnements virtuels distincts.
Le régulateur fera appel à l’allocateur chaque fois qu’un environnement virtuel tentera
d’exécuter une instruction privilégiée qui aurait comme répercution de modifier les
ressources allouées à cet environnement virtuel.
3. Des interpréteurs : à chacune des instructions privilégiées (à l’exception de celles qui
sont prises en charge par l’allocateur), on va associer une routine d’interprétation. Le
rôle de ces routines est de simuler le résultat des instructions privilégiées qui sont
piégées.

F. 9 – Modules d’un hyperviseur

7 Les problèmes liés à la virtualisation


Les problèmes actuels de la virtualisation sont principalement liés à l’omniprésence de
l’architecture x86 au sein des ordinateurs. Bien que largement répandu, le jeu d’instruc-
tions qui la compose n’est pas exempt de défauts. Si cette architecture se prête mal à la
virtualisation, c’est à cause de 18 instructions dites critiques. Ces instructions critiques sont
des instructions sensibles à la configuration mais qui ne font pas partie des instructions
privilégiées (si ces notions ne sont pas claires, nous renvoyons le lecteur au point 6.2).
D’un point de vue pratique, les instructions d’un processeur sont réparties en plusieurs
catégories (ou niveaux d’abstraction) appelées anneaux. Un processeur qui implémente l’ar-
chitecture x86 dispose de quatre anneaux où chaque anneau correspond à un certain niveau
de privilèges. Si nous appelons D(i) le niveau de privilège accordé aux applications qui
s’exécutent sur l’anneau i, nous pouvons définir la relation suivante sur les anneaux :

11 / 20
7 LES PROBLÈMES LIÉS À LA VIRTUALISATION

D(3) < D(2) < D(1) < D(0)

Les instructions critiques nécessitent en théorie de s’exécuter au niveau de privilège le plus


élevé, c.-à-d. à l’anneau 0. Le problème de 18 de ces instructions critiques, listées dans l’an-
nexe A, est qu’elles peuvent également s’exécuter aux anneaux 1, 2 et 3. Cela constitue un réel
problème pour les logiciels de virtualisation. En effet, il ne faut en aucun cas qu’un système
virtuel ait la possibilité de modifier les ressources physiques de la machine. Il est donc du
ressort de l’hyperviseur d’intercepter ces instructions critiques de manière à simuler leur
comportement.
Du point de vue des instructions privilégiées, aucun problème ne se pose : ces instructions
vont être piégées (puisque le système virtuel est exécuté à l’anneau 3) et l’hyperviseur pourra
les traiter. Mais pour ces 18 instructions critiques, la situation est plus complexe. Comme
elles ne seront pas piégées (puisqu’elles ne nécessitent pas un niveau de privilège très élevé),
l’hyperviseur doit être en mesure de les détecter de manière à pouvoir les interprêter. Il en
résulte évidemment une surcharge de calcul importante ainsi qu’une grande complexité de
l’hyperviseur.
D’autre part, les systèmes d’exploitation sont conçus pour être exécuté au niveau de
privilèges 0, puisqu’ils sont sensés disposer d’un contrôle total des ressources. Or, lorsqu’ils
sont virtualisés, les systèmes d’exploitatation ne sont plus exécutés sur l’anneau 0, mais
sur l’anneau 3. L’hyperviseur doit donc être en mesure de leurrer le système d’exploitation
virtualisé afin que celui-ci ne se rende pas compte qu’il s’exécute avec un faible niveau de
privilèges.
Au-delà des problèmes liés à l’architecture du processeur, la virtualisation se heurte
également à des problèmes d’adressage mémoire. En effet, le système virtualisé suppose
qu’il a accès à toute la mémoire, ce qui est faux puisqu’il la partage avec d’autres environ-
nements virtuels et avec l’hyperviseur. Celui-ci doit donc également s’assurer que chaque
environnement virtuel n’accède pas à un espace d’adressage mémoire qui ne lui appartient
pas et effectuer la traduction dynamique d’adresses virtuelles en adresses physiques.
Enfin, les dispositifs d’entrées/sorties constituent à l’heure actuelle un problème ma-
jeur dans la plupart des logiciels de virtualisation. S’il est plutôt facile d’ajouter des unités
de calcul sur un serveur physique afin d’améliorer les performances des environnements
virtuels, il n’est pas possible d’augmenter le débit d’accès aux disques par exemple2 . De
plus, contrairement au CPU, une grande partie des périphériques sont émulés, ce qui sig-
nifie que chaque instruction d’accès au pilote d’un périphérique virtuel doit être traduite
2
Il faudrait pour cela envisager de remplacer tout le matériel de stockage existant par du matériel plus
performant

12 / 20
8 LA VIRTUALISATION MATÉRIELLE

en une instruction d’accès à un périphérique physique, ce qui fait lourdement chuter les
performances.

8 La virtualisation matérielle
Introduite pour la première fois par IBM sur ses systèmes 370, la virtualisation matérielle
est une approche de la virtualisation qui vise à améliorer les performances des environ-
nements virtuels en faisant appel aux capacités matérielles des composants de la machine
physique, et plus particulièrement du processeur. Ce chapitre mettra donc l’accent sur les
technologies matérielles de virtualisation implémentées au sein des processeurs.
La nécessité de développer des solutions de virtualisation assistées par le processeur a
fait son apparition avec la prolifération des systèmes à base d’architecture x86. Comme nous
l’avons vu au point 7, cette architecture se prête très mal à la virtualisation et celle-ci nécessite
un travail considérable de la part de l’hyperviseur. A l’aide de la virtualisation matérielle,
l’hyperviseur est en mesure de virtualiser correctement l’ensemble des instructions de l’ar-
chitecture x86, y compris les 18 instructions critiques qui posent problème.
Les deux principaux fabricants de processeurs sur le marché, Intel et AMD, ont rapide-
ment compris l’intérêt de ces solutions et, en 2006, ils ont chacun inaugurés une nouvelle
gamme de processeurs incluant une technologie d’aide matérielle à la virtualisation. Cette
technologie est connue sous le nom de Intel VT-x (anciennement Vanderpool) et AMD-V (an-
ciennement Pacifia). Globalement, les technologies des deux concurrents sont semblables et
nous ne les différencierons pas.
D’un point de vue pratique, ces processeurs incluent un nouveau mode d’exécution ap-
pelé Extension de Machine Virtuelle (Virtual Machine Extension, VMX). Puisque l’hyperviseur
et l’environnement virtuel ne peuvent pas se trouver au même niveau de privilèges (voir
section 7), ce nouveau mode d’exécution va ajouter cinq anneaux supplémentaires regroupés
en deux niveaux. Le premier, appelé niveau racine correspond à un anneau qui se trouverait
sous l’anneau 03 (le niveau racine a donc un contrôle absolu des ressources). Le second,
appelé niveau normal, correspond aux quatres anciens anneaux (ils sont donc regroupés au
sein d’un niveau de privilèges unique). Puisque l’hyperviseur doit gérer la répartition des
ressources, il s’exécute au niveau racine tandis que les environnements virtuels s’exécutent
au niveau normal.
Pour entrer dans le mode d’exécution virtuel, le processus exécute une instruction partic-
ulière (VMXON chez Intel) et, symétriquement, pour quitter le mode virtuel, le processus
exécute l’instruction inverse (VMXOFF chez Intel). Lorsque l’hyperviseur est lancé, il peut
passer du mode racine au mode normal (et donc, donner le contrôle à un environnement
virtuel) à l’aide d’une autre instruction (appelée VMLAUNCH chez Intel) et, symétriquement,
l’hyperviseur reprendra le contrôle et passera au niveau racine au moyen de l’instruction
inverse (VMRESUME chez Intel).
Les technologies de virtualisation matérielle d’Intel et AMD implémentent également des
instructions qui permettent d’accélérer les sauvegardes et restaurations de contexte. En effet,
lorsqu’un hyperviseur veut donner le contrôle à un autre environnement virtuel, il doit d’une
part sauvegarder le contexte d’exécution de l’environnement virtuel actuellement actif et,
d’autre part, restaurer le contexte d’exécution de l’environnement virtuel à qui il s’apprête à
donner le contrôle. Ainsi, à chaque environnement virtuel est associé un segment en mémoire
de quelques kBytes qui contient les données importantes du contexte d’exécution de cet en-
vironnement. Il est lu à chaque activation d’un environnement virtuel et réécrit à chaque
sortie de celui-ci. Chez AMD, ce segment s’appelle Bloc de Contrôle de la Machine Virtuelle
(Virtual Machine Control Block, VMCB) ; chez Intel, ce segment s’appelle Structure de Contrôle
de la Machine Virtuelle, (Virtual Machine Control Structure, VMCS).
3
il est parfois aussi appelé anneau -1

13 / 20
9 LES DIFFÉRENTS TYPES DE VIRTUALISATION

F. 10 – Virtual Machine Extension

9 Les différents types de virtualisation


Il existe trois approches populaires de virtualisation de serveurs : le modèle de machines
virtuelles, le modèle de para-virtualisation et la virtualisation au niveau du système d’exploitation.

9.1 Machine virtuelle


Également connue sous le nom de virtualisation complète, cette stratégie de virtualisation
consiste à créer des environnements virtuels qui sont une copie d’une machine physique
(mémoire, disques,...). Les machines virtuelles se basent sur deux principes :
1. la traduction binaire des instructions que le noyau du système virtualisé souhaite
exécuter ;
2. l’exécution directe des instructions relatives aux applications utilisateurs.
La traduction binaire ne consiste pas à traduire les instructions d’un jeu d’instructions par-
ticulier vers un autre (p. ex. x86 → RISC), mais plutôt de traduire les instructions d’un
jeu d’instructions vers ce même jeu d’instructions (p. ex. x86 → x86)4 . Le code traduit est
placé dans le cache de traduction. La traduction binaire d’une instruction issue d’un environ-
nement virtuel pourrait par exemple consister à remplacer une instruction de manipulation
du matériel physique en une instruction de manipulation du matériel virtuel associé à cet en-
vironnement, ou à remplacer une instruction privilégiée par une instruction non privilégiée
(de manière à ce qu’elle soit piégée par l’OS hôte). La traduction binaire repose donc sur un
travail d’analyse des instructions exécutées par le noyau du système invité. Cette traduction
peut s’avérer indispensable pour assurer le maintien de la stabilité du système dans sa glob-
alité5 .

4
Parfois, la traduction consiste simplement à recopier l’instruction de départ
5
Le système hôte ainsi que les autres environnements virtuels

14 / 20
9 LES DIFFÉRENTS TYPES DE VIRTUALISATION

F. 11 – Intel VT-x

F. 12 – Virtualisation complète : à gauche, l’hyperviseur gère lui même le hardware sous-
jacent ; à droite, l’hyperviseur transmet les requêtes aux système d’exploitation hôte

Les instructions utilisateurs sont quant à elles exécutées directement car l’hyperviseur
fait la supposition qu’elles ne sont pas dangeureuses pour le système6 . Elle s’exécutent donc
comme s’il n’existait aucune couche de virtualisation.
Il existe deux types de machines virtuelles : celles où l’hyperviseur est une application
installée sur un système d’exploitation hôte, et celles où l’hyperviseur est installé en lieu et
place du système d’exploitation hôte.
Avantages :
• permet de faire fonctionner plusieurs systèmes différents sur la même machine physique ;
• bonnes performances et stabilité.
Inconvénients : consommation importantes des ressources (la consommation est fonction
du nombre de machines virtuelles).
Exemples : Microsoft Virtual PC, Microsoft Virtual Server, VirtualBox, VMware Workstation.
Selon VMware, la virtualisation complète est actuellement la stratégie de virtualisation
la plus largement répandue et la plus fiable.
6
Elles seront de toute façon piégées une fois traitées par le système hôte

15 / 20
9 LES DIFFÉRENTS TYPES DE VIRTUALISATION

9.2 Para-virtualisation
La para-virtualisation consiste pour le système d’exploitation virtualisé à communiquer
plus efficacement avec l’hyperviseur de manière à accroı̂tre les performances du système.
Cette stratégie de virtualisation est également connue sous le nom de virtualisation assistée par
le système d’exploitation (invité). La para-virtualisation implique une modification du noyau du
système d’exploitation virtualisé afin de remplacer les instructions non virtualisables par des
hyper-appels (hypercalls) qui vont communiquer directement avec la couche virtuelle de l’hy-
perviseur. L’hyperviseur fournit également un ensemble d’interfaces d’hyper-appels pour
d’autres opérations critiques du noyau telles que les opérations de gestion de la mémoire,
des interruptions,...
La para-virtualisation est différente de la virtualisation complète où le système virtualisé
n’est pas conscient de son état et les instructions critiques sont piégées et traduites. Le prin-
cipal atout de la para-virtualisatio réside dans ses faibles coûts de virtualisation7 , mais ses
performances par rapport à la virtualisation complète dépendent fortement de la charge de
travail de la machine physique.
Puisque la para-virtualisation ne supporte pas les systèmes non modifiés (et, par conséquent,
les systèmes propriétaires tels que Microsoft Windows), sa portabilité et sa compatibilité sont
réduites. La para-virtualisation introduit également des problèmes de maintenance et de sup-
port au sein d’environnements de développement puisqu’elle nécessite des modifications
du noyau du système.
Avantages : performances accrues et stabilité.
Inconvénients :
• Nécessite une adaptation du noyau des systèmes invités ;
• Usage limité aux systèmes libres (conséquence du point précédent).
Exemples : Xen,Microsoft Hyper-V.

9.3 Virtualisation au niveau du système d’exploitation


La virtualisation au niveau du système d’exploitation est une stratégie qui consiste à
réaliser le processus de virtualisation au niveau du noyau du système hôte (ce modèle ne
fait donc pas intervenir de couche virtuelle supplémentaire). Cette forme de virtualisation
consiste à créer des environnements virtuels (appelés conteneurs) qui vont chacun dupli-
quer certains composants du système d’exploitation hôte. Les capacités de virtualisation
font dès lors partie intégrante du système hôte et non plus de l’hyperviseur. La principale
contrainte de ce modèle de virtualisation réside dans le fait que les systèmes invités doivent
impérativement être du même type que le système hôte8 .
Dans le modèles des machines virtuelles, chaque système virtualisé communique avec
le matériel au travers d’une couche de virtualisation. Plus le nombre de machines virtuelles
est important et plus le système est ralentit (il faut en effet traduire un grand nombre
d’opérations virtuelles). Par contre, la virtualisation au niveau du système d’exploitation au-
torise les environnements virtuels à communiquer directement avec le système d’exploitation
hôte, comme s’il n’existait aucune couche de virtualisation, ce qui améliore les performances.
Comme les partitions de virtualisation au niveau du système d’exploitation sont généralement
bien plus petites que les partitions des machines virtuelles, il est possible d’exécuter un grand
nombre d’environnements virtuels en parallèle.
Avantages :
• permet de faire fonctionner plusieurs instances du même système de façon étanche.
7
Une grande partie du travail de virtualisation a été réalisé en modifiant le noyau du système invité
8
On ne duplique plus virtuellement le matériel sous-jacent mais bien des composants logiciels du système
d’exploitation hôte ; il n’est donc pas possible d’exécuter des applications qui nécessiteraient un environnement
d’exécution différent

16 / 20
9 LES DIFFÉRENTS TYPES DE VIRTUALISATION

F. 13 – Virtualisation complète

• performances proches du mode natif.


Inconvénients : ne permet de faire fonctionner qu’un seul type de système.
Exemples : Linux VServer,Virtuozzo.

17 / 20
10 CONCLUSION

10 Conclusion
Nous avons vu que la virtualisation est une technologie aujourd’hui largement répandue
au sein des entreprises. Elle peut prendre de nombreuses formes et est présente à tous les
niveaux. Bien que ces solutions présentent un certain nombre d’inconvénients, les avantages
qu’elles apportent peuvent s’avérer déterminants dans la politique d’acquisition, de struc-
turation et de gestion des ressources informatiques.
Basée sur le travail de deux chercheurs américains qui ont, dans un document publié il
y a bientôt 40 ans, imposé au jeu d’instructions des processeurs un certain nombre de con-
traintes afin de pouvoir supporter la virtualisation, celle-ci pose aujourd’hui de nombreux
problèmes. En effet, le jeu d’instructions de l’architecture la plus répandue actuellement ne
respecte pas ces contraintes. Ceci a pour conséquence de complexifier le travail des hyper-
viseurs et il en résulte une dégradation des performances des logiciels de virtualisation.
Le besoin de pallier ces problèmes s’est vite fait ressentir et c’est ainsi que s’est développé
un grand nombre de solutions d’aide à la virtualisation directement incluses au sein du
matériel qui constitue nos ordinateurs.
Aujourd’hui, même s’il existe beaucoup de logiciels de virtualisation, ceux-ci peuvent
être regroupés en trois grandes classes : la virtualisation complète, la para-virtualisation et
la virtualisation au niveau du système d’exploitation.
Pour terminer, quel est l’avenir de la virtualisation ? L’avenir de la virtualisation dépend
d’un grand nombre de facteurs. Tout d’abord, il est nécessaire de reconsidérer notre vision
de la technologie afin de profiter pleinement des avantages liés à la virtualisation. L’infor-
matique est une science en constante évolution et il est impératif de remettre en question un
grand nombre de principes qui sont aujourd’hui largement répandus. Intel et AMD, bien
qu’ils soient sur la bonne voie, ont encore des efforts à faire pour améliorer le support matériel
de la virtualisation inclu dans leur processeurs, de manière à supporter plus efficacement
les différentes technologies présentes sur le marché. Les constructeurs de périphériques
d’entrées/sorties doivent établir de nouvelles normes pour permettre une simplification des
interactions entre les environnements virtuels et les fichiers. Enfin, les développeurs sont
tenus de standardiser les différentes technologies de virtualisation utilisées à l’heure actuelle
afin de garantir des solutions plus accessibles dans le futur.

18 / 20
Références
[1] Server Virtualization : Covrering today’s Server Virtualization topics.
searchservervirtualization.techtarget.com/.
[2] AllExperts. Serveurs et Stockage. www.zdnet.fr/actualites/it-management/0,
3800005311,39711925,00.htm.
[3] AnandTech. Hardware Virtualization : the Nuts and Bolts. www.anandtech.com/IT/
showdoc.aspx?i=3263&p=1.
[4] Arumtec. Pourquoi virtualiser est GREEN. www.arumtec.net/fr/
laboratoire-arumtec/faq/q5-pourquoi-virtualiser-est-green.
[5] AMD Company. AMD Nested Paging. Juillet 2008.
[6] Alain Devarieux. Virtualisation de serveurs, Solutions Open Source.
[7] Gagnaire Laure et Lahoudere Fabien. La virtualisation. Décembre 2007.
[8] Bernard Golden. Virtualization for Dummies.
[9] Cynthia E. Irvine John Scott Robin. Analysis of the Intel Pentium’s Ability to Support a
Secure Virtual Machine Monitor. Août 2000.
[10] Najmi. Generations of Computer. Août 2004.
[11] Popek and Goldberg. Formal Requirements for Virtualizable Third Generation Architectures.
Juillet 1974.
[12] Inc. Red Hat. Virtualization Guide : Red Hat Virtualization. 2007.
[13] Hardware Secrets. Intel Virtualization Technology (VT) Explained. www.hardwaresecrets.
com/article/263/1.
[14] Amit Singh. An introduction to virtualization. www.kernelthread.com/publications/
virtualization/, Janvier 2004.
[15] Genesis Multimedia Solutions. Virtualization Technologies. Juin 2009.
[16] Pascal Verschaeve. Trasys - Service Presentation - Virtualization Service Offerings.
[17] Virtualizationdefrag. The Rise of Virtual Systems and Virtualization.
virtualizationdefrag.com/articles/history-of-virtualization/index.php,
2009.
[18] VMware. Understanding Full Virtualization, Paravirtualization, and Hardware Assist. 2007.
[19] VMware. Historique de la virtualisation. www.vmware.com/fr/overview/history.html,
2008.
[20] ZDnet. Serveurs et Stockage. www.zdnet.fr/actualites/it-management/0,
3800005311,39711925,00.htm.
A Les 18 instructions problématiques de x86
• SGDT
• SIDT
• SLDT
• SMSW
• PUSHF
• POPF
• LAR
• LSL
• VERR
• VERW
• POP
• PUSH
• CALL
• JMP
• INT n
• RET
• STR
• MOVE