previous up next contents
Précédent : Programmation distribuée d'ordre Remonter : Actions de recherche Suivant : Récupération concurrente de

Un nouveau modèle de la concurrence

 

Participants : Cédric Fournet, Georges Gonthier

Mots clefs : parallélisme asynchrone, concurrence, programmation répartie

La formalisation de la sémantique des primitives de programmation distribuée décrites ci-dessus a conduit C. Fournet et G. Gonthier à proposer un nouveau modèle de la concurrence. En effet, le -calcul de Milner s'est révélé inadapté, parce que son pas de calcul élémentaire, le rendez-vous sur un canal, est très difficile à mettre en oeuvre en présence de pannes en milieu distribué.

Ce modèle, qui sera présenté à POPL 96 [5], admet deux formulations complémentaires. La première, la machine chimique abstraite réflexive, est un modèle de calcul dérivé de celui de Berry et Boudol. La seconde, le join-calcul, est un calcul de processus similaire au -calcul.

La MCA réflexive est à la fois une simplification et une généralisation de la machine chimique abstraite. D'une part, on interdit le filtrage non-linéaire dans les règles de réaction, ce qui rend le modèle beaucoup plus opérationnel. D'autre part, on ajoute la possibilité de créer dynamiquement de nouveaux types de molécules, ainsi que leurs règles de réaction (c'est la partie ``réflexive''). Ainsi, on remplace le petit nombre de règles complexes de la MCA par un grand nombre de règles simples.

La MCA réflexive suggère une nouvelle primitive de synchronisation, la définition conjointe de fonction. Celle-ci est mieux adaptée aux langages fonctionnels que le rendez-vous sur canaux, issu des langages impératifs ; par exemple, elle permet d'associer statiquement le texte d'une fonction à un envoi de message. Par ailleurs, les constructions plus classiques (rendez-vous, moniteurs, et même objets concurrents) se programment très facilement et très naturellement avec des définitions jointes.

Le join-calculus, qui n'est autre que le pendant syntaxique de la MCA réflexive, peut être vu comme une restriction du -calcul asynchrone. En effet, les primitives du le join-calculus sont l'émission asynchrone, la composition parallèle, et la définition jointe. Cette dernière permet de créer un ensemble de canaux qui ont un unique récepteur commun. Elle réunit donc en une seule primitive, la restriction, la garde et la réplication du -calcul. Grâce à cette restriction statique, les équivalences structurelles dans le join-calcul ont de meilleures propriétés théoriques. Malgré cette simplification, C. Fournet et G. Gonthier ont démontré que le join-calculus et le -calcul ont exactement la même puissance d'expression en exhibant des encodages réciproques complètements adéquats.


previous up next contents
Précédent : Programmation distribuée d'ordre Remonter : Actions de recherche Suivant : Récupération concurrente de