Qu'est-ce qu'un hyperviseur?
Un hyperviseur est un type de logiciel unique qui permet à un ordinateur d’exécuter plus d’un système d’exploitation. Grâce à un processus appelé virtualisation, le logiciel incite chaque système d'exploitation à penser qu'il dispose d'un accès exclusif à un ensemble de matériel particulier. Il se situe entre le matériel physique et le système d'exploitation et présente un ensemble virtuel de matériel à tous les autres logiciels exécutés sur la machine. Il gère également le flux d'informations entre le logiciel, le matériel virtualisé et le matériel physique. Ce type de logiciel est utilisé dans les paramètres grand public et d'entreprise.
Dans la plupart des cas, le système d'exploitation d'un ordinateur s'exécute dans un état hautement privilégié dans lequel il dispose d'un accès illimité au matériel de la machine, tandis que les applications s'exécutent dans un état moins privilégié et doivent s'appuyer sur le système d'exploitation. Ces différents niveaux de privilèges d'accès au matériel sont appelés des anneaux, le système d'exploitation tournant traditionnellement dans l'anneau 0; Les applications utilisateur fonctionnent dans les anneaux 1 à 3, qui ont moins de privilèges. Ce modèle fonctionne bien la plupart du temps, mais s'effondre complètement lorsque vous essayez d'exécuter simultanément plusieurs systèmes d'exploitation sur un même ordinateur. Un hyperviseur résout ce problème en utilisant une technique appelée virtualisation.
La virtualisation n’est pas une idée nouvelle, mais elle est devenue un mot à la mode depuis le milieu des années 2000, alors que les entreprises et l’industrie des technologies de l’information ont pris conscience de son potentiel de réduction des coûts et d’accroissement de l’efficacité. Il existe de nombreuses approches différentes de la virtualisation, mais l’idée de base est de créer des ensembles simulés de matériel, souvent appelés machines virtuelles. Dans le cas d'un hyperviseur, qui peut également être appelé moniteur de machine virtuelle, chaque machine virtuelle contient un système d'exploitation "invité". L'hyperviseur lui-même peut fonctionner directement sur le matériel physique. Dans ce cas, il est appelé type «bare metal» ou dans un système d'exploitation hôte en tant qu'hyperviseur «logiciel».
Les hyperviseurs doivent utiliser des techniques très sophistiquées pour gérer leurs systèmes d'exploitation invités et s'assurer qu'ils ne sont pas en conflit les uns avec les autres. Dans la mesure où un système d'exploitation d'une machine virtuelle ne sait pas qu'il a été privé des privilèges de l'anneau 0, il peut tenter d'exécuter des fonctions restreintes sans autorisation. Dans ces cas, l'hyperviseur peut intercepter une fonction avant qu'elle n'atteigne le matériel, exécuter les instructions de manière à ne pas nuire aux autres systèmes d'exploitation exécutés sur le matériel et renvoyer le résultat au système d'exploitation d'origine. Connu sous le nom de technique «piège et émule», il ne s'agit que d'un des nombreux concepts avancés propres au monde de la virtualisation.
Ce type de logiciel étant devenu plus important et plus lucratif, de plus en plus de sociétés ont cherché des moyens d'alléger la charge d'un hyperviseur et d'améliorer les performances. Les éditeurs de logiciels ont modifié leurs systèmes d'exploitation pour prendre en compte les machines virtuelles sur lesquelles ils s'exécutent, ce qui signifie moins de scénarios d'interception et d'émulation. Les fournisseurs de matériel ont ajouté la prise en charge d'un nouveau niveau de privilèges, parfois appelé anneau -1. Les logiciels les plus récents peuvent tirer parti de l’une ou des deux techniques pour améliorer les performances.
On trouve maintenant des hyperviseurs dans une variété de produits, tant au niveau des consommateurs que des entreprises. Les produits grand public permettant à un système d'exploitation de fonctionner dans un autre utilisent souvent un hyperviseur de type logiciel. Dans l’espace entreprise, le logiciel permet de consolider des serveurs sous-utilisés exécutant différents systèmes d’exploitation. Les développeurs de logiciels peuvent utiliser cette approche pour exécuter plusieurs instances de systèmes d'exploitation similaires ou même identiques afin de tester les problèmes de compatibilité.