Précédent : Ordre causal Remonter : Problèmes
fondamentaux Suivant : Cohérence de mémoires réparties
d'objets
Depuis plusieurs années, nous étudions les problèmes liés à l'analyse du comportement d'une application répartie au cours d'une exécution. En particulier, nous nous focalisons sur le problème de la détection de propriétés. Notre contribution dans ce domaine a consisté à définir formellement de nouvelles classes de propriétés et à proposer des algorithmes répartis permettant de détecter si ces propriétés sont satisfaites ou non durant une exécution.
Dans tous nos travaux, nous présentons le problème de la détection de propriétés comme une variante d'un problème de reconnaissance de langage. Le calcul réparti est modélisé sous la forme d'un graphe orienté acyclique. Les sommets du graphe correspondent à des états (locaux ou globaux suivant le type de propriété que l'on cherche à détecter). Les arcs du graphe sont le reflet des relations de précédence causales qui existent entre les états. Des prédicats de bases (locaux ou globaux) sont exprimés sous forme d'expression booléenne portant sur les valeurs des variables gérées par les processus de l'application. Ces prédicats de base sont identifiés de manière unique par une lettre (ou symbole). Par définition, un symbole est associé à un sommet du graphe si l'état correspondant satisfait le prédicat de base ainsi identifié. L'ensemble des symboles spécifiés constitue un alphabet. Nous appelons motif, tout langage défini sur cet alphabet. Le rôle d'un algorithme de détection est de comparer un ensemble de motifs spécifiés avec l'ensemble des motifs observés au cours de l'exécution. Cette comparaison se fait en visitant les sommets du graphe selon la stratégie du tri topologique. Une règle de satisfaction (ou opérateur modal) précise les modalités de comparaison.
Dans [3], une propriété est définie comme la combinaison d'un motif et d'une règle de satisfaction. Ce travail, réalisé en collaboration avec Ö. Babaog lu de l'Université de Bologne, a permis de reformuler différents algorithmes de détection de propriétés en présentant ceux-ci dans un cadre général unique. Lors de la visite d'un sommet du graphe, nous considérons l'ensemble des mots reconnus sur un chemin allant d'un sommet source à ce sommet particulier. Le motif spécifié étant un langage régulier, la comparaison avec l'ensemble des mots observés se fait au moyen d'un automate d'états fini.
En collaboration avec M. Mizuno de l'Université de l'état du Kansas, nous avons proposé quatre règles de satisfaction différentes [25]. Trois d'entre elles correspondent à des opérateurs modaux déja connus. Après avoir formellement spécifié ces règles et indiqué les correspondances avec les opérateurs modaux déjà existants, nous avons proposé un algorithme permettant de détecter, au cours d'un seul parcours du graphe, les quatre propriétés pouvant être obtenues à partir d'un même motif. Des algorithmes spécifiques peuvent aisement être dérivés de l'algorithme général lorsqu'une seule des propriétés doit être détectée.
Dans [26], nous définissons une classe très générale de propriétés (appelées colliers de diamants) qui inclut les propriétés classiques rencontrées dans le domaine de la mise au point des programmes répartis. De telles propriétés sont définies en spécifiant plusieurs motifs réguliers et en associant une règle de satisfaction à chacun. Les séquences atomiques de prédicats locaux (définies en 1993) se révèlent être un type particulier de collier de diamants pouvant être détecté à la volée sur le graphe des états locaux.
La détection de propriétés sur les états globaux cohérents est coûteuse en temps et en espace mémoire (elle nécessite la construction de l'ensemble de ces états). Dans le but de réduire ces coûts, nous avons étudié le problème de la détection des conjonctions de prédicats locaux. Avec Mukesh Singhal de l'Université de l'état de l'Ohio et Masaaki Mizuno de l'Université de l'état du Kansas, nous avons montré que ce type de propriétés pouvait être détecté en cours d'exécution sans émettre de messages supplémentaires et sans désigner un processus particulier chargé d'effectuer la détection [24].