Télécharger la présentation
Publié parAdalard Lemaitre Modifié depuis plus de 10 années
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
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.