La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Synchronisation et communication entre processus

Présentations similaires


Présentation au sujet: "Synchronisation et communication entre processus"— Transcription de la présentation:

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

2 Un premier problème simple : l'exclusion mutuelle entre processus
Accès à une ressource critique

3 Introduction : un exemple simple de concurrence (I)
Réservation : Si nb_place > 0 alors Réserver une place nb_place = nb_place - 1 fsi

4 Introduction : un exemple simple de concurrence
Client 2 Demande Réservation Nb_Place > 0 = 1 Nb_Place = Nb_Place - 1 Nb_Place = 0 Client 1 Demande Réservation Nb_Place > 0 = 1 Nb_Place = Nb_Place - 1 Nb_Place = -1 !!!

5 Notion d'exclusion mutuelle (I)
Ressource utilisable par un seul processus à la fois Processus Début Prélude Section Critique Ressource Critique Nb_Place Postlude Section Critique Fin SECTION CRITIQUE

6 Un exemple simple de concurrence
Client 2 Client 1 Demande Réservation Protection de Nb_Place Nb_Place > 0 = 1 Nb_Place = Nb_Place - 1 Fin protection Nb_Place Demande Réservation Nb_Place non accessible Protection de Nb_Place Nb_Place = 0

7 Problème de la section critique Solutions matérielles
Masquage des interruptions Noyau Processus 1 Nb_Place Traitement IT Horloge Processus 2 Nb_Place

8 Problème de la section critique Solutions matérielles
Masquage des interruptions Processus 1 IT Non prise en compte Masquage IT Nb_Places Démasquer IT Processus 2 Attente

9 Problème de la section critique
Une ressource critique est une ressource accessible par un seul processus à la fois. L'accès se fait en exclusion mutuelle dans la section critique. Une solution pour réaliser une section critique est d'interdire la prise en compte des interruptions durant l'utilisation de la ressource critique. Mais dangereux mode superviseur attente active bloquer les processus : les sémaphores

10 Les sémaphores Structure P (Sem) File L V (Sem) Compteur K Val Sem
INIT (Val, Sem) Opérations atomiques

11 Les sémaphores Opération Init (Val, Sem) Val Init (Val, Sem) début Sem. K := Val; Sem. L :=  fin

12 Les sémaphores Endormissement Opération P (Sem) P (Sem) début
Sem.K := Sem.K - 1; Si Sem.K < 0 alors ajouter ce processus à Sem.L endormir ce processus fsi fin < 0

13 Les sémaphores Endormissement Opération P (Sem) CPU élu prêt < 0
< 0 P(Sem) bloqué Sem

14 Les sémaphores Réveil Opération V (Sem)  0 V (Sem) début Sem.K := Sem.K + 1; Si Sem.K  0 alors sortir un processus de Sem.L réveiller ce processus fsi fin

15 Les sémaphores Réveil Opération V (Sem)  0 CPU élu prêt V(Sem) bloqué
 0 CPU élu prêt V(Sem) bloqué Sem

16 Les sémaphores Signification du compteur K
Si Sem.K > 0, Sem.K est le nombre d'opérations P(Sem) passantes P1 P2 P3 P(Sem) K = 1 P(Sem) 2 P(Sem) K = 0 K < 0 Bloqué

17 Les sémaphores Signification du compteur K
Si Sem.K £ 0, valeur_absolue(Sem.K) est le nombre de processusbloqués dans Sem.L P3 P4 P1 P3 P(Sem) P4 K = -1 Bloqué P(Sem) - 2 K = - 2 Bloqué V(Sem) K = -1 Réveil de P3

18 Les sémaphores Section critique Sémaphore Mutex initialisé à 1 P (Mutex) V (Mutex) Prélude Section Critique Postlude

19 Les sémaphores Section critique Processus 2 Processus 1 P (Mutex)
Mutex.K = 0 Entrée en SC P (Mutex) Mutex.K = - 1 Mise en attente V (Mutex) Entrée en SC Mutex.K = 0 Réveil

20 Les sémaphores Allocations de ressources N ressources exclusives de même type Sémaphore Res initialisé à N Allocation : P(Res) Utilisation Ressource Restitution V(Res)

21 Allocations de ressources
Les sémaphores Allocations de ressources P3 P(Res) Res.K = 0 alloué P(Res) P(Res) Res.K = 2 Res.K = 1 P(Res) P4 alloué alloué P1 Res.K = - 1 Bloqué P2 V(Res) Res.K = 0

22 Notion de synchronisation Producteur-Consommateur
Tampon de messages Producteur Consommateur

23 Notion de synchronisation Producteur-Consommateur
Si il y a au moins une case libre alors déposer le message prévenir le consommateur sinon attendre fsi Consommateur Si il y a au moins une case pleine alors prendre le message prévenir le producteur sinon attendre fsi

24 Un exemple de Producteur-Consommateur les Tubes Unix
Ecriture bloquante - pas de consommateurs - tube plein Lecture bloquante - pas de producteurs - tube vide

25 Un exemple de Producteur-Consommateur les messages queue d'Unix
Clé 1 A B A Clé 2 Clé 1 Clé 3 C A Clé 1 Clé 4 Prod Clé 2 1 Clé 5 6 Cons Clé 6 B Clé 6 Clé 6

26 Les sémaphores Producteur-Consommateur
Tampon de N messages Consommateur Producteur retrait case j dépot case i Ressources cases pleines Ressources cases vides N Sémaphore Vide Sémaphore Plein

27 Les sémaphores Producteur-Consommateur
Si il y a au moins une case libre alors déposer le message prévenir le consommateur sinon attendre fsi allocation de ressources cases vides P (Sémaphore Vide) une ressource case pleine disponible V (Sémaphore Plein)

28 Les sémaphores Producteur-Consommateur
Si il y a au moins une case pleine alors prendre le message prévenir le producteur sinon attendre fsi allocation de ressources cases pleines P (Sémaphore Plein) une ressource case vide disponible V (SémaphoreVide)

29 Sémaphore Vide initialisé à N : Init (Vide, N)
Sémaphore Plein initialisé à 0 : Init (Plein, 0) Consommateur Producteur index i de dépot : = 0 P(Vide) déposer le message dans T(i); i : = i + 1 mod N; V(Plein) index j de retrait := 0 P(Plein) retirer le message de T(j); j : = j + 1 mod N; V(Vide)

30 Producteur-consommateur
Les sémaphores Producteur-consommateur Producteur Consommateur P(Plein) Plein.K = -1 Bloqué P(Vide) Vide.K := 1 dépot V(Plein) Débloqué 1 case pleine

31 Producteur-consommateur
Les sémaphores Producteur-consommateur Producteur Consommateur P(Vide) Vide.K := 0 dépot V(Plein) 2 cases pleines Retrait V(Vide) P(Vide) Vide.K := - 1 Bloqué Débloqué

32 Notion de synchronisation Lecteurs / Rédacteurs
ECRITURE FICHIER LECTURES Ecriture seule - Lectures simultanées Un écrivain exclut - les écrivains - les lecteurs Un lecteur exclut - les écrivains

33 Un exemple de lecteurs / rédacteurs Mémoire partagée distribuée Mach
w 3 Rédacteur P1 Lecteur P1 1 Accès Ecriture (P1) P1 r INVALIDER P1 P1 2 Lecteur P1 Serveur DSM

34 Les sémaphores Lecteurs / Rédacteurs
ECRITURE FICHIER LECTURES Ecriture seule - Lectures simultanées Un écrivain exclut - les écrivains - les lecteurs Un lecteur exclut - les écrivains

35 Les sémaphores Lecteurs / Rédacteurs
ECRITURE Un écrivain exclut les écrivains et les lecteurs Un écrivain effectue des accès en exclusion mutuelle des autres écrivains et des lecteurs Sémaphore d'exclusion mutuelle Accès initialisé à 1

36 Les sémaphores Lecteurs / Rédacteurs
Ecrivain 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)

37 Les sémaphores Lecteurs / Rédacteurs
LECTURES Un lecteur exclut les écrivains Un premier lecteur doit s'assurer qu'il n'y a pas d'accès en écriture en cours Le dernier lecteur doit réveiller un éventuel écrivain NL, nombre de lecteurs courants, initialisé à 0

38 Les sémaphores Lecteurs / Rédacteurs
Compter un lecteur de plus Si je suis le premier lecteur alors Y-a-t-il un écrivain ? si oui, attendre fsi entrer en lecture Compter un lecteur de moins Si je suis le dernier, réveiller un écrivain P(Mutex) NL : = NL + 1 NL = 1 P(Accès) V(Mutex) P(Mutex) NL : = NL - 1 NL = 0 V(Mutex) V(Accès)

39 Les sémaphores Lecteurs / Rédacteurs
P(Mutex) NL : = NL + 1 Si (NL = 1) alors P(Accès) fsi V(Mutex) P(Mutex) NL := NL - 1; Si (NL = 0) alors V(Accès) fsi V(Mutex) Accès lecture

40 Les sémaphores Lecteurs / Rédacteurs Lecteur 1 Lecteur 2 Rédacteur 1 Rédacteur 2 P(Mutex) NL = 1 P(E) Accès autorisé Fichier (L) V(Mutex) Non actif Non actif P(E) Bloqué

41 Les sémaphores Lecteurs / Rédacteurs Lecteur 1 Lecteur 2 Rédacteur 1 Rédacteur 2 P(Mutex) NL = 2 Accès autorisé V(Mutex) Lecture Bloqué Non actif

42 Les sémaphores Lecteurs / Rédacteurs Lecteur 1 Lecteur 2 Rédacteur 1 Rédacteur 2 P(Mutex) NL -- = 1 V(Mutex) Lecture Bloqué Non actif P(Mutex) NL -- = 0 V(E) V(Mutex) Fichier (E) P(E) Bloqué

43 Les sémaphores Lecteurs / Rédacteurs Lecteur 1 Lecteur 2 Rédacteur 1 Rédacteur 2 P(Mutex) NL = 1 P(E) bloqué Ecriture V(E) Bloqué P(Mutex) bloqué Ecriture

44 Les sémaphores Lecteurs / Rédacteurs
Coalition des lecteurs contre les écrivains Fichier libre Fichier en lecture Lecteur j..  accès direct Lecteur 2...i accès direct Lecteur 1 P(E) et accès Ecrivain P(E) bloquant

45 Les sémaphores Lecteurs / Rédacteurs
Solution à la coalition Fichier libre Fichier en lecture Interdire l'accès Lecteur j..  Lecteur 2...i accès direct Ecrivain P(E) bloquant Lecteur 1 P(E) et accès


Télécharger ppt "Synchronisation et communication entre processus"

Présentations similaires


Annonces Google