La théorie de Popek et Goldberg : les pré-requis de la virtualisation (suite)

img-ressources-processeur-psd-aqua16-1365.jpgCe billet fait suite au billet précédent sur la théorie de Popek et Goldberg ainsi que la mise dans le contexte historique de cette théorie.

Nous avons vu précédemment les trois contraintes imposés au VMM par leur théorie. Pour rappel, le VMM (Virtual Machine Monitor) est la couche applicative de virtualisation.  L’objectif de leur théorie est d’établir les pré-requis nécessaires à la virtualisation. Les trois contraintes servent de base à ces pré-requis et sont en quelque sorte les pré-requis élémentaires. La suite de leur papier s’attache à énoncer des règles plus spécifiques quand à ces pré-requis.

Trois groupes d’instructions processeur

Ils ont tout d’abord distingué trois groupes d’instructions processeur. Leur théorie étant plutôt générique, ces instructions ne sont pas mentionnées nominativement. Elles sont évoqués par leur comportement. Le processeur dispose de deux modes d’exécution : le mode utilisateur et le mode privilégié. Les instructions « utilisateur » sont les instructions classiques de calcul alors que les instructions « privilégiées » sont les instructions de manipulation de données.

Le premier groupe d’instructions processeur est le groupe des instructions privilégiées. Ces instructions nécessitent donc que le processeur soit en mode privilégié pour être exécuté. Si ce n’est pas le cas, elles sont « piégées » (de l’anglais trap) par le système afin d’être traités par le VMM. Le « piège » consiste en un changement de contexte et un traitement de l’instruction par le VMM qui décidera de la suite à donner à cette instruction. Il peut soit l’ignorer soit émuler son fonctionnement.

Le second groupe d’instructions processeur est le groupe des instructions sensibles à la configuration. Ces instructions qui va modifier la configuration du système physique. Ce groupe inclut les instructions visant à à modifier la quantité de mémoire disponible à un processus ou celles visant à changer le mode du processeur sans être « piégées ».

Le troisième groupe d’instructions processeur est le groupe des instructions sensible au comportement. Il s’agit des instructions dont le comportement est impacté par la localisation son exécution. Ce groupe inclut les instructions visant à lire une zone de mémoire vive spécifique ou à se déplacer dans la mémoire vive.

Les trois théorèmes

Après avoir posé tout ces pré-requis, ils énoncent ensuite le coeur de leur théorie, à savoir les théorèmes. Le premier théorème porte sur la possibilité de virtualisation une architecture processeur. Le second théorème porte sur la possibilité de faire de virtualisation récursive, à savoir faire fonctionner plusieurs machines virtuelles dans une machine virtuelle. Le troisième porte sur la possibilité d’exécuter des HVM (Hybrid Virtual Machine) sur une architecture processeur. Un HVM au sens de Popek & Goldberg est une VM pour laquelle une majorité d’instructions sont interprétées par le VMM.

Le premier théorème énonce que pour qu’une architecture processeur soit virtualisable il faut que les instructions sensibles fassent parti des instructions privilégiés.

For any conventional third generation computer, a virtual machine monitor may be constructed if the set of sensitive instructions for that computer is a subset of the set of privileged instructions.

L’architecture la plus répandue actuellement ne répond pas à ce théorème, il y a quelques instructions qui posent problème d’où la nécessité d’utiliser les techniques de virtualisation que nous connaissons aujourd’hui.

Le second théorème énonce qu’il est possible de faire de la virtualisation récursive sur une architecture processeur si elle répond au premier théorème et qu’un VMM sans dépendance de temps peut être élaboré.

A conventional third generation computer is recursively virtualizable if it is : virtualizable and a VMM without any timing dependencies can be constructed for it.

Le troisième théorème énonce  qu’un HVM est réalisable si les instructions sensibles exécutables en mode utilisateur font partie des instructions privilégiées.

A hybrid virtual machine monitor may be constructed for any conventional third generation machine in which the set of user sensitive instructions are a subset of the set of privileged instructions.

Au final, je pense avoir fait le tour de la théorie de Popek et Goldberg. Je suis conscient que ce sujet est assez compliqué à appréhender. Je ne pense pas avoir été d’une clarté légendaire mais j’espère avoir clarifié quelque peu cette théorie. Si vous souhaitez en savoir plus sur cette théorie, je vous invite à lire le document initial (maitrise de l’anglais requise).