• Aucun résultat trouvé

Th´eorie et pratique de la concurrence – Master 1 II TD 3 : S´emaphores

N/A
N/A
Protected

Academic year: 2022

Partager "Th´eorie et pratique de la concurrence – Master 1 II TD 3 : S´emaphores"

Copied!
3
0
0

Texte intégral

(1)

Th´ eorie et pratique de la concurrence – Master 1 II TD 3 : S´ emaphores

Exercice 1 : Nous consid´erons l’exemple ci-dessous

semaphore S < 1 , T <−0 p r o c e s s P

p1 : wa it ( S ) p2 : w r i t e ( ”p” ) p3 : s i g n a l (T)

p r o c e s s Q q1 : wa it (T) q2 : w r i t e ( ”q” ) q3 : s i g n a l ( S )

1. Quelles sont les sorties possibles de cet algorithme ?

2. Si l’on efface l’instruction wait(S), quelles sont les sorties possibles ? 3. Et si l’on efface, l’instruction wait(T)?

Exercice 2 : On consid`ere l’algorithme suivant pour le dˆıner des philosophes (avec 5 philosophes). On suppose que les op´erations d’addition sont faites modulo 5.

semaphore a r r a y [ 0 . . 4 ] f o r k < [ 1 , 1 , 1 , 1 , 1 ] semaphore room < 4

p r o c e s s P h i l o i l o o p f o r e v e r p1 : t h i n k p2 : wa it ( room ) p3 : wa it ( f o r k [ i ] ) p4 : wa it ( f o r k [ i + 1 ]) p5 : e a t

p6 : s i g n a l ( f o r k [ i ] ) p7 : s i g n a l ( f o r k [ i + 1 ]) p8 : s i g n a l ( room )

1. Montrez que `a tout instant chaque fourchette est prise par au plus un philosophe.

2. Montrez que en consid´erant des s´emaphores faibles (pour lesquels lors de l’envoie d’un signalau moins un des processus en attente prendra la main) cet algorithme respecte la propri´et´e d’absence de famine.

3. Que se passe-t-il si on consid`ere que roomest initialis´e `a 3 au lien de 4 ? 4. Dans ce dernier cas, il y a-t-il une solution pour garantir l’absence de famine ?

Exercice3 : Dans une ville tranquille, un coiffeur poss`ede un petit salon ayant une porte d’entr´ee, une porte de sortie, un fauteuil de coiffure et N chaises. Les clients arrivent par la

(2)

porte d’entr´ee et sortent par la porte d’entr´ee et sortent par la porte de sortie apr`es avoir eu leur coupe de cheveux. Comme le salon est petit, uniquement le client sur le fauteuil de coiffure peut-ˆetre servi `a un moment donn´e par le coiffeur. Le coiffeur passe sa vie entre dormir et servir ses clients. Quand il n’a aucun client, le coiffeur dort. Quand un client arrive et le fauteuil est libre, il s’assoit dans le fauteuil et il r´eveille le coiffeur. Si le fauteuil n’est pas libre, le client occupe une chaise s’il y a des chaises de libre ou il attend qu’une chaise se lib`ere sinon. Un client sur une chaise attend que le fauteuil se lib`ere. Apr`es avoir fini une coupe, le coiffeur fait sortir le client servi et s’endort.

Mod´elisez ce probl`eme en utilisant des s´emaphores pour la synchronisation entre le coiffeur et ses clients. Pour cela ´ecrire dans le langage similaire `a celui vu en cours :

1. un processus Clientdans lequel sont identifi´es clairement ses ´etats : en attente d’une chaise, sur une chaise en attente du fauteuil, sur le fauteuil en attente de la fin de sa coupe et servi,

2. un processus Coiffeuravec les ´etats endormi et en service 3. les d´eclarations de s´emaphore et leur valeur initiale

4. exprimer en LTL la propri´et´e suivante : ”Le coiffeur est r´eveill´e que si le fauteuil est occup´e”

Exercice 4 : Algorithme de Barz

Nous consid´erons l’algorithme suivant qui permet `a au plus k >0 processus d’acc´eder en section critique.

Algorithme de Barz semaphore S < 1

semaphore g a t e < 1 i n t co unt < k p r o c e s s P h i l o i l o o p f o r e v e r

non−c r i t i c a l s e c t i o n p1 : wa it ( g a t e )

p2 : wa it ( S )

p3 : co unt < co unt 1 p4 : i f co unt > 0 then p5 : s i g n a l ( g a t e ) p6 : s i g n a l ( S )

c r i t i c a l s e c t i o n p7 : wa it ( S )

p8 : co unt < co unt + 1 p9 : i f co unt = 1 then p10 : s i g n a l ( g a t e ) p11 : s i g n a l ( S )

1. Expliquez pourquoi on peut r´e´ecrire cet algorithme peut ˆetre ´ecrit sous la forme sim- plifi´ee donn´ee `a la page suivante.

(3)

Algorithme de Barz simplifi´e semaphore S < 1

semaphore g a t e < 1 i n t co unt < k p r o c e s s P h i l o i l o o p f o r e v e r

non−c r i t i c a l s e c t i o n q1 : wa it ( g a t e )

q2 : a to mic{

co unt < co unt 1 i f co unt > 0 then

s i g n a l ( g a t e ) }

c r i t i c a l s e c t i o n q3 : a to mic{

co unt < co unt + 1 i f co unt = 1 then

s i g n a l ( g a t e ) }

2. On d´enote par entering laq2 etinCS estq3. On d´enote par #entering [respectivement

#inCS] le nombre de processus pour lesquels entering[respectivementinCS] est vraie

`

a un instant donn´e. Montrez que la conjonction des formules suivantes est un invariant : (a) entering ⇒(gate= 0)

(b) entering ⇒(count >0) (c) #entering≤1

(d) ((gate= 0)∧ ¬entering)⇒(count= 0) (e) (count≤0)⇒(gate= 0)

(f) (gate= 0)∨(gate= 1)

3. Montrez que la formule count=k−#inCS est un invariant.

4. En d´eduire que `a tout moment le nombre de processus en section critique est inf´erieur ou ´egal `ak.

Références

Documents relatifs

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

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

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

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

La premi`ere n’autorisera pas un consommateur ` a lire une nouvelle donn´ee tant que la derni`ere donn´ee lue n’aura pas ´et´e vue par tous les consommateurs (le dernier

Les paniers et les cabines seront repr´esent´es par deux s´emaphores semCabine et semPanier qui seront des champs de la classe Client (ces s´emaphores seront partag´es par tous