• Aucun résultat trouvé

Th´eorie et pratique de la concurrence – Master 1 Informatique TD 1 : Concurrence et exclusion mutuelle

N/A
N/A
Protected

Academic year: 2022

Partager "Th´eorie et pratique de la concurrence – Master 1 Informatique TD 1 : Concurrence et exclusion mutuelle"

Copied!
3
0
0

Texte intégral

(1)

Th´ eorie et pratique de la concurrence – Master 1 Informatique TD 1 : Concurrence et exclusion mutuelle

Exercice 1 : Algorithmes concurrents et leur propri´et´es Soit une fonction f pour laquelle il existe une valeur i telle que f(i) = 0. Les algorithmes concurrents ci-dessous cherchent une telle valeuri(appel´ee aussi le point z´ero) en divisant l’espace de recherche en deux parties : les points z´ero positifsi≥0 et les points z´ero n´egatifsi <0.

Un algorithme est correct si, pour toutes les ex´ecutions, les deux processus terminent apr`es que l’un d’entre eux a trouv´e un point z´ero. Pour chaque algorithme, prouvez qu’il est correct en utilisant les diagrammes d’´etats ou trouvez une ex´ecution incorrecte.

Algorithme Z´ero A.

b o o l e a n found ; p r o c e s s P ( )

i n t e g e r i : = 0 ; p1 : found := f a l s e ; p2 : while n o t found p3 : i := i +1

p4 : found : = ( f ( i )==0)

p r o c e s s Q( )

i n t e g e r j : = 1 ; q1 : found := f a l s e ; q2 : while n o t found q3 : j := j−1

q4 : found := ( f ( j )==0)

Algorithme Z´ero B.

b o o l e a n found := f a l s e p r o c e s s P ( )

i n t e g e r i : = 0 ; p1 : while n o t found p2 : i := i +1

p3 : found : = ( f ( i )==0)

p r o c e s s Q( )

i n t e g e r j : = 1 ; q1 : while n o t found q2 : j := j−1

q3 : found := ( f ( j )==0)

Algorithme Z´ero C.

b o o l e a n found := f a l s e p r o c e s s P ( )

i n t e g e r i : = 0 ; p1 : while n o t found p2 : i := i +1

p3 : i f ( f ( i )==0) p4 : found := t r u e

p r o c e s s Q( )

i n t e g e r j : = 1 ; q1 : while n o t found q2 : j := j−1

q3 : i f ( f ( j )==0) q4 : found := t r u e

Dans les algorithmes suivants, on utilise la constructionawait B then Rqui bloque l’ex´ecution deR jusqu’`a ce que la condition bool´eenneBsoit vraie. De plus, l’ex´ecution deRest faite atom- iquement apr`es le test deB. Si la conditionBest ´evalu´ee (atomiquement) `a faux, alors le processus qui ex´ecuteawaitest suspendu et il peut r´eessayer plus tard d’ex´ecuterawait.

(2)

Algorithme Z´ero D.

b o o l e a n found := f a l s e i n t e g e r t u r n :=1 p r o c e s s P ( )

i n t e g e r i : = 0 ; p1 : while n o t found

p2 : a w a i t t u r n==1 t h e n t u r n :=2 p3 : i := i +1

p4 : i f ( f ( i )==0) p5 : found := t r u e

p r o c e s s Q( )

i n t e g e r j : = 1 ; q1 : while n o t found

q2 : a w a i t t u r n==2 t h e n t u r n :=1 q3 : j := j−1

q4 : i f ( f ( j )==0) q5 : found := t r u e

Algorithme Z´ero E.

b o o l e a n found := f a l s e i n t e g e r t u r n :=1 p r o c e s s P ( )

i n t e g e r i : = 0 ; p1 : while n o t found

p2 : a w a i t t u r n==1 t h e n t u r n :=2 p3 : i := i +1

p4 : i f ( f ( i )==0) p5 : found := t r u e p6 : t u r n :=2

p r o c e s s Q( )

i n t e g e r j : = 1 ; q1 : while n o t found

q2 : a w a i t t u r n==2 t h e n t u r n :=1 q3 : j := j−1

q4 : i f ( f ( j )==0) q5 : found := t r u e q6 : t u r n :=1

Exercice 2 : Sˆuret´e et vivacit´e

Pour chacune des phrases suivantes, indiquez quel type de propri´et´e (sˆuret´e ou vivacit´e) elle exprime en identifiant bien la partie qui y est int´eressante :

1. Au plus 5 personnes sont dans l’ascenseur `a un moment donn´e.

2. Les patrons sont servis dans l’ordre de leur arriv´ee.

3. Le coˆut de la vie ne d´ecroˆıt jamais.

4. Toute bonne chose a une fin.

5. Un livre s’am´eliore `a chaque lecture.

6. Ce qui croit doit d´ecroˆıtre.

7. Si deux processus attendent pour leur section critique, exactement un va y entrer.

8. Au plus une personne doit parler `a un moment, les autres doivent ´ecouter.

9. Si une interruption arrive, alors un message sera affich´e.

10. Si une interruption arrive, alors un message sera affich´e dans une seconde.

(3)

Exercice 3 : 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 mutuelle, absence d’inter-blocage, absence de famine, attente born´ee) satisfaites par cet algorithme.

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

Exercice 4 : 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 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

Le serveur stocke alors cette chaˆıne de caract` eres dans un objet de type ConcurrentBuffer Un client consommateur attend que le serveur lui envoie des chaˆınes de caract` eres qui

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

Dans cet exercice on souhaite mod´eliser ce probl`eme du dˆıner des philosophes par un programme en C dans leque chaque baguette sera repr´esent´ee par un verrou et chaque

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