Skip to content
Snippets Groups Projects
Verified Commit 6ec2e755 authored by iliya.saroukha's avatar iliya.saroukha :first_quarter_moon:
Browse files

proof-reading chapter 1

parent db7e11f2
Branches
No related tags found
No related merge requests found
......@@ -6,14 +6,14 @@
% définir clairement les enjeux et avantages de cette technologie.
Dans ce chapitre, nous commencerons par expliciter le principe fondamental qu'est
l'abstraction en informatique au moyen de la virtualisation. En partant des
concepts de base et en allant jusqu'aux applications actuelles, nous pourons
par conséquent définir clairement les enjeux et avantages fournis par cette
forme d'abstraction.
l'abstraction dans le domaine de l'informatique, au moyen de la virtualisation.
En partant des concepts de base et en allant jusqu'aux applications actuelles,
nous pourrons par conséquent définir clairement les enjeux et avantages fournis
par cette forme d'abstraction.
S'en suivera une partie plus approfondie sur la virtualisation de plateforme et
des différentes formes d'implémentation de celle-ci. En particulier, la
virtualisation \textbf{complète assistée matériellement} (\textit{hardware-assisted
virtualisation \textbf{complète assistée par le matériel} (\textit{hardware-assisted
full virtualization}) sera au cœur de l'entièreté de ce travail, d'où
l'importance cruciale de bien définir ses principes théoriques de fonctionnement
avant d'entamer une discussion sur les manières ingénieuses de l'utiliser à
......@@ -22,7 +22,7 @@ mauvais escient.
\section{Principe de l'abstraction}
Au cours de son évolution, le domaine de l'informatique fut constamment
confronté à ce que l'on pourrait qualifier de dilemme cornélien; maintenir une
confronté à ce que l'on pourrait qualifier de dilemme cornélien : maintenir une
facilité d'utilisation de nouveaux procédés et outils tout en faisant face à une
grandissante complexité technique. Afin de réconcilier ces deux phénomènes, une
des solutions fréquentes est d'introduire une couche intermédiaire dont le but
......@@ -32,17 +32,18 @@ l'utilisateur afin qu'il puisse tirer parti de ces avancées. De ce fait, il est
donc possible d'éviter un compromis entre l'avancement des performances
computationnelles et une utilisation potentiellement plus laborieuse.
L'abstraction existe à tous les niveau de l'informatique, des langages de
L'abstraction existe à tous les niveaux de l'informatique, des langages de
programmation haut niveau qui masquent les détails de la gestion manuelle de
la mémoire, aux systèmes d'exploitation qui sont l'epitome même d'une couche
d'abstraction. Ils permettent à leurs utilisateurs, via une invite de commandes
ou une interface graphique, d'intéragir avec la machine et ses ressources sans
avoir besoin de manipuler physiquement les composants qui la composent.
la mémoire jusqu'aux systèmes d'exploitation qui représentent la définiton même
d'une couche d'abstraction entre l'utilisateur et le matériel. Ils permettent à
leurs utilisateurs, via une invite de commandes ou une interface graphique,
d'intéragir avec la machine et ses ressources sans avoir besoin de manipuler
physiquement les composants qui la composent.
Un des exemples classiques mettant en avant l'avantage d'abstraire les détails
dits \say{architecturaux} est la \textbf{\say{virtualisation de langage}}
(\textit{language-based virtualization}). Le langage Java en est un exemple
typique. Le code source étant compilé pour une plateforme/architecture
typique. Le code source étant compilé pour une plateforme / architecture
inexistante (\acrshort{jvm}), il est impossible de l'exécuter immédiatement sur
une machine physique. Néanmoins, en installant cette \acrshort{vm} (ainsi que
les dépendances nécessaires) sur n'importe quelle plateforme \textbf{réelle}
......@@ -52,7 +53,7 @@ les diverses architectures physiques (ARM, x86-64, etc\dots).
% FIXME: not sure about this paragraph
En mettant en place des mécanismes permettant d'abstraire les détails
d'implémentations ou bien architecturaux il devient donc possible de rendre
la création/utilisation d'outils plus simples et plus portables à travers des
la création / utilisation d'outils plus simples et plus portables à travers des
plateformes différentes.
\section{Virtualisation de plateforme}
......@@ -73,7 +74,7 @@ virtuelle. Dans le monde de la virtualisation de plateforme, cette couche
possède le nom \textbf{\say{d'hyperviseur}}, aussi appelée \acrshort{vmm}. Le
diagramme ci-dessous illustre le positionnement hiérarchique de l'hyperviseur
entre le matériel physique de la machine et les différents systèmes
d'exploitations \say{invités} qu'il hébèrge.
d'exploitation invités qu'il héberge.
% NOTE: Multi Autonomic Management for Optimizing Energy Consumption in Cloud Infrastructures - Scientific Figure on ResearchGate. Available from: https://www.researchgate.net/figure/Platform-Virtualization_fig2_278643549 [accessed 10 Mar 2025]
% TODO: rajouter la source partout!!!
......@@ -84,24 +85,24 @@ d'exploitations \say{invités} qu'il hébèrge.
\caption{Diagramme simplifiée d'\acrshort{vmm}. Source : tiré de researchgate.net, ref. URL02 / réalisé par ALVARES Frederico}\label{fig:platform_virt}
\end{figure}
Dans le but de pouvoir re-créer des environnements informatiques virtuels
quasiment indistinguable de \say{l'hôte}, l'hyperviseur est censé pouvoir
virtualisé trois composantes distinctes :
Dans le but de pouvoir recréer des environnements informatiques virtuels
quasi identique à l'hôte, l'hyperviseur est censé pouvoir virtualisé trois
composantes distinctes :
\begin{itemize}
\item \acrshort{cpu}
\item \gls{cpu}
\begin{itemize}
\item Fournir aux \say{invités} des ressources computationnelles à
\item Fournir aux invités des ressources computationnelles à
part entière pour exécuter leurs codes respectifs
\end{itemize}
\item \acrshort{mmu}
\item \gls{mmu}
\begin{itemize}
\item Assurer une isolation entre les zones mémoires dédiées à
chaque \acrshort{vm} ainsi que pour \say{l'hôte}
chaque \acrshort{vm} ainsi que pour l'hôte
\end{itemize}
\item \acrshort{io} (appareils gérant les entrées et sorties d'une machine)
\item \gls{io}
\begin{itemize}
\item Permettre l'utilisation de périphériques (ex.: disque de
\item Permettre l'utilisation de périphériques (ex. disque de
stockage, carte réseau, etc\dots) au sein d'une machine
virtuelle
\end{itemize}
......@@ -112,7 +113,7 @@ virtualisé trois composantes distinctes :
Le but ultime d'un hyperviseur est d'exposer un \textit{duplicata} \textbf{efficace}
et \textbf{isolé} de la machine physique sous-jacente. Pour atteindre cet
objectif, Gerald J. Popek ainsi que Robert P. Goldberg ont publié dans leur
article intitulé \textit{\say{Formal requirements for virtualizable third generation architectures}}\cite{popek_formal_1974},
article intitulé \textit{\say{Formal requirements for virtualizable third generation architectures}} \cite{popek_formal_1974},
trois exigences pour qu'une architecture informatique puisse être qualifiée
comme pouvant prendre en charge la virtualisation de manière efficace. Ces
principes historiques sont les suivants :
......@@ -120,31 +121,31 @@ principes historiques sont les suivants :
\begin{enumerate}
\item Équivalence
\begin{itemize}
\item Fournir à \say{l'invité} un environnement quasiment identique à
\say{l'hôte} de sorte à ce que le code puisse s'exécuter de la même
\item Fournir à l'invité un environnement quasi identique à
l'hôte de sorte à ce que le code puisse s'exécuter de la même
manière.
\end{itemize}
\item Efficacité
\begin{itemize}
\item Faire en sorte que la grande majorité des instructions du
programme de \say{l'invité} soient exécutées par le matériel
programme de l'invité soient exécutées par le matériel
sous-jacent sans intervention du \acrshort{vmm}.
\end{itemize}
\item Isolation
\begin{itemize}
\item Assurer que le \acrshort{vmm} ait le plein contrôle sur les
ressources physiques accédées par \say{l'invité}, garantissant
ressources physiques accédées par l'invité, garantissant
ainsi sécurité et isolation entre les diverses \acrshort{vm}s.
\end{itemize}
\end{enumerate}
De nos jours, ces principes sont toujours d'actualités sauf celui de
l'équivalence (moyennant l'architecture du \acrshort{cpu}) pour des raisons
De nos jours, ces principes sont toujours d'actualité, sauf celui de
l'équivalence (mis à part l'architecture du \acrshort{cpu}) pour des raisons
de performances.
\section{Techniques de virtualisation du CPU}\label{sec:techniques_de_virtualisation_du_cpu} % (fold)
À présent, nous allons effectuer un bref aperçu des diverses techniques
À présent, nous allons présenter un bref aperçu des diverses techniques
existantes permettant la virtualisation de la pièce maîtresse d'une machine
physique, le \acrshort{cpu}.
......@@ -153,36 +154,35 @@ physique, le \acrshort{cpu}.
L'approche originelle pour résoudre le problème de la virtualisation du
\acrshort{cpu} consistait à introduire un niveau de privilège additionnel pour
le \acrshort{vmm}, supérieur à celui du code source du noyau des systèmes
d'exploitations \say{invités}, de sorte à ce que celui-ci puisse intercepter
d'exploitation invités, de sorte à ce que celui-ci puisse intercepter
l'exécution d'instructions privilégiées. Ceci permettait donc de garantir que
le code exécuté par le système \say{invité} ne pouvait en réalité pas affecter
le code exécuté par le système invité ne pouvait en réalité affecter
le matériel physique de l'hôte. Au moment de l'exécution d'une instruction
privilégiée, le \acrshort{vmm} l'interceptait et l'émulait (re-créait son
privilégiée, le \acrshort{vmm} l'interceptait et l'émulait (recréait son
comportement de manière contrôlée) de sorte à ne pas compromettre l'état du
système hôte.
Cette technique, obsolète à l'heure d'aujourd'hui, était employée à l'aube de
Cette technique, de nos jours obsolète, était employée à l'aube de
la virtualisation (années $\sim$ 1960-1970) de plateforme notamment par IBM dans
leurs \textit{mainframes} tel que le CP-67.
leurs \textit{mainframes}\footnote{Ordinateurs centraux} tel que le CP-67.
\subsection{Virtualisation complète par la traduction dynamique binaire}
Le besoin pour la traduction binaire dynamique est apparu suite à la montée en
popularité de l'architecture informatique x86 aux alentours des années 1990.
Cet événement marqua ainsi le début de la démocratisation des ordinateurs
personnels grâce au gain de performances proposés par cette nouvelle
architecture.
Grâce au gain de performances offert par cette nouvelle architecture, tout
en modérant les coûts, cet événement marqua ainsi le début de la démocratisation
des ordinateurs personnels.
Jusqu'à cette époque, la virtualisation fut pratiquée uniquement sur les
\textit{mainframes} du fait que ceci furent assez puissants et explicitement
conçus pour proposer ce cas d'utilisation. Avec l'avènement de ce nouveau
paradigme architectural, le souhait de pouvoir virtualiser x86 apparu.
paradigme architectural, le souhait de pouvoir virtualiser x86 est apparu.
Pour y parvenir, une approche similaire à l'interception et émulation fut
initialement envisagée, or celle-ci s'est avérée être incompatible avec x86.
La raison de de cette incompatibilité était que 17 instructions privilégiées ne
La raison de cette incompatibilité était que 17 instructions privilégiées ne
pouvait être interceptée. En conséquence, le \acrshort{vmm} perdait le contrôle
sur le code s'exécutant par l'invité.
sur le code exécuté par l'invité.
La solution proposée par le groupe de recherche de Mendel Rosenblum était de
traduire \textbf{à la volée} le code source de l'\acrshort{os} de l'invité en
......@@ -191,7 +191,7 @@ certaines sections de celui-ci de manière équivalente lorsqu'il utilisait une
des 17 instructions problématiques. Un des avantages majeurs de cette technique
est qu'elle ne nécessite pas de modifier le code source de l'\acrshort{os}
invité permettant ainsi d'exécuter des \acrshort{os} dont le code source n'est
pas public (e.g. Windows). Inversement, du fait que cette traduction
pas public (ex. Windows). Inversement, du fait que cette traduction
s'effectuait simultanément à l'exécution de l'invité, l'impact négatif sur les
performances étaient non-négligeables.
......@@ -202,18 +202,18 @@ performances étaient non-négligeables.
Dans le but de finalement résoudre le problème introduit par les 17 instructions
privilégiées de l'architecture x86, les fabricants Intel et AMD décident, en
2005 et 2006 respectivement, d'introduire des extensions de virtualisation aux
instructions matérielles existantes permettant ainsi de palier à cette
instructions matérielles existantes permettant ainsi de pallier cette
problématique.
Les extensions Intel VT-x et AMD-V (\textit{Pacifica} de son nom originel),
Les technologies Intel VT-x et AMD-V (\textit{Pacifica} de son nom originel),
introduisent une déduplication du mode d'opération du \acrshort{cpu}. À présent,
lors de l'exécution d'une ou plusieurs \acrshort{vm}s sous la supervision d'un
hyperviseur, celles-ci disposeront des quatre niveaux de privilèges habituels
(dans l'ordre descendant du niveau de privilège), appelés \textit{Ring-0} à
\textit{Ring-3}. Cependant, ces anneaux de privilèges seront régis à présent
par un nouveau mode \acrshort{cpu} prénommé \textbf{\textit{Non-Root}}. De son
côté, l'hyperviseur ainsi que les applications de l'hôte seront exécutés en mode
\textbf{\textit{Root}}.
\textit{Ring-3}. Cependant, ces anneaux de privilèges seront régis dès lors
par un nouveau mode \acrshort{cpu} prénommé \textbf{\textit{Non-Root}}.
Quant aux applications de l'hôte ainsi que l'hyperviseur, ils seront exécutés
en mode \textbf{\textit{Root}} du processeur.
% NOTE: flg 02_platform_virt
......@@ -230,7 +230,7 @@ Cette déduplication à un double avantage, premièrement elle amplifie l'illusi
pour la \acrshort{vm} que celle-ci n'est en fait pas virtualisée, notamment
du fait que le code du noyau s'exécute de manière conventionnelle en
\textit{Ring-0} et deuxièmement, à chaque fois qu'une instruction privilégiée
est demandée, celle-ci sera interceptée et causera une \textbf{\textit{VMExit}}.
est demandée, celle-ci sera interceptée et causera une \textbf{\textit{VM-exit}}.
À ce moment, le \acrshort{cpu} basculera en mode \textit{Root} et l'hyperviseur
s'en chargera de la gérer de manière adéquate.
......@@ -247,9 +247,9 @@ L'implémentation de ses extensions matérielles ont permis de rendre
l'architecture x86 réellement virtualisable de manière similaire à
l'interception et émulation utilisée sur les \textit{mainframes}. Ceci a
drastiquement amélioré les performances des environnements virtuels par rapport
à la traduction binaire dynamique du fait que le code en exécution d'une
\acrshort{vm} ne nécessitait plus une analyse au \textit{runtime} par
l'hyperviseur sous-jacent.
à la traduction binaire dynamique du fait que le code de la \acrshort{vm} ne
nécessitait plus une analyse au \textit{runtime}\footnote{Lors de l'exécution}
par l'hyperviseur sous-jacent.
% Le seul bémol de cette approche est qu'afin de tirer
% partie de cette accéleration matérielle, il est nécessaire que le \acrshort{cpu}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment