1 / 45

Synchronisation et communication entre processus

Synchronisation et communication entre processus. Schémas classiques de synchronisation. Un premier problème simple : l'exclusion mutuelle entre processus. Accès à une ressource critique. Introduction : un exemple simple de concurrence (I). Réservation : Si nb_place > 0 alors

reeves
Download Presentation

Synchronisation et communication entre processus

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. Client 1 Demande Réservation Nb_Place > 0 = 1 Nb_Place = Nb_Place - 1 Nb_Place = -1 !!! Client 2 Demande Réservation Nb_Place > 0 = 1 Nb_Place = Nb_Place - 1 Nb_Place = 0 Introduction : un exemple simple de concurrence

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

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

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

  8. Problème de la section critiqueSolutions 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. Val Les sémaphores • Opération Init (Val, Sem) Init (Val, Sem) début Sem. K := Val; Sem. L :=  fin

  12. < 0 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

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

  14.  0 Les sémaphores Réveil • Opération V (Sem) 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.  0 Les sémaphores Réveil • Opération V (Sem) 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. 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 synchronisationProducteur-Consommateur Tampon de messages Producteur Consommateur

  23. Producteur 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 Notion de synchronisationProducteur-Consommateur

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

  25. Un exemple de Producteur-Consommateurles 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émaphoresProducteur-Consommateur Tampon de N messages Consommateur Producteur retrait case j dépot case i Ressources cases pleines 0 Ressources cases vides N Sémaphore Vide Sémaphore Plein

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

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

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

  30. 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. 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. FICHIER Notion de synchronisationLecteurs / Rédacteurs ECRITURE LECTURES • Ecriture seule - Lectures simultanées • Un écrivain exclut - les écrivains • - les lecteurs • Un lecteur exclut - les écrivains

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

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

  35. ECRITURE Les sémaphoresLecteurs / Rédacteurs • 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émaphoresLecteurs / 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émaphoresLecteurs / 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émaphoresLecteurs / Rédacteurs Lecteur 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émaphoresLecteurs / Rédacteurs Lecteur 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. Lecteurs / Rédacteurs Les sémaphores 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émaphoresLecteurs / 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émaphoresLecteurs / 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

More Related