• Aucun résultat trouvé

5.2 Prototypage et étude de l’efficacité du logiciel de contrôle

6.1.2 Théorème de virtualisation de Popek et Goldberg

Dans le cadre de virtualisation de Popek et Goldberg, nous disposons d’un ensemble de propriétés attendues d’un hyperviseur, qui s’appliquent également à notre logiciel de contrôle. Ces propriétés portent sur le contrôle d’opérations interdites pour le logiciel invité, appelées instructions sensibles. Comme illustré sur la figure 6.2, l’exécution du logiciel invité est interrompue par des phases d’exécution de l’hyperviseur. Pour empêcher le logiciel invité d’exécuter des instructions sensibles, l’hyperviseur doit donc se reposer sur la configuration du processeur.

À cet effet, Popek et Goldberg supposent que le processeur dispose de deux niveaux de privilèges : superviseur et utilisateur. Au niveau superviseur, toutes les instructions sont exécutées normalement. Au niveau utilisateur, certaines instructions, dites privilégiées, ne sont pas autorisées. Si le logiciel tente malgré tout d’en exécuter une, le processeur lève une exception appelée piège32. Cette exception s’accompagne d’un changement de privilège vers le niveau superviseur, et est dirigée vers l’hyperviseur. L’ensemble des instructions privilégiées est une propriété du processeur. Nous n’avons pas, ou à la marge, la possibilité d’influer sur cet ensemble.

Popek et Goldberg introduisent le théorème suivant, qui est une condition suffisante pour l’existence d’un hyperviseur :

Théorème 6.1 (Théorème de virtualisation [69]). Un hyperviseur vérifiant les propriétés

d’efficacité, de contrôle des ressources et d’équivalence peut être implémenté si chaque instruction sensible est privilégiée.

Démonstration :

Nous reprenons ici les grandes étapes de la preuve du théorème de virtualisation, exposée dans l’article original. Les auteurs admettent que l’hypothèse suivante est vraie :

6.1. Cadre de virtualisation de Popek et Goldberg

Hypothèse 6.1(Jeu d’instruction émulable). Pour chaque instruction privilégiée, il existe

une séquence d’instructions qui, lorsqu’elles sont exécutées au niveau de privilège super- viseur, reproduisent le comportement de ladite instruction, en assurant les propriétés d’équivalence et de contrôle des ressources.

Autrement dit, au terme de cette séquence d’instruction, l’altération de l’état du processeur (registres et mémoire) provoquée par une instruction privilégiée peut être reproduite explicitement par une séquence d’instructions. Dans le contexte dans lequel se placent les auteurs, on peut légitimement admettre cette hypothèse, pour deux raisons : • D’une part la description d’un jeu d’instructions fournit les informations suffisantes pour connaître exactement l’état du processeur après exécution d’une instruction. On peut prendre pour exemple les jeux d’instructions PowerPC [73] et ARM [16]. • les vecteurs d’exception disposent des structures de données nécessaires pour manipuler directement l’état du processeur, c’est-à-dire l’état des registres avant exécution de l’instruction privilégiée. Ils sont également capables de restaurer un état altéré par du logiciel. Il est donc possible de reproduire l’état du processeur après exécution de l’instruction, mais aussi d’altérer la manière dont les ressources sont effectivement allouées, tout en donnant l’illusion au logiciel invité qu’il a correctement exécuté son instruction.

On vérifie ainsi la propriété de contrôle des ressources, ainsi que la propriété d’équi- valence pour les instructions privilégiées.

La partie principale de la preuve du théorème de virtualisation vise à montrer la propriété d’équivalence, les propriétés de contrôle de ressources et d’efficacité étant sup- posées par les auteurs comme induites par la définition d’une machine virtuelle. Pour montrer la propriété d’équivalence pour toute séquence finie d’instructions, les auteurs raisonnent par récurrence.

La condition initiale consiste à montrer la propriété d’équivalence pour toute instruc- tion. Les auteurs distinguent le cas d’une instruction neutre [69, Lemme 1] de celui d’une instruction sensible [69, Lemme 2] :

• Dans le cas d’une instruction neutre, si cette instruction n’est pas privilégiée, elle n’est pas interrompue et la propriété d’équivalence est implicitement vérifiée. Si elle est privilégiée, la propriété d’équivalence découle de l’hypothèse d’émulation du jeu d’instructions.

• Dans le cas d’une instruction sensible, cette instruction est par définition privilé- giée. La propriété d’équivalence découle également de l’hypothèse d’émulation du jeu d’instructions.

En supposant la condition initiale vraie, les auteurs montrent que si une séquence d’instructions vérifie la propriété d’équivalence, cette séquence augmentée d’une instruc- tion la vérifie toujours [69, Lemme 3]. Reprenons les notations des auteurs, à savoir Si l’état du processeur vu du logiciel invité, Sj = f (Si) l’état réel du processeur, ei une séquence d’instructions vérifiant la propriété d’équivalence, t une instruction simple, qui par hypothèse vérifie la propriété d’équivalence, e0

i et t

0 les séquences d’instructions équivalentes, et tei et t0e0i la concaténation de t et t

0 avec les séquences e

i et e0i.

Chapitre 6. Stratégie de contrôle du processeur

Nous avons les relations f(t(Si)) = t0(f (Si))et f(ei(Si)) = e0i(f (Si)). Cela implique les égalités suivante :

f (tei(Si)) = f (t(ei(Si))) = t0(f (ei(Si))) = t0(e0i(f (Si))) = t0e0i(f (Si))

Ainsi la séquence tei a pour séquence équivalente t0e0i. Elle vérifie ainsi la propriété d’équivalence, ce qui prouve l’hypothèse de récurrence.

Discussion : On pourra noter que la notion d’efficacité est revendiquée dans le théo-

rème, mais n’est pas abordée dans la preuve. Les auteurs admettent cette propriété dans la définition d’une machine virtuelle. Au sens strict, cette propriété signifie qu’une ins- truction neutre n’est pas privilégiée, car dans le cas inverse, l’hyperviseur serait contraint de l’émuler à l’identique. Or le théorème de virtualisation ne suppose pas cette assertion. C’est ce qui a motivé la définition de Smith et Nair [90], présentée précédemment, qui considèrent l’efficacité non pas comme une exigence mais comme une bonne propriété, ce qui permet d’appliquer le théorème de virtualisation dans un plus grand nombre de cas. En pratique, sur les processeurs actuels, le problème se pose peu. Les instructions sensibles sont connues des fabricants. Ce sont les mêmes pour un système d’exploitation que pour un hyperviseur, seule la manière de les émuler est différente. Par conséquent, seules celles-ci sont privilégiées. La définition exacte de Popek et Goldberg coïncide avec la définition moins restrictive de Smith et Nair, avec éventuellement quelques écarts mineurs.

Dans notre cas, le type de contrôle est différent, et n’a pas été prévu par le fabricant de processeurs. Par conséquent il faut s’attendre à ce que la propriété d’efficacité, telle que définie par Popek et Goldberg, ne soit pas vérifiée. Autrement dit, le logiciel de contrôle interviendra à certains moments dans des situations où le logiciel utile n’aurait pas émis d’accès. Ce type de situation est indésirable, mais pas rédhibitoire pour que le logiciel de contrôle fonctionne correctement. Il est donc pertinent de considérer la notion d’efficacité selon la définition de Smith et Nair. 8.

Synthèse : Nous avons résumé le cadre dans lequel Popek et Goldberg ont défini la

notion d’hyperviseur, qui est une forme de logiciel de contrôle portant sur l’allocation de ressources matérielles à des machines virtuelles. Nous effectuons une analogie entre notre logiciel de contrôle, qui porte sur les accès à ces ressources, et la notion d’hyperviseur. Cette analogie se justifie par la similarité des propriétés attendues des logiciels de contrôle, à savoir le fait de contrôler l’intégralité des opérations sensibles, tout en étant aussi peu intrusif que possible.

L’analogie avec les concepts manipulés est pertinente. Dans la section suivante, nous nous appuyons sur ces notions pour définir un cadre dans lequel nous précisons la notion d’évènement sensible, qui fait l’objet du contrôle, et les propriétés attendues du logiciel de

6.2. Cadre analogue pour le logiciel de contrôle