• Aucun résultat trouvé

CHAPITRE 2 MIGRATION DE PROCESSUS

2.4 Migration de processus dans des systèmes hétérogènes

2.4.4 Projet Attardi

Dans [Attardi et al., 1988], la migration de processus par interprétation ou traduction est mise en œuvre à l’aide de la réflexivité. Dans ce contexte de migration de processus, la réflexivité utilise le mécanisme de réification et de réflexion.

Migration de processus par interprétation

Dans l'approche de l’interprétation, le même interprète s'exécute sur la machine source et sur la destination. Ceci revient à dire qu'il existe une machine universelle qui émule les deux ordinateurs. Le processus à migrer est mis sous forme d’une représentation indépendante de la machine. L’exécution du programme/processus consiste à interpréter la représentation indépendante de la machine. La migration consiste à communiquer la représentation à travers le réseau. La construction du mécanisme de migration implique la mise en œuvre des interprètes adaptés dans chaque machine et fournit un mécanisme de communication d’inter- machine approprié.

Dans l’approche de migration de processus via interprétation, une machine intermédiaire connue sous l’abréviation de HLACM (High Level Abstract Common Machine) [Attardi, 1987] est définie. HLACM est dérivée de la machine de Chaos de L. Cardelli [Cardelli, 1984] [Cardelli, 1983]. La machine universelle de haut niveau d'abstraction est essentiellement un interprète du bytecode. C'est une machine orientée-pile conçue pour supporter des langues fonctionnelles de haut niveau. Celle-ci fournit un mécanisme de mémoire indépendant de la machine.

HLACM fournit deux primitives: réification et réflexion. La réification s’opère du niveau de base vers le méta-niveau lorsque le premier subit une modification devant être reflétée dans le second. Elle fournit une représentation du processus (programme) en cours et de son état d’exécution. La réflexion, quant à elle, va du méta-niveau vers le niveau de base lorsqu’une

modification du premier doit s’opérer sur le second. La primitive réflexion crée un nouveau processus avec la représentation reçu en argument.

Chaque hôte du réseau doit disposer d'un interprète HLACM qui exécute un ensemble de processus géré par un ordonnanceur. Les processus sont fondamentaux dans la phase de migration. En fait, ils permettent de construire des schémas organisationnels de migration. Un des processus du système, connu sous le nom serveur de migration, assure la communication avec les autres hôtes sur le réseau en écoutant continuellement les demandes de connexion. Une demande est publiée en transmettant la requête au serveur de migration. Lorsque le serveur de migration reçoit une telle demande, il l’analyse et exécute l'action correspondante.

Lorsqu'un processus doit migrer vers un nouveau site pour l'exécution, le processus serveur reçoit la requête, il crée un nouveau processus et l’exécute dans le nouveau contexte. Une représentation indépendante de la machine est utilisée pour la migration des processus vers les autres machines.

HLACM résout le problème de migration de processus entre les machines de différentes architectures à l’aide d’une couche intermédiaire interprétée. Cette approche est intéressante mais peut présenter des inconvénients: l'efficacité (temps de migration), devient, d’abord, critique pour les grosses applications mais aussi la gamme de programmes, auxquels ces mécanismes de migration s’appliquent, demeurent limités. En effet, un programme peut migrer seulement s'il est compilé dans HLACM.

Migration de processus par traduction

Dans l’approche de la traduction, le programme/processus à migrer est mis dans un format qui dépend de la machine. Avant la migration, le processus doit être traduit en une description indépendante de la machine. Cette description peut ensuite être communiquée à la destination afin de poursuivre son exécution. La construction du mécanisme de migration implique la mise en œuvre des traducteurs appropriés sur chaque machine.

La machine HARP (abréviation pour Harlequin Abstract RISC Processor) [Hunter et Knightbridge, 1988] [Knightbridge et Hunter, 1987] est conçue afin de fournir un support particulier au mécanisme de migration de processus basé sur la traduction. HARP joue le rôle d'un formalisme indépendant de représentation de la machine dans laquelle tout état d'un processus peut être capturé. Le développement du modèle prend en compte la condition de traduction entre les descriptions de HARP et les représentations réifiées d'un hôte dépendant. Il est pertinent de mentionner qu’il existe une grande ressemblance entre la machine HARP et les processeurs les plus couramment utilisés dans le but de rendre cette traduction aussi simple que possible tout en conservant un niveau d'abstraction.

Chaque contexte de HARP représente un processus d'exécution. Le contexte et l'unité de manipulation de contexte permettent à la machine HARP de modeler le routage et fournissent un mécanisme de signal.

Lors de migration d’un processus d’une machine à une autre, HARP convertit toutes les adresses en références, puis en étiquettes lors de l'étape de la réification. Lors de la réflexion, les adresses doivent être récupérées. Ce mécanisme exige que le code de réification/réflexion puisse toujours distinguer entre les données et les pointeurs. Pour répondre à cette exigence, le système de marquage suivant est inclus dans la définition:

 Chaque bloc de mémoire est marqué selon qu’il contient un code ou des données;  Chaque registre peut être individuellement étiqueté selon qu’il contient une donnée ou

un pointeur. Les opérations empiler/dépiler transfèrent les informations de marquage de/vers l'élément supérieur de la pile de/vers le registre concerné.

La définition HARP évite toute restriction de la représentation locale du code. L'absence d'une syntaxe stricte sur le code réflexif permet aux traducteurs de remplacer des instructions de HARP du code natif équivalent indépendamment de sa taille. Rappelons qu’un code natif (ou langage machine) est composé d’instructions directement reconnues par le processeur sous-jacent.

Un registre global contenant un pointeur vers le début du prochain bloc de mémoire est attribué au processus en cours d'exécution. Ce mécanisme d’allocation de mémoire permet au code de HARP de créer de nouveaux blocs contenant du code ou des données. Ceci est essentiel pour la réflexion.

Une représentation du processus HARP prend la forme d'un bloc de code qui, lorsqu'il est exécuté, va recréer le processus initial. L'avantage de cette approche est que la représentation ait un contrôle explicite du processus de chargement. Ceci assure non seulement le rôle d'un chargeur dans les systèmes plus classiques mais également contient le programme/données à charger.