Virtualisation quésako ?

La virtualisation par HAL n’est ni une invasion d’ordinateur comme HAL dans 2001 l’odyssée de l’espace, ni une  l’intelligence artificiel. C’est un système de virtualisation. Alors qu’est ce la virtualisation ?

Nous allons effecter un rappel des différents niveaux d’un ordinateurs, avec une couche application, la plus haute puis viens les libraire qui peuvent être rélié aux système d’exploitation. Puis vient une couche d’implémentation de ce système d’exploitation par les drivers, le géstionnaire de mémoire, ou l’ordennanceurs. Arpès nous passons sur la couche hardware qui sont la mémoire reliée au bus qui lui-même relie les différent controlleurs des disque dur, carte réseaux, wifi, son.

Dans cette article nous allons nous intéressé au différente technique de virtualisation, chaque technique et sur une couche différente. Nous allons voir surtout le HAL qui est aux dessus des drivers, gestionnaire de mémoire, et de l’ordennanceur, il et aussi inférieur aux systèmes d’exploitations.

ISA : Instruction Set Architectures

Quel bénifice à utiliser la virtualisation ?

La virtualisation peut permettre une optimisation des ressources, en pouvant paramétré les différents besoins donc elle permette de mieux optimiser les ressouces d’un serveurs ou d’une application, elle permet de protogée ça machine par système de sandboxing, ou encore s’éxécuter sur différent environnement, de debbuguer des applications par exemple une application qui fais crasher le pc, on a pas à le redémarrer tout le temps mais juste à redémarrer la machine. Pour finir on peux aussi ce servir de la virtualisation pour tester, en isolant, contrainant ou configurer en envirronement spécifique.

La virtualisation est le principe d’émuler un système d’exploitation autrement dit un Operating System pour les Anglais.

Un exemple d’un système de Virtualisation  :

Il en existe plusieurs type de virtualisation :

  • L’émulation, il va recréer le même système, c’est la solution la plus complète, par exemple une Gameboy est un système très différent d’un ordinateurs, les instructions ne sont pas les mêmes. Grâce à l’émulation on peut rejouer à nos jeux d’avant. Les logiciels qui utilisent se type de virtualisation : QEMU, ou encore les émulateurs de console de jeux vidéo. L’émulation est un système ISA, il éxécute les instruction natif.
  • Une virtualisation au niveau de l’os par :
    • Librairie. On rajoute des Api à l’os principale pour faire fonctionner le système, par exemple le logiciel d’émulation de programme windows sous linux Wine.
    • Application . Par exemple java est un système de virtualisation avec ça JVM. On exécute du byte code java qui va le transformer en byte code machine.
  • Par HAL : cette technique de virtualisation cherche à rendre compatible les ressources virtuelle de la machine avec les ressource réelle. Les logiciel qui utilise cette technique son Vmware ESX ou encore XEN. Cette technique à besoin de l’HAL pour pouvoir effectuer ce transfert de ressource, et de pouvoir le configuré. Il va rajouter un couche entre le hardware physique et les drivers.

Qu’est ce qu’un HAL dans la virtualisation :

Figure représantant la position dans le système de la HAL

Dans notre cas hyperviseur ( qui est le logiciel permettant de simuler les différente VM) ce situe entre le couche Hardware ( CPU, Mémoire , … ) et la couche du Kernel.

Cette hyperviseur peux aussi contenir un noyaux comme dans le cas de XEN pour plus de précision sur l’architecture de XEN, vous pouvez consulter l’article ci dessus :

Les différents interactions de ces virtualisations.

Sur la figure ci-dessous, nous pouvons observer ou se citu l’hyperviseur.

Il y a deux 2 type d’hyperviseurs, un qui fonctionne par hal type 1. L’autre qui est branché sur l’os type 2.

Dans un système de Hal, l’hyperviseur interagis directement avec le hardware. L’hyperviseur agit comme une HAL pour les VM. Il implémente c’est propre hardware, et par une couche d’abstraction il met en place des drivers, des gestionnaire de mémoire, des ordonneuceurs , pour pouvoir permettre la parallélisation des VM.

Dans l’autre cas, il n’intéragis pas direction avec le hardware mais avec le système d’exploitation. Sur Virtualbox par exemple il utilise drivers d’os et librairie pour faire fonctionnais la machine . Sur QEMU il va transformer toutes les instructions du système émuler en instruction du système hôte.

Les avantages et incoviéniant des différentes virtualisations :

Système de virtualisation par HAL :

La virtualisation en utilisant un système HAL permet de réduire les latences qui peut avoir en passer directement par le système. En utilisant HAL ( full), l’hyperviseur utilise une VM complète indépendant du système. Ce qui lui confère une certaine flexibilité. Elle possède aussi des incovéniant par exemple en cas d’utilisation intensive de I/O.

L’HAL (parallèlle) : l’hyperviseur met en oeuvre des VM spécifique mais complète. Les VM sont rapide et lègère elle perde 0.5 % à 3 % si elle étais directement installer sur la machine. Le système de la VM coopère avec l’hyperviseur pour améliorer les IO et les ressources.

Inconvénient : Elle requière des instructions spécifique appelé hyperCall. La principale limite de cette technique et qu’il est nécessaire d’avoir un OS gestionnaire pour pouvoir permettre le partage des ressource et d’identifier les environements d’éxécutions, elle est donc plus difficile à mettre en place.

L’émulation (ISA) :

Elle permet de simulet tous un système en entier, si l’hyperviseur gère toute les instructions de la machine comme si elle s’éxécute à l’intérieur de la machine hôte. Permet d’effectuer des exécutions d’application sur du matériel qui sont pas compactible.

Par contre cette méthode et celle qui à la plus faible performance.

Système d’exploitation :

c’est un os modifier, elle possède comme avantage des rapide, légère et une facilité de management des ressources. Par contre dans la pratique elle plus difficle à implémenter car elle nécéssite un patch de l’os pour toute les machine virtuelle.

Librairie :

Permet d’avoir des librairie manquante. Par contre les preformance sont réduite.

Application :

Elle permet de facilité le déploiement des applications en plus de manager les ressource automatiquement. Elle est par contre plus long que du code native par exemple un code C est 4 fois plus rapide que du code java.

Pour résumé :

Voici un tabelau qui récapitule les preformance, la flexibilité, la facilité des d’implémentation et le degré d’isolation.


Conclusion :

Dans cet article, nous avons abordé la virtualisation en général, nous avons pu aborder seulement une partie de la virtualisation, il reste encore les système de docker, kubernetes.

Nous avons pu voir que pour chaque besoin il existe un type de virtualisation. Si on l’on souhaite exécuter une application sur un autre système on peut le virtualiser par un système de librarie ou alors sur serveur on il sera plus facile d’utiliser un système per HAL afin de mieux paramètrer les ressources. Pour mieux comprendre le fonctionnement de la HAL vous pouvez consulter la suite de l’artcile qui est le fonctionnement de XEN un hyperviseur utilisant une HAL.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.