• Aucun résultat trouvé

Validations dans RCCS

Dans le document Algèbres de Processus Réversibles (Page 57-60)

4.2.1 Transactions. . . 45 4.2.2 Factorisation de traces. . . 47 4.2.3 Théorème transactionnel. . . 48 4.2.4 Programmation Concurrente Déclarative. . . 50 4.3 Discussion. . . . 51

Au chapitre 1 nous avons vu comment définir la correction d’un proces-sus CCS en fonction d’un LTS de référence. L’idée formalisée par Milner est que le processus CCS correspondant à l’implémentation d’un problème doit être indistingable de sa spécification pour un ensemble d’observations donné. Pour les systèmes RCCS, le problème est donc d’abord de situer ce qu’on est capable d’observer d’une trace de calcul. Comme nous l’avons brièvement suggéré en fin de chapitre précédent, dans l’algèbre réversible que nous avons pour le moment définie, il n’est pas possible de parler d’observations stables, attendu que toutes les interactions d’un système sont potentiellement réver-sibles. Or une transaction est basée sur l’idée qu’une séquence d’actions précaires, peut être in fine validée dès que le consensus est atteint. Pour formaliser des processus transactionnels avec RCCS et répondre à la moti-vation originelle, nous introduisons dans ce chapitre les occurrences d’actions irréversibles. L’idée directrice étant que les transitions classiques d’un sys-tème RCCS correspondent à la partie recherche du consensus, tandis que les transitions irréversibles servent à valider les changements d’états obte-nus après consensus. Nous introduisons, dans un premier temps les quelques changements syntaxiques et opérationnels nécessaires à la mise en place des

4.1. VALIDATIONS DANS RCCS. 43 actions irréversibles. Nous verrons ensuite comment formaliser le concept de transaction dans ce formalisme, puis nous énoncerons un théorème transac-tionnel permettant de définir le comportement observable et pérenne d’un système en fonction du système de transitions causales de son processus

simple1. Nous verrons en conclusion, qu’en se servant de ce théorème on

peut définir un mode de programmation pour les systèmes distribués, dit déclaratif, qui simplifie à la fois le travail du programmeur et la vérification des programmes engendrés. Nous terminerons par une brève comparaison avec les approches existantes.

4.1 Validations dans RCCS.

Syntaxe. On considère à présent des processus simples dans lesquels on

marque certaines capacités d’actions. Ces dernières sont simplement sou-lignées dans le processus et seront interprétées comme étant irréversibles dans la sémantique de RCCS. Il s’agit là de la seule interaction entre le programmeur et le mécanisme de retour arrière : préciser quelles actions du processus marquent la conclusion positive de la recherche d’un consensus.

On note p ∈ Pm un processus contenant des capacités marquées comme

dans :

p :="t.0 ! ¯t.a ! ¯t.b$\t

où les actions entreprises sur a ou b sont déclarées irréversibles. Noter qu’on peut aussi rendre irréversibles des actions internes. On pourra, par exemple, simuler le processus (¯x.p ! x.q)\x par (¯x.p ! x.τ.q)\x. Ces processus sont en fait équivalents comme nous le verrons par la suite.

Mis à part ces capacités marquées, la syntaxe des systèmes RCCS reste similaire à celle donnée Section 2.1 avec l’ajout d’un type de mémoire

par-ticulier '|α|(· m, indiquant que la pile mémoire m à été validée par l’action

α; la mémoire sera alors dite fermée. La syntaxe modifiée est :

r, s ::= (r ! s) | r\x

| m % p avec p ∈ Pm Processus

m, m! ::= '#, α, p(· m |'m", a, p(· m |'1(· m |'2(· m |'(

| '|α|(· m Pile fermée

Sémantique opérationnelle. Nous ajoutons à la sémantique

opération-nelle donnée figure 2.1 une règle de validation :

m % α.p + q −→m:α '|α|(· m % p (commit)

44 CHAPITRE 4. SYSTÈMES TRANSACTIONNELS. Noter que nous n’effaçons pas la mémoire fermée par l’action α, dans un souci de maintenir la cohérence des mémoires. Par ailleurs, une action de validation peut avoir pour effet de bord de clore d’autres piles mémoires. Une opération de ramasse-miettes sur les mémoires fermées ne peut donc se

faire uniquement localement2. On définit la règle de synchronisation pour

les actions de validation complémentaires : r−→ rm:α ! sm−→ s": ¯α !

r ! sm,m−→ r" ! ! s!

(com − synch)

Les transitions de RCCS avec validations sont donc de la forme t = )r, µ, ζ, r!+

avec ζ := α | α | α. Le LTS partiellement réversible, est obtenu en ajoutant

les règles de validations(commit) et(com-synch) au LTS de la figure 2.1. On

utilise A pour désigner l’ensemble des actions positives étiquetant les

tran-sitions de ce LTS, A pour l’ensemble des actions négatives et K ⊆ A pour

celui des actions irréversibles.

Équivalence. On dispose à présent d’un calcul dans lequel des transitions

irréversibles se mêlent à des retours arrière. Comme nous l’avons vu en intro-duction de ce chapitre, une bonne notion d’équivalence se doit de mettre en relation des systèmes RCCS avec leurs correspondants stables. On devrait

ainsi pouvoir dire que le système'(% a + b est équivalent au processus simple

a.0, l’action sur b étant toujours précaire. Dans cet esprit, seules les actions de validations seront observables et on applique la définition 1.2.1 en pre-nant K comme ensemble d’observables (et en oubliant l’information donnée par les mémoires dans les transitions RCCS). Étant donné un processus p et un ensemble de validations K, on cherche donc à comprendre quel processus stable (i.e unidirectionnel) est bisimilaire à *(p). Clairement, si K = A le sys-tème obtenu est bisimilaire à p : puisque toute action est irréversible, RCCS se comporte exactement comme CCS. À l’opposé, lorsque K = ∅ toutes les actions sont réversibles et le système ne progresse jamais ; par conséquent, *(p) ≈ 0. La question clef est donc de caractériser le comportement de *(p) lorsque K n’est ni A ni ∅. Nous répondrons à cette question dans la section suivante ; en attendant, nous pouvons d’ores et déjà écarter une mauvaise intuition, à savoir que se restreindre à l’observation des actions irréversibles dans K, ne suffit pas pour avoir p ≈ *(p).

Exemple 4.1.1 Soit p := (a + τ) ! b, le diagramme suivant montre que

p '≈ *(p). Il est, en effet, possible de masquer des validations par des actions

2Nous montrons un méthode pour définir un tel ramasse-miettes dans le chapitre de conclusion du mémoire.

4.2. ÉQUIVALENCE COMPORTEMENTALE. 45

Dans le document Algèbres de Processus Réversibles (Page 57-60)

Documents relatifs