Exercice 1 : Algorithme d'exclusion mutuelle de Dijkstra ( 50min) (7.5 pt) On considère un système constitué d'un anneau de N + 1 processus en parallèle P 0... P N : P 0 P N P 1 P 2 Chaque processus P i possède une variable notée x i qui prend des valeurs dans N. Ces processus doivent eectuer une action critique, notée AC(), en exclusion mutuelle. L'action critique n'est pas spéciée, on sait uniquement qu'elle ne modie pas les variables x i. À l'exception du processus P 0, les processus P 1 à P N ont tous le même comportement. Le comportement du processus P i est déni par le STE suivant à une unique transition τ i. [x i x i 1 ] AC() ; x i := x i 1 Le processus P 0 a un comportement particulier déni par le STE à une seule transition τ 0 : [x 0 = x N ] AC() ; x 0 := x 0 + 1 À l'initialisation du système, tous les processus commencent avec leur variable x i initialisée à 0. L'objectif de cette partie et de démontrer la propriété suivante : À tout instant de l'exécution du système P 0... P N, il n'y a qu'un seul processus qui peut eectuer l'action critique AC(). Partie 1 Étude du principe sur un exemple ( 10min) a) (.5 pt) Pour N = 1, calculez le produit P 0 P 1. b) (1 pt) À l'aide d'un exemple, justiez qu'il n'est pas possible de donner une borne supérieure aux valeurs que peut prendre la variable x 0. c) (.25 pt) Dénissez l'ensemble, Q c des états du graphe des comportements du système P 0... P N (produit des N + 1 processus). d) (.25 pt) Pour un N xé, peut-on construire le graphe des comportement du système P 0... P N? Justiez votre réponse.
Partie 2 Construction du STE abstrait du système P 0... P N ( 40min) On considère l'abstraction dénie par les prédicats : def def def def Φ 0 = (x N x 0 ), Φ 1 = (x 0 = x 1 ), Φ 2 = (x 1 = x 2 ),..., Φ N = (x N 1 = x N ) On vous fait remarquer que pour tout i [0, N], le prédicat Φ i correspond à la négation de la garde de la transition du processus P i. e) (.25 pt) Dénissez l'ensemble, Q a, des états abstraits et donnez sa taille. Correction Q a = { b 0, b 1,..., q Q c, b i = Φ i (q)} Q a = 2 N+1 f) (.25 pt) Calculer l'ensemble, Q a 0, des états initiaux abstraits. Correction Q a 0 = α(q c 0) = { T,F,...,F } g) (3.5 pt) Construire le STE abstrait du système P 0... P N en commençant le calcul des transitions à partir de l'état initial abstrait. Justiez vos calculs. Indication 1 : Pour raisonner, vous pouvez construire au brouillon le STE abstrait dans le cas N = 1. Indication 2 : Pour la rédaction, considérez les trois cas suivants : la transition τ 0, les transitions τ i pour i [1, N 1] et la transition τ N. h) (1.5 pt) Démontrez que dans tous les états accessibles depuis l'ensemble d'états initiaux, il n'y a toujours qu'un seul des prédicats Φ i qui vaut faux et conclure que la propriété est satisfaite. Justiez votre conclusion.
Solution de la question 2.g) Cas de la transition τ 0 (1 pt) } 0 = x 1, x 1 = x 2 b 0 b 1 b 2,..., x N 1 = x }{{ N } [x 0 =x n] x 0 :=x 0 +1 τ 0, b 1,..., b N La transition n'est jouable que si la garde vaut vraie, c'est-à-dire si x 0 = x N, ce qui impose b 0 = F. Détermination des booléens à b N, b 1,..., b N = } 0 = x 1, x 1 = x 2,..., x N 1 = x }{{ N [x } 0 x 0 + 1] b 1 b 2 = x 0 + 1 x N, x 0 + 1 = x 1, x 1 = x 2,..., x N 1 = x N b 2 b 1 b N Puisque x 0 = x N, on sait que x 0 + 1 x N et donc vaut T. Si b 1 vaut T, c'est-à-dire x 0 = x 1, alors x 0 + 1 x 1 et donc b 1 vaut F. Par contre, si b 1 vaut F, c'est-à-dire x 0 x 1, alors on ne peut rien conclure concernant la condition x 0 + 1 = x 1 qui peut valoir T (si x 1 valait x 0 1) ou F (pour toute autre valeur de x 1 ). Conclusion La transition τ 0 donne les transitions abstraites suivantes : F, T, b 2,..., τ0 T, F, b 2,..., F, F, b 2,..., τ0 T, b 1, b 2,..., Dans le cadre de l'examen, seule la première transition nous intéresse puisqu'on part de l'état initial abstrait F, T,..., T. Cas des transitions τ i, i [1, N 1] (1 pt) Forme générale de la transition : [x i x i 1 ] x i :=x i 1 }{{ N,..., x } i 2 = x }{{ i 1, x } i 1 = x i, x i = x }{{ i+1,..., x } N 1 = x }{{ N } τ i,..., b N b i b 0 b i 1 b i+1 La transition n'est jouable que si la garde vaut vraie, c'est-à-dire si x i x i 1, ce qui impose b i = F. Détermination des booléens à b N,..., b i 1, b i, b i+1,..., b N = }{{ N,..., x } i 2 = x }{{ i 1, x } i 1 = x i, x i = x }{{ i+1,..., x } N 1 = x }{{ N [x } i x i 1 ] b i 1 b i b i+1 b N = }{{ N,..., x } i 2 = x }{{ i 1, x } i 1 = x i 1, x i 1 = x i+1,..., x N 1 = x N b 0 b i 1 b =T i Il est clair qu'après la transition τ i, le booléen b i vaut T. Les booléens b 0 à b i 1 et b i+2 à ne sont pas modiés puisque l'aectation modie uniquement la variable x i qui apparaît uniquement dans les prédicats Φ i et Φ i+1. b i+1
Détermination du booléen b i+1 (x i 1 = x i+1 ) Dans le cas où b i+1 vaut F, on ne peut rien conclure sur la valeur de b i+1 qui peut valoir T ou F. Dans le où b i+1 vaut T, on se trouve dans le cas suivant : } 0 = x 1,..., x i 2 = x i 1, x i 1 = x i, x i = x i+1,..., x N 1 = x N b 0 b 1 b i =F b i+1 =T b i 1 On sait alors que x i+1 = x i et que x i x i 1. On en déduit que x i+1 x i 1 et donc b i+1 vaut F. Conclusion Chaque transition τ i (i [1, N 1]) donne les transitions abstraites suivantes : b 0,..., b i 1, b i, b i+1,..., b N τi b 0,..., b i 1, b i, b i+1,..., b N F T T F b 0,..., b i 1, b i, b i+1,..., b N τi b 0,..., b i 1, b i, b i+1,..., F F T Dans le cadre de l'examen, on suppose qu'un seul des booléens b 0,..., b n vaut F. On a supposé que c'était b i. On sait donc que b i+1 = T. Donc, seule la première transition nous intéresse et on peut en conclure qu'après la transition τ i, il y a exactement un seul booléen qui vaut F (on sait même dire que c'est b i+1 ). Cas de la transition τ N (1 pt) [x N x N 1 ] x N :=x N 1 } 0 = x 1,..., x N 2 = x }{{ N 1, x } N 1 = x }{{ N b } τ N 0, b 1,..., b N 1, b N b 0 b 1 1 La transition n'est jouable que si la garde vaut vraie, c'est-à-dire si x N = x N 1, ce qui impose = F. Détermination des booléens à b N, b 1,..., b N 1, b N = } 0 = x 1,..., x N 2 = x }{{ N 1, x } N 1 = x }{{ N [x } N x N 1 ] b 1 b N 1 = x 0 x N 1, x 0 = x 1,..., x N 2 = x }{{ N 1, x } N 1 = x N 1 b 1 1 Il est clair qu'après la transition τ N, le booléen b N vaut T. Les booléens b 1 à 1 ne sont pas modiés puisque l'aectation modie uniquement la variable x N qui apparaît uniquement dans les prédicats Φ 0 et Φ N. b N b N Détermination du booléen (x 0 x N 1 ) Dans le cas général, on ne peut rien conclure sur la valeur de qui peut valoir T ou F. Dans le où b 1 =... = 1 = T, on se trouve dans le cas suivant : } 0 = x 1, }.{{.. }, x N 2 = x N 1, x N 1 = x N b 0 T... T On sait alors que x 0 = x 1 =... = x N 2 = x N 1. On en déduit que x 0 = x N 1 et donc que vaut F.
Conclusion La transition τ N donne les transitions abstraites suivantes : b 0, b 1,..., 1, b N τn, b 1,..., 1, b N F? T b 0, b 1, }.{{.. }, 1, b N τn F, T,..., T, T T... T F Dans le cadre de l'examen, on suppose qu'un seul des booléens b 0,..., b n vaut F. Ce cas correspond à la seconde transition. On peut alors conclure qu'après la transition τ N, il y a exactement un seul booléen qui vaut F (on sait même dire que c'est ). Conclusion (.5 pt) On a montré l'invariant abstrait suivant : si un état abstrait comporte un unique booléen à F alors pour toute transition jouable dans cette état, l'état successeur aura lui aussi un unique booléen à F. Considérons maintenant un état abstrait où le seul booléen qui vaut F est b i alors la seule transition jouable est la transition τ i car les booléens b 0,..., correspondent à la négation de la garde des transitions des processus P 0,..., P N. Ainsi, depuis cet état abstrait, seul le processus P i peut eectuer l'action critique AC. L'état initial abstrait ne comporte qu'un seul booléen à F (c'est b 0 ). Cette remarque et l'invariant nous permette d'armer que dans tous les états accessibles, il n'y aura toujours exactement un processus qui puisse eectuer l'action critique AC.
Exercice 2 : Vérication d'un invariant à l'aide des opérateurs pre, post, wlp ( 10min) (2.5 pt) On considère le système de transitions donné en annexe. On souhaite déterminez les états initiaux qui garantissent que le STE n'atteindra pas les états interdits ϕ = {, }. a) (1 pt) Montrez par le calcul de post qu'en prenant pour états initaux les états {, } on n'atteint jamais les états interdits. b) (0.5 pt) Exhibez une trace d'exécution à partir d'un autre état initial qui atteint les états interdits. c) (1 pt) Déterminez les états initiaux qui garantissent que le STE n'atteindra pas les états interdits par le calcul de wlp. Répondez sur la feuille annexe en indiquant les étapes du calcul de post et wlp. Justiez vos conclusions. N'oubliez pas d'indiquer nom et prénom.
Feuille à rendre Nom-Prénom.................................................... ou N de place............. a) calcul de post ({, }) b) trace d'exécution fautive
c) calcul de wlp (ϕ)
Brouillon : Ce qui gure sur cette feuille ne sera pas corrigé.