synchronisation et communication entre processus n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Synchronisation et communication entre processus PowerPoint Presentation
Download Presentation
Synchronisation et communication entre processus

Loading in 2 Seconds...

play fullscreen
1 / 45

Synchronisation et communication entre processus - PowerPoint PPT Presentation


  • 486 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Synchronisation et communication entre processus' - reeves


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
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

Un premier problème simple :l'exclusion mutuelle entre processus

Accès à une ressource critique

introduction un exemple simple de concurrence i
Introduction : un exemple simple de concurrence(I)

Réservation :

Si nb_place > 0

alors

Réserver une place

nb_place = nb_place - 1

fsi

introduction un exemple simple de concurrence
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
notion d exclusion mutuelle i
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

un exemple simple de concurrence
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

probl me de la section critique solutions mat rielles
Problème de la section critiqueSolutions matérielles
  • Masquage des interruptions

Noyau

Processus 1

Nb_Place

Traitement

IT Horloge

Processus 2

Nb_Place

probl me de la section critique solutions mat rielles1
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

probl me de la section critique
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
les s maphores
Les sémaphores
  • Structure

P (Sem)

File L

V (Sem)

Compteur K

Val

Sem

INIT (Val, Sem)

Opérations atomiques

les s maphores1

Val

Les sémaphores
  • Opération Init (Val, Sem)

Init (Val, Sem)

début

Sem. K := Val;

Sem. L := 

fin

les s maphores2

< 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

les s maphores3
Les sémaphores

Endormissement

  • Opération P (Sem)

CPU

élu

prêt

< 0

P(Sem)

bloqué

Sem

les s maphores4

 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

les s maphores5

 0

Les sémaphores

Réveil

  • Opération V (Sem)

CPU

élu

prêt

V(Sem)

bloqué

Sem

les s maphores6
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é

les s maphores7
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

les s maphores8
Les sémaphores

Section critique

Sémaphore Mutex initialisé à 1

P (Mutex)

V (Mutex)

Prélude

Section Critique

Postlude

les s maphores9
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

les s maphores10
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)

les s maphores11
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

notion de synchronisation producteur consommateur
Notion de synchronisationProducteur-Consommateur

Tampon de messages

Producteur

Consommateur

notion de synchronisation producteur consommateur1
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
un exemple de producteur consommateur les tubes unix
Un exemple de Producteur-Consommateurles Tubes Unix

Ecriture bloquante

- pas de consommateurs

- tube plein

Lecture bloquante

- pas de producteurs

- tube vide

un exemple de producteur consommateur les messages queue d unix
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

les s maphores producteur consommateur
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

les s maphores producteur consommateur1
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)

les s maphores producteur consommateur2
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)

slide29
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)

les s maphores12
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

les s maphores13
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é

notion de synchronisation lecteurs r dacteurs

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
un exemple de lecteurs r dacteurs m moire partag e distribu e mach

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

les s maphores lecteurs r dacteurs

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
les s maphores lecteurs r dacteurs1

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
slide36

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)

les s maphores lecteurs r dacteurs2
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
slide38

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)

slide39

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

les s maphores14
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é

les s maphores15
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

les s maphores16

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é

les s maphores17
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

les s maphores lecteurs r dacteurs3
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

les s maphores lecteurs r dacteurs4
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