• Aucun résultat trouvé

Th´eorie et pratique de la concurrence – Master 1 II TD 2 : Sections critiques (mod`eles)

N/A
N/A
Protected

Academic year: 2022

Partager "Th´eorie et pratique de la concurrence – Master 1 II TD 2 : Sections critiques (mod`eles)"

Copied!
1
0
0

Texte intégral

(1)

Th´eorie et pratique de la concurrence – Master 1 II TD 2 : Sections critiques (mod`eles)

Exercice1: Algorithme de Manna et Pnueli

Soit la solution suivante pour l’impl´ementation d’une section critique (Manna-Pnueli) : int wantP = 0, wantQ = 0; // variable partag´ee

-- Processus P loop forever:

section NC if (wantQ = -1)

wantP := -1 else

wantP := 1 await wantP != wantQ section critique wantP := 0

-- Processus Q loop forever:

section NC if (wantP = -1)

wantQ := 1 else

wantQ := -1 await wantP != -wantQ section critique wantQ := 0 1. Construisez le diagramme d’´etats de cet algorithme.

2. En utilisant ce diagramme, indiquez quelles sont les propri´et´es de correction (exclusion mu- tuelle, absence d’inter-blocage, absence de famine, attente born´ee) satisfaites par cet algo- rithme.

3. Est-il possible de modifier cet algorithme afin de satisfaire les propri´et´es ci-dessus non satis- faites ?

Exercice2: Mutex avec instructions atomiques

Supposons qu’une machine fournit l’instruction atomique suivante : flip(int lock) :

atomic { lock = (lock+1) % 2; /* inverse le lock */

return (lock) } /* renvoie sa nouvelle valeur */

Un programmeur propose la solution suivante pour l’implementation d’une section critique pour deux processus :

int lock = 0; /* variable partagee */

-- Processus i: /* i est soit 1 soit 2 */

loop forever : section NC

while (flip(lock) != 1) : await lock == 0 section critique lock = 0

1. Expliquer-lui pourquoi sa solution ne marche pas en lui montrant une trace d’ex´ecution dans laquelle les deux processus se retrouvent en mˆeme temps dans leur section critique.

2. Il vous propose de garder sa solution mais de changer dans la machine l’instruction atomique flip: au lieu d’une addition modulo 2, utiliser une addition modulo 3.

Cette nouvelle solution est-elle correcte pour deux processus ?

Justifier votre r´eponse (si la r´eponse est positive donner un invariant, sinon exhiber une trace d’ex´ecution).

3. Pour cette derni`ere solution, commenter informellement les propri´et´es d’absence d’inter- blocage et de famine ainsi que celle d’attente born´ee.

Références

Documents relatifs

Le premier argument est l’adresse d’un descripteur de thread, le deuxi`eme argument (que nous mettrons toujours ` a NULL dans ces TP) est un attribut de thread de type pthread_attr_t

L` a aussi il est recommand´ e d’appeler cette fonction au sein d’une section critique prot´eg´ee par le mutex utilis´e par le thread en attente (dans l’exemple pr´ec´edent

Expliquer-lui pourquoi sa solution ne marche pas en lui montrant une trace d’ex´ ecution dans laquelle les deux processus se retrouvent en mˆ eme temps dans leur section critique..

Donner des formules de LTL qui formalisent les propri´ et´ es suivantes - pr´ ecisez quelles sont les propositions atomiques dont vous avez besoin :.. Deux feux de croisements ne

Le premier thread attend que x1 est true, et le mets ` a false, ensuite attend que x2 soit true et le mets ` a false, et ensuite affiche un message, remet les drapeaux ` a true et

Pour cela, d´ eveloppez une solution qui laisse au plus entrer 4 voitures sur le pont, si une voiture qui va dans la direction oppos´ ee veut entrer. Exercice 4: Le train

Chaque voiture sera un thread diff´ erent, qui, une fois pass´ ee sur le pont, recommence toujours dans la mˆ eme direction2. Modifiez votre solution pour permettre au plus 4

Dans ce Tp on impl´ ementera quelques algorithmes d’exclusion mutuelle sans utiliser les prim- itives de haut niveau comme les m´ ethodes synchronized ou les variables de