46
1 Agenda n Synchronisation et communication entre processus n Schémas classiques de synchronisation

05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

1

Agendan Synchronisation et communication entre

processusn Schémas classiques de synchronisation

Page 2: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

2

P1

P2

P3

F Processus non indépendants : accès concurrents aux ressources

Introductionn Système multiprocessusn L'ordonnancement "entrelace" les exécutions

Page 3: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

3

Notion de ressources

n Définitionsn Une ressource désigne toute entité dont a

besoin un processus pour s'exécuter.n Ressource matérielle (processeur, périphérique)n Ressource logicielle (variable)

n Une ressource est caractérisén par un état : libre /occupéen par son nombre de points d'accès (nombre de

processus pouvant l'utiliser en même temps)

Page 4: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

4

Notion de ressources

n Utilisation d'une ressource par un processusn Trois étapes :

n Allocation, Utilisation, Restitutionn Les phases d'allocation et de restitution

doivent assurer que le ressource estutilisée conformément à son nombre depoints d'accès

n ressource critique à un seul point d'accès

Page 5: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

5

Les sémaphores

n StructureFile L

Compteur K(niveau du sémaphore)

P (Sem)

V (Sem)

INIT (Val, Sem)Sem

Val

Opérations indivisibles

Page 6: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

6

n Un sémaphore Sem peut être vu comme un distributeur de jetons; le jeton étant un droit à poursuivre son exécution

n l'opération INIT (Sem, Val) fixe le nombre de jetons initial

n l'opération P(Sem) attribue un jeton au processus appelant si il en reste sinon bloque le processus dans Sem.L

n l'opération V(Sem) restitue un jeton et débloque un processus de Sem.L si il en existe un.

Les sémaphores

Page 7: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

7

n Opération Init (Val, Sem)Init (Val, Sem)

débutmasquer_itSem. K := Val;Sem. L := Ædemasquer_it

fin

Val jetons

Les sémaphores

Page 8: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

8

Les sémaphoresn Opération P (Sem)P (Sem)

débutmasquer_itSi il reste un jetonalors

le donner à ce processussinon

ajouter ce processus à Sem.Lbloquer ce processus

fsidemasquer_it

fin

Endormissement

0 jetons

Page 9: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

9

P (Sem)

débutSem.K := Sem.K - 1;Si Sem.K < 0alors

ajouter ce processus à Sem.Lendormir ce processus

fsifin

Endormissement

< 0

Les sémaphoresn Opération P (Sem)

Page 10: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

10

V (Sem)

débutmasquer_itAjouter un jeton à Sem.KSi il y a un processus en attente de jeton dans Sem.Lalors

sortir un processus de Sem.Llui donner un jetonréveiller ce processus

fsidemasquer_itfin

Réveil

jetons

n Opération V (Sem)

Les sémaphores

Page 11: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

11

V (Sem)

débutSem.K := Sem.K + 1;Si Sem.K £ 0alors

sortir un processus de Sem.Lréveiller ce processus

fsifin

£ 0

Réveil

n Opération V (Sem)

Les sémaphores

Page 12: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

12

n Signification du compteur K n Si Sem.K > 0, Sem.K est le nombre d'opérations P(Sem)

passantes

2

P1 P2 P3

P(Sem)

P(Sem)P(Sem)

K = 1

K = 0K < 0 Bloqué

Les sémaphores

Page 13: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

13

n Signification du compteur K n Si Sem.K £ 0, valeur_absolue(Sem.K) est le nombre de

processus bloqués dans Sem.L

-2

P3 P4 P1

P(Sem)

P(Sem)V(Sem)

K = -1Bloqué

K = -2Bloqué K = -1

Réveil de P3

Les sémaphores

P3P4

Page 14: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

14

1 seul processus en section critique=> 1 seul jetonSémaphore Mutex initialisé à 1

P (Mutex)

V (Mutex)

Entrée section_critique

Sortie section_critique

Section Critique

Section critique avec sémaphore

Page 15: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

15

N ressources exclusives de même type

Sémaphore Res initialisé à N

Allocation : P(Res)

Restitution V(Res)

Utilisation Ressource

Allocations de ressources

Page 16: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

16

P1

P2

P3

P4

P(Res) P(Res)

P(Res)

Res.K = 2 Res.K = 1

Res.K = 0

P(Res)Res.K = - 1

Bloqué

V(Res)Res.K = 0

alloué alloué

alloué

Allocations de ressources

Page 17: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

17

Tampon de messages géré circulairement

Producteur Consommateur

Notion de synchronisationProducteur - Consommateur

Page 18: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

18

n ProducteurSi il y a au moins une case libre alorsdéposer le message prévenir le consommateursinon attendrefsi

n ConsommateurSi il y a au moins une case pleine alorsprendre le message prévenir le producteursinonattendrefsi

Notion de synchronisationProducteur - Consommateur

Page 19: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

19

Tampon de N messages

ProducteurConsommateur

Ressources cases videsN

Ressources cases pleines 0

Sémaphore Vide Sémaphore Plein

retrait case jdépot case i

Les sémaphoresProducteur-Consommateur

Page 20: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

20

n ProducteurSi il y a au moins une case libre alorsdéposer le message prévenir le consommateursinon attendrefsi

allocation de ressources cases videsP (Sémaphore Vide)

une ressource case pleine disponibleV (Sémaphore Plein)

Les sémaphoresProducteur-Consommateur

Page 21: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

21

n ConsommateurSi il y a au moins une case pleine alorsprendre le message prévenir le

producteursinonattendrefsi

allocation de ressources cases pleinesP (Sémaphore Plein)

une ressource case vide disponibleV (SémaphoreVide)

Les sémaphoresProducteur-Consommateur

Page 22: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

22

n Producteurindex i de dépot : = 0

P(Vide)déposer le message dans T(i);i : = i + 1 mod N;V(Plein)

n Consommateur

index j de retrait := 0

P(Plein)retirer le message de T(j);j : = j + 1 mod N;V(Vide)

Sémaphore Vide initialisé à N : Init (Vide, N)Sémaphore Plein initialisé à 0 : Init (Plein, 0)

Page 23: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

23

Producteur ConsommateurP(Plein)Plein.K = -1Bloqué

P(Vide)Vide.K := 1dépotV(Plein) Débloqué

1 case pleine

Les sémaphoresProducteur-Consommateur

Page 24: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

24

Producteur ConsommateurP(Vide)Vide.K := 0dépotV(Plein)

2 cases pleines

P(Vide)Vide.K := - 1Bloqué

Retrait V(Vide)

Débloqué

Les sémaphoresProducteur-Consommateur

Page 25: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

25

FICHIER

ECRITURE

LECTURES

n Ecriture seule - Lectures simultanéesn Un écrivain exclut

n les écrivainsn les lecteurs

n Un lecteur exclut n les écrivains

Les sémaphoresLecteurs / Rédacteurs

Page 26: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

26

ECRITURE

n Un écrivain exclut les écrivains et les lecteursn Un écrivain effectue des accès en exclusion

mutuelle des autres écrivains et des lecteurs

n Sémaphore d'exclusion mutuelle Accès initialisé à 1

Les sémaphoresLecteurs / Rédacteurs

Page 27: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

27

Les sémaphoresLecteurs / Rédacteursn M'assurer que l'accès au fichier est libre

P(Accès)

entrer en écriture

Libérer l'accès au fichier

V(Accès)Ecrivain

Page 28: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

28

Les sémaphoresLecteurs / Rédacteursn M'assurer que l'accès au fichier est libre

P(Accès)

entrer en lecture

Libérer l'accès au fichier

V(Accès)Lecteur

Page 29: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

29

LECTURES

n Un lecteur exclut les écrivainsn Un premier lecteur doit s'assurer qu'il n'y a pas d'accès en

écriture en coursn Le dernier lecteur doit réveiller un éventuel écrivain

n NL, nombre de lecteurs courants, initialisé à 0

Les sémaphoresLecteurs / Rédacteurs

Page 30: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

30

Lecteur

Compter un lecteur de plusSi je suis le premier lecteuralors

Y-a-t-il un écrivain ?si oui, attendre

fsi

entrer en lecture

Compter un lecteur de moinsSi je suis le dernier, réveiller un écrivain

Les sémaphoresLecteurs / Rédacteurs

NL = 1NL : = NL + 1

V(Accès)

NL : = NL - 1NL = 0

P(Accès)

P(Mutex)

V(Mutex)

P(Mutex)

V(Mutex)

Lecture

Page 31: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

31

P(Mutex)NL : = NL + 1Si (NL = 1)alors

P(Accès)fsiV(Mutex)

P(Mutex)NL := NL - 1;Si (NL = 0) alors

V(Accès)fsiV(Mutex)

Accès lecture

Lecteur

Les sémaphoresLecteurs / Rédacteurs

Page 32: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

32

Lecteur 1 Rédacteur 1Lecteur 2 Rédacteur 2

P(Mutex)NL = 1

P(ACCES)Accès autoriséFichier (L)V(Mutex)

P(ACCES)Bloqué

Non actifNon actif

Les sémaphoresLecteurs / Rédacteurs

Page 33: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

33

Lecteur 1 Rédacteur 1Lecteur 2 Rédacteur 2

P(Mutex)NL = 2

Accès autorisé

V(Mutex)

Lecture Bloqué Non actif

Les sémaphoresLecteurs / Rédacteurs

Page 34: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

34

Lecteur 1 Rédacteur 1Lecteur 2 Rédacteur 2

P(Mutex)NL -- = 1V(Mutex) Bloqué Non actif

P(Mutex)NL -- = 0V(ACCES)V(Mutex)

Lecture

Fichier (E) P(ACCES)Bloqué

Les sémaphoresLecteurs / Rédacteurs

Page 35: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

35

Lecteur 1 Rédacteur 1Lecteur 2 Rédacteur 2

Bloqué

Ecriture

V(ACCES) Ecriture

P(Mutex)NL = 1P(ACCES)bloqué

P(Mutex)bloqué

Les sémaphoresLecteurs / Rédacteurs

Page 36: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

36

n Coalition des lecteurs contre les écrivains

Lecteur 1P(E) et accès

Lecteur 2...iaccès direct Ecrivain

P(E) bloquant

Lecteur j.. ¥accès direct

Fichier libre

Fichier en lecture

Les sémaphoresLecteurs / Rédacteurs

Page 37: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

37

n Solution à la coalition

Fichier libre

Lecteur 1P(E) et accès

Lecteur 2...iaccès direct Ecrivain

P(E) bloquant

Lecteur j.. ¥

Fichier en lecture

Interdire l'accès

Les sémaphoresLecteurs / Rédacteurs

Page 38: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

38

Agendan Semaphore and Threads

Page 39: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

Mutexn Mutex is an abbreviation for "mutual

exclusion”n Variable:

n pthread_mutex_t lock;

n Functions:n pthread_mutex_init (*mutex, *attr) n pthread_mutex_destroy (*mutex)n pthread_mutex_lock (*mutex) n pthread_mutex_unlock (*mutex) 39

Page 40: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

Implementation with Threadstypedef struct sem_t {

pthread_mutex_t lock; int k;pthread_cond_t sem_cond;

} semaphore;

40

Page 41: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

Implementation with Threadsvoid sem_init (semaphore *b, int value) {

pthread_mutex_init (&b->lock, NULL); pthread_cond_init (&b->sem_cond,

NULL); b->k=value;

}

41

Page 42: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

Implementation with Threadsvoid sem_p (semaphore *b) {

pthread_mutex_lock (&b->lock);b->k--;if (b->k < 0)

pthread_cond_wait (&b->sem_cond, &b->lock);

pthread_mutex_unlock (&b->lock);

}

42

Page 43: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

Implementation with Threadsvoid sem_v (semaphore *b) {

pthread_mutex_lock (&b->lock);b->k++;if (b->k <= 0)

pthread_cond_signal (&b->sem_cond);

pthread_mutex_unlock (&b->lock);}

43

Page 44: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

Implementation with Threadsvoid sem_close (semaphore *b) {

pthread_mutex_destroy (&b->lock); pthread_cond_destroy (&b->sem_cond);

}

44

Page 45: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

n http://linuxdevcenter.com/pub/a/linux/2007/05/24/semaphores-in-linux.html?page=1

n http://www.csc.villanova.edu/~mdamian/threads/posixsem.html

45

Page 46: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter

Exercice

n On considère deux machines (M1 et M2) qui travaillent en ligne (concurrence). Un robot permet de transporter une pièce à la fois soit du stock aval de la Machine 1 vers le Stock S, soit du Stock S vers le stock amont de la Machine 2. Le Stock S a une capacité limité à 4 pièces.

n Quelle sont les ressources ?n Ecrire un programme pour modéliser le system 46

M1 M2StockS

Robot