TD4 - Promela
Transcription
TD4 - Promela
TD4 - Promela Exercice 1 : Algorithme de Dekker Montrer que cet algorithme assure l'exclusion mutuelle : #define #define #define #define true 1 false 0 Aturn false Bturn true bool x, y, t; proctype A() { x = true; t = Bturn; (y == false || t == Aturn); /* critical section */ x = false } proctype B() { y = true; t = Aturn; (x == false || t == Bturn); /* critical section */ y = false } init { run A(); run B() } Exercice 2 : Fonctionnement des canaux Dans le programme suivant, quelle est la valeur affichée par le processus de type B ? Exercice 3 : écrire en Promela un processus qui prend en paramètre un entier n, puis affiche la somme des n premiers entiers, en émulant le comportement de la boucle «while». Exercice 4 : Ecrire en Promela un processus qui affiche la valeur maximum d'un tableau de n entiers. Exercice 5 : Protocole de Lynch Ce protocole est réalisé par deux processus distants qui communiquent par échange de messages. La spécification est la suivante : 5.1. Compréhension du fonctionnement du protocole décrit par l'automate ci-dessous : – le transfert de données peut-il avoir lieu dans un seul sens à la fois ? – l'échange est-il « half-duplex » (bidirectionnel à l'alternat) ou « full-duplex » (bidirectionnel simultané) ? – que signifient les variables « o » et « i » ? – le mécanisme de « piggy-backing » est-il utilisé ? – quand est-ce que l'émetteur de données produit un nouveau message à envoyer ? – quand est-ce que le récepteur de données consomme un nouveau message ? – comment peut-on initialiser le transfert de données ? – la fin du transfert de données est-elle prévue dans le protocole ? – peut-il y avoir des duplications de messages ? Donner un exemple de scénario. 5.2. Codage en Promela a) définir les différents types de messages b) définir le type de processus proctype transfer (chan inc, out, chin, chout) : - inc et out représentent les canaux de communication entre le processus et sa couche supérieure (production/consommation de données) - chin et chout représentent les canaux de communication entre les processus distants (réception/émission de messages) c) définir le processus init qui déclare les canaux et lance les processus de type transfer représentant deux processus A et B, pour le scénario suivant : - le processus A produit les données '1' et '2' - le processus B produit les données '3' et '4' - le processus B initialise le transfert en envoyant le message ERR(0) au processus A.