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'exploitationinvité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'exploitationinvité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}