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.