Popek & Goldberg : les maîtres Jedi de la virtualisation

Gerald J. Popek (1946 – 2008)

Connaissez-vous Popek ? Goldberg ? Les deux ? Non ? Alors rattrapez-vous : ce sont deux chercheurs en informatique des années 70-80, considérés comme les précurseurs de la virtualisation. Ils posent les premières définitions d’une “VM” et d’un VMM (“Virtual Machine Monitor” = hyperviseur) ou moniteur de machine virtuelle.

Ils publient en 1974 “Formal Requirements for Virtualizable Third Generation Architectures”, surnommé Popek and Goldberg virtualization requirements. Cet article détaille un ensemble de conditions suffisantes pour qu’une architecture informatique puisse prendre en charge efficacement la virtualisation d’un système.

Note : l’article original est disponible ici : http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.141.4815&rep=rep1&type=pdf

Trois contraintes imposées à l’hyperviseur

Équivalence

Ce critère implique qu’une application quelconque doit s’exécuter de la même manière qu’elle soit exécutée au-dessus d’un hyperviseur ou sur machine physique. Ceci est nuancé par la disponibilité des ressources physiques qui peuvent modifier la temporalité de l’exécution d’un programme.

Efficacité

Ce critère indique qu’une majeure partie des instructions est exécutée par le processeur directement sans intervention de l’hyperviseur. Ce critère exclut donc les émulateurs.

Contrôle des ressources

Ce critère indique que l’hyperviseur doit avoir le contrôle exclusif des ressources à partager. N’importe quelle application doit donc passer par l’hyperviseur pour pouvoir accéder à une ressource partagée.

Ces trois critères servent de base à la suite de l’article de Popek & Goldberg.

Trois groupes d’instructions processeur

Le processeur dispose de deux modes d’exécution :

  • le mode utilisateur : instructions classiques de calcul
  • le mode privilégié : instructions de manipulation de données

→ 1er groupe : Les instructions privilégiées. Ces instructions nécessitent donc que le processeur soit en mode privilégié pour être exécutées. Si ce n’est pas le cas, elles sont trapped (piégées) par le système afin d’être traités par l’hyperviseur. Le trap consiste en un changement de contexte et un traitement de l’instruction par l’hyperviseur qui décidera de la suite à donner à cette instruction. Il peut soit l’ignorer soit la traiter.

→ 2e groupe : Les instructions sensibles à la configuration. Ces instructions vont modifier la configuration du système physique, comme la quantité de mémoire disponible pour un processus ou celle visant à changer le mode du processeur sans être « piégées ».

→ 3e groupe : Les instructions sensibles au comportement. Ces instructions sont impactées par leur localisation lors de leur exécution et visent à lire une zone de mémoire vive spécifique ou à se déplacer dans celle-ci.

Trois théorèmes

Instructions sensibles

Pour qu’une architecture processeur soit virtualisable il faut que les instructions dites « sensibles » fassent parties des instructions privilégiées.

Dépendance de temps

Il est possible de faire de la virtualisation récursive (une VM dans une VM) sur une architecture processeur si elle répond au premier théorème et qu’un hyperviseur sans dépendance de temps est possible.

HVM

HVM (Hybrid Virtual Machine = une VM pour laquelle une majorité d’instructions est interprétée par l’hyperviseur) est réalisable si les instructions sensibles exécutables en mode utilisateur font partie des instructions privilégiées.

Alors, avouez-le… ils sont cool non Popek & Goldberg ?

Laisser un commentaire

Votre adresse e-mail 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.