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 @@ ...@@ -6,14 +6,14 @@
% définir clairement les enjeux et avantages de cette technologie. % définir clairement les enjeux et avantages de cette technologie.
Dans ce chapitre, nous commencerons par expliciter le principe fondamental qu'est Dans ce chapitre, nous commencerons par expliciter le principe fondamental qu'est
l'abstraction en informatique au moyen de la virtualisation. En partant des l'abstraction dans le domaine de l'informatique, au moyen de la virtualisation.
concepts de base et en allant jusqu'aux applications actuelles, nous pourons En partant des concepts de base et en allant jusqu'aux applications actuelles,
par conséquent définir clairement les enjeux et avantages fournis par cette nous pourrons par conséquent définir clairement les enjeux et avantages fournis
forme d'abstraction. par cette forme d'abstraction.
S'en suivera une partie plus approfondie sur la virtualisation de plateforme et 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 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ù 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 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 à avant d'entamer une discussion sur les manières ingénieuses de l'utiliser à
...@@ -22,7 +22,7 @@ mauvais escient. ...@@ -22,7 +22,7 @@ mauvais escient.
\section{Principe de l'abstraction} \section{Principe de l'abstraction}
Au cours de son évolution, le domaine de l'informatique fut constamment 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 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 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 des solutions fréquentes est d'introduire une couche intermédiaire dont le but
...@@ -32,12 +32,13 @@ l'utilisateur afin qu'il puisse tirer parti de ces avancées. De ce fait, il est ...@@ -32,12 +32,13 @@ 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 donc possible d'éviter un compromis entre l'avancement des performances
computationnelles et une utilisation potentiellement plus laborieuse. 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 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 la mémoire jusqu'aux systèmes d'exploitation qui représentent la définiton même
d'abstraction. Ils permettent à leurs utilisateurs, via une invite de commandes d'une couche d'abstraction entre l'utilisateur et le matériel. Ils permettent à
ou une interface graphique, d'intéragir avec la machine et ses ressources sans leurs utilisateurs, via une invite de commandes ou une interface graphique,
avoir besoin de manipuler physiquement les composants qui la composent. 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 Un des exemples classiques mettant en avant l'avantage d'abstraire les détails
dits \say{architecturaux} est la \textbf{\say{virtualisation de langage}} dits \say{architecturaux} est la \textbf{\say{virtualisation de langage}}
...@@ -73,7 +74,7 @@ virtuelle. Dans le monde de la virtualisation de plateforme, cette couche ...@@ -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 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 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 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] % 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!!! % TODO: rajouter la source partout!!!
...@@ -84,24 +85,24 @@ d'exploitations \say{invités} qu'il hébèrge. ...@@ -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} \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} \end{figure}
Dans le but de pouvoir re-créer des environnements informatiques virtuels Dans le but de pouvoir recréer des environnements informatiques virtuels
quasiment indistinguable de \say{l'hôte}, l'hyperviseur est censé pouvoir quasi identique à l'hôte, l'hyperviseur est censé pouvoir virtualisé trois
virtualisé trois composantes distinctes : composantes distinctes :
\begin{itemize} \begin{itemize}
\item \acrshort{cpu} \item \gls{cpu}
\begin{itemize} \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 part entière pour exécuter leurs codes respectifs
\end{itemize} \end{itemize}
\item \acrshort{mmu} \item \gls{mmu}
\begin{itemize} \begin{itemize}
\item Assurer une isolation entre les zones mémoires dédiées à \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} \end{itemize}
\item \acrshort{io} (appareils gérant les entrées et sorties d'une machine) \item \gls{io}
\begin{itemize} \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 stockage, carte réseau, etc\dots) au sein d'une machine
virtuelle virtuelle
\end{itemize} \end{itemize}
...@@ -120,31 +121,31 @@ principes historiques sont les suivants : ...@@ -120,31 +121,31 @@ principes historiques sont les suivants :
\begin{enumerate} \begin{enumerate}
\item Équivalence \item Équivalence
\begin{itemize} \begin{itemize}
\item Fournir à \say{l'invité} un environnement quasiment identique à \item Fournir à l'invité un environnement quasi identique à
\say{l'hôte} de sorte à ce que le code puisse s'exécuter de la même l'hôte de sorte à ce que le code puisse s'exécuter de la même
manière. manière.
\end{itemize} \end{itemize}
\item Efficacité \item Efficacité
\begin{itemize} \begin{itemize}
\item Faire en sorte que la grande majorité des instructions du \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}. sous-jacent sans intervention du \acrshort{vmm}.
\end{itemize} \end{itemize}
\item Isolation \item Isolation
\begin{itemize} \begin{itemize}
\item Assurer que le \acrshort{vmm} ait le plein contrôle sur les \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. ainsi sécurité et isolation entre les diverses \acrshort{vm}s.
\end{itemize} \end{itemize}
\end{enumerate} \end{enumerate}
De nos jours, ces principes sont toujours d'actualités sauf celui de De nos jours, ces principes sont toujours d'actualité, sauf celui de
l'équivalence (moyennant l'architecture du \acrshort{cpu}) pour des raisons l'équivalence (mis à part l'architecture du \acrshort{cpu}) pour des raisons
de performances. de performances.
\section{Techniques de virtualisation du CPU}\label{sec:techniques_de_virtualisation_du_cpu} % (fold) \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 existantes permettant la virtualisation de la pièce maîtresse d'une machine
physique, le \acrshort{cpu}. physique, le \acrshort{cpu}.
...@@ -153,36 +154,35 @@ 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 L'approche originelle pour résoudre le problème de la virtualisation du
\acrshort{cpu} consistait à introduire un niveau de privilège additionnel pour \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 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 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 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 comportement de manière contrôlée) de sorte à ne pas compromettre l'état du
système hôte. 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 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} \subsection{Virtualisation complète par la traduction dynamique binaire}
Le besoin pour la traduction binaire dynamique est apparu suite à la montée en 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. 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 Grâce au gain de performances offert par cette nouvelle architecture, tout
personnels grâce au gain de performances proposés par cette nouvelle en modérant les coûts, cet événement marqua ainsi le début de la démocratisation
architecture. des ordinateurs personnels.
Jusqu'à cette époque, la virtualisation fut pratiquée uniquement sur les Jusqu'à cette époque, la virtualisation fut pratiquée uniquement sur les
\textit{mainframes} du fait que ceci furent assez puissants et explicitement \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 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 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. 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 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 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 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 ...@@ -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 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} 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 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 s'effectuait simultanément à l'exécution de l'invité, l'impact négatif sur les
performances étaient non-négligeables. performances étaient non-négligeables.
...@@ -202,18 +202,18 @@ 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 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 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 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. 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, 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 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 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} à (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 \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}}. De son par un nouveau mode \acrshort{cpu} prénommé \textbf{\textit{Non-Root}}.
côté, l'hyperviseur ainsi que les applications de l'hôte seront exécutés en mode Quant aux applications de l'hôte ainsi que l'hyperviseur, ils seront exécutés
\textbf{\textit{Root}}. en mode \textbf{\textit{Root}} du processeur.
% NOTE: flg 02_platform_virt % NOTE: flg 02_platform_virt
...@@ -230,7 +230,7 @@ Cette déduplication à un double avantage, premièrement elle amplifie l'illusi ...@@ -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 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 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 \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 À 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. 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 ...@@ -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'architecture x86 réellement virtualisable de manière similaire à
l'interception et émulation utilisée sur les \textit{mainframes}. Ceci a l'interception et émulation utilisée sur les \textit{mainframes}. Ceci a
drastiquement amélioré les performances des environnements virtuels par rapport drastiquement amélioré les performances des environnements virtuels par rapport
à la traduction binaire dynamique du fait que le code en exécution d'une à la traduction binaire dynamique du fait que le code de la \acrshort{vm} ne
\acrshort{vm} ne nécessitait plus une analyse au \textit{runtime} par nécessitait plus une analyse au \textit{runtime}\footnote{Lors de l'exécution}
l'hyperviseur sous-jacent. par l'hyperviseur sous-jacent.
% Le seul bémol de cette approche est qu'afin de tirer % 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} % 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