Paravirtualisation

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

En informatique, la paravirtualisation est une technique de virtualisation qui présente une interface logicielle similaire à du matériel réel à une machine virtuelle mais optimisée pour ce type de fonctionnement, contrairement à l'émulation d'un périphérique matériel existant qui peut s'avérer laborieuse et surtout lente.

La paravirtualisation permet aux moniteurs de machines virtuelles (MMV) d'être plus simples et aux machines virtuelles fonctionnant dessus d'atteindre un niveau de performance proche du matériel réel. Cependant, les systèmes d'exploitation doivent explicitement être portés afin de fonctionner sur des MMV paravirtualisées. Le portage des systèmes d'exploitation libres est généralement effectué, seulement il appartient aux fournisseurs de systèmes fermés de réaliser le portage eux-mêmes, ce qu'ils peuvent refuser de faire pour des raisons stratégiques.

Histoire[modifier | modifier le code]

Le mot « paravirtualisation » est un mot nouveau pour une idée ancienne. Le système d'exploitation d'IBM appelé VM/370 offrait déjà de telles fonctionnalités en 1972[1]. Dans le monde des machines virtuelles, on y fait référence par l'appellation « code de diagnostic », car il utilise des instructions habituellement utilisées par les logiciels de maintenance du matériel. Le Conversational Monitor System d'IBM utilise des codes de diagnostic pour faire appel aux services de la machine virtuelle.

Dans système d'exploitation Parallels Workstation, on appelle cela un « hypercall » ou hyper-appel. Contrairement à un appel système qui est traité par le noyau d'un système d'exploitation, l'hyper-appel traverse le noyau et remonte jusqu'à l'hyperviseur où il est traité. Puisque ces appels traversent le noyau du système d'exploitation invité, il faut que celui-ci le supporte explicitement afin de le faire remonter jusqu'à l'hyperviseur.

Le terme « paravirtualisation » a été utilisé pour la première fois dans la littérature scientifique en association avec le moniteur de machines virtuelles Denali[2]. Le terme décrit aussi la machine virtuelle Xen, la famille des micronoyaux L4 et l'hyperviseur temps réel embarqué TRANGO. Tous ces projets utilisent des techniques de paravirtualisation afin de parvenir à de la virtualisation à haute performance sur du matériel de type x86 en mettant en place des machines virtuelles qui n'utilisent pas les parties complexes à virtualiser du jeu d'instruction x86.

Suite à la prolifération de solutions de paravirtualisation sous Linux, chacune proposant une adaptation différente du noyau Linux, une solution commune est en cours de développement dans le noyau officiel[3] : virtio. Elle voit ses débuts dans la version 2.6.24 et de nombreuses améliorations sont en cours dans la branche 2.6.25. Cette interface est déjà utilisée par certains hyperviseurs, comme KVM.

La paravirtualisation est aussi utilisée sur du matériel non x86 comme sur les plateformes ARM ou PowerPC.

Comme exemple d'utilisation de la paravirtualisation on peut prendre les cartes réseaux que présentent certaines machines virtuelles aux systèmes d'exploitation invités. Plutôt que de s'acquitter de la lourde tâche de reproduire le fonctionnement de la carte réseau classique, le MMV présente une carte très simple qui permet l'envoi direct des paquets par accès direct à la mémoire, même si la carte du système réel ne supporte pas cette fonctionnalité.

Références[modifier | modifier le code]

  1. (en) « VM History and Heritage », IBM,‎ 2007-10-10
  2. A. Whitaker, M. Shaw, and S. D. Gribble, « Denali: Lightweight Virtual Machines for Distributed and Networked Applications », Univ. of Washington Technical Report 02-02-01, (2002). (Disponible sur Denali publications, technical reports, and talks)
  3. « Une interface de programmation pour les entrées / sorties virtuelles » : virtio

Liens internes[modifier | modifier le code]