next up previous
Next: Support des communications réseau Up: Etude et résalisation d'un Previous: L'environnement I-Cluster

Réalisation

Le système (samory)1 est conçu en trois couches logicielles : des modules pour noyau Linux qui permettent d'observer et de récupérer le contexte des processus pris en charge; une bibliothèque d'appels systèmes pour l'interfaçage avec les modules et différents utilitaires pour contrôler le système.

Les capacités des modules Linux offrent des possibilités intéressantes, puisqu'on peut ainsi étendre les fonctions du noyau sans le recompiler. Ces capacités étant implémentées au niveau noyau, on peut surveiller et migrer n'importe quel type d'application. Le module noyau réalise la migration des ressources suivantes : l'espace d'adressage : la cartographie mémoire doit sembler inchangée à la reprise du processus. Le "nouveau" processus doit pouvoir générer et accéder aux mêmes adresses avec les mêmes attributs de protection. À la reprise du processus sauvegardé, nous disposons d'un processus enveloppe qui nous "prête" son contexte. Nous restaurons l'espace d'adressage par remplacement de ce contexte par notre sauvegarde (segments de code, données initialisées, données non initialisées, arguments, environnement, pile).

les signaux : encore appelés interruptions logicielles, ce sont des mécanismes qui permettent à un processus de se synchroniser avec d'autres processus ou événements du système, et de prendre une action appropriée (Terminaison d'un processus fils, expiration d'une temporisation, etc.). Nous gérons tous les types de signaux supportés par les applications Linux.

le contexte du processeur : il est constitué de l'ensemble des valeurs des registres du processeur relativement à l'application en cours d'exécution. Ces registres contiennent entre autre l'instruction en cours d'exécution et ses paramètres, ainsi que le prochaine instruction. La reprise de l'exécution doit commencer avec ces valeurs, qu'il faut par conséquent réintroduire dans les registres du nouveau processeur. Les deux processeurs (origine et cible) doivent donc être compatibles. Le système samory a été conçu pour la famille de processeurs Intel x86 et compatibles. La reprise des appels systèmes est un cas particulier, puisque leur code ne fait pas partie du contexte mémoire de l'application, et que les résultats ne sont disponibles qu'à la fin complète de l'appel. Lorsque le système se trouve en présence d'un appel système, ce dernier est tout simplement redémarré.

les fichiers réguliers : la sauvegarde et la reprise doivent permettre au processus de retrouver les mêmes descripteurs associés aux mêmes fichiers. Le système restaure les fichiers ouverts au moment de la sauvegarde, avec les mêmes permissions et drapeaux. Dans l'état actuel, il ne prend pas en charge le transfert des fichiers de la source à la destination, et suppose que le fichier est accessible par les mêmes moyens (système de fichiers de type NFS, disponibilité du fichier sur la machine locale avec le même chemin). Il ne vérifie pas non plus la cohérence des données.

les tubes : une des formes de communication inter-processus est l'utilisation de tubes. Au niveau du programmeur, un tube se présente comme un couple de fichiers, un en lecture et l'autre en écriture. Pour communiquer, un des processus écrit des données sur le tube, que l'autre peut lire. Au niveau système il s'agit de tampons alloués dans la mémoire noyau des processus. La migration de processus communicant par des tubes nécessite que les deux processus soient restaurés sur la même machine, et au même moment. Samory prend en compte cette contrainte.



Subsections
next up previous
Next: Support des communications réseau Up: Etude et résalisation d'un Previous: L'environnement I-Cluster
Jean-Michel Nlong2 2004-05-03