Vous êtes sur la page 1sur 11

Introduction Mécanismes de synchronisation Interblocage et traitement Communication entre processus

Rendez-vous de N entités.

 Etablir un point de rendez-vous dans le déroulement de N


processus (N supposé connu)
 Définition de la contrainte de synchronisation :
Pour tout i,j dans [1,N]
fin(début_i) PRECEDE début(suite_j)

28/11/2019 Synchronisation et Communication 41


entre Processus

Introduction Mécanismes de synchronisation Interblocage et traitement Communication entre processus

Rendez-vous de N entités.

Contexte commun :
TOUS_LA : sémaphore initialisé à 0;
MUTEX : sémaphore initialisé à 1;
nombre_présent_RDV : entier initialisé à 0;

28/11/2019 Synchronisation et Communication 42


entre Processus
Introduction Mécanismes de synchronisation Interblocage et traitement Communication entre processus

Rendez-vous de N entités.

Contexte commun :
TOUS_LA : sémaphore initialisé à 0;
MUTEX : sémaphore initialisé à 1;
nombre_présent_RDV : entier initialisé à 0;

28/11/2019 Synchronisation et Communication 43


entre Processus

Introduction Mécanismes de synchronisation Interblocage et traitement Communication entre processus

Modèle du producteur / consommateur.

 Une file de messages (une boîte aux lettres), FIFO en général :

 Problèmes de synchronisation et de communication sous-jacents :


 Une case libre doit être allouée à un seul processus producteur.
 Que faire si plus de case libre ?
 Une case pleine doit être lue par un seul consommateur
 Que faire si aucune case pleine ?

28/11/2019 Synchronisation et Communication 44


entre Processus
Introduction Mécanismes de synchronisation Interblocage et traitement Communication entre processus

Modèle du producteur / consommateur.

 Solution pour un producteur et un consommateur :


Contexte commun :
SNbVides : sémaphore initialisé à N ;
SNbPleins : sémaphore initialisé à 0;
Tampon: Tableau de N messages ;
Processus Producteur Processus Consommateur
Var Queue : entier initialisé à 0; Var Tete : entier initialisé à 0;
MessProd : message; MessCons : message;
Debut Debut
Répéter Répéter
Fabriquer(MessProd);
Prélever(MessCons,Tampon(Tete));
Déposer(MessProd,Tampon(Queue));
Traiter(MessCons);
Jusqua Faux; Jusqua Faux;
FinProcessus FinProcessus
28/11/2019 Synchronisation et Communication 45
entre Processus

Introduction Mécanismes de synchronisation Interblocage et traitement Communication entre processus

Modèle du producteur / consommateur.

 Solution pour un producteur et un consommateur :


Contexte commun :
SNbVides : sémaphore initialisé à N ;
SNbPleins : sémaphore initialisé à 0;
Tampon: Tableau de N messages ;
Processus Producteur Processus Consommateur
Var Queue : entier initialisé à 0; Var Tete : entier initialisé à 0;
MessProd : message; MessCons : message;
Debut Debut
Répéter Répéter
Fabriquer(MessProd);
P(SNbVides); Prélever(MessCons,Tampon(Tete));
Déposer(MessProd,Tampon(Queue));
Traiter(MessCons);
Jusqua Faux; Jusqua Faux;
FinProcessus FinProcessus
28/11/2019 Synchronisation et Communication 46
entre Processus
Introduction Mécanismes de synchronisation Interblocage et traitement Communication entre processus

Modèle du producteur / consommateur.

 Solution pour un producteur et un consommateur :


Contexte commun :
SNbVides : sémaphore initialisé à N ;
SNbPleins : sémaphore initialisé à 0;
Tampon: Tableau de N messages ;
Processus Producteur Processus Consommateur
Var Queue : entier initialisé à 0; Var Tete : entier initialisé à 0;
MessProd : message; MessCons : message;
Debut Debut
Répéter Répéter
Fabriquer(MessProd);
P(SNbVides); Prélever(MessCons,Tampon(Tete));
Déposer(MessProd,Tampon(Queue));
V(SNbPleins); Traiter(MessCons);
Jusqua Faux; Jusqua Faux;
FinProcessus FinProcessus
28/11/2019 Synchronisation et Communication 47
entre Processus

Introduction Mécanismes de synchronisation Interblocage et traitement Communication entre processus

Modèle du producteur / consommateur.

 Solution pour un producteur et un consommateur :


Contexte commun :
SNbVides : sémaphore initialisé à N ;
SNbPleins : sémaphore initialisé à 0;
Tampon: Tableau de N messages ;
Processus Producteur Processus Consommateur
Var Queue : entier initialisé à 0; Var Tete : entier initialisé à 0;
MessProd : message; MessCons : message;
Debut Debut
Répéter Répéter
Fabriquer(MessProd); P(SNbPleins);
P(SNbVides); Prélever(MessCons,Tampon(Tete));
Déposer(MessProd,Tampon(Queue));
V(SNbPleins); Traiter(MessCons);
Jusqua Faux; Jusqua Faux;
FinProcessus FinProcessus
28/11/2019 Synchronisation et Communication 48
entre Processus
Introduction Mécanismes de synchronisation Interblocage et traitement Communication entre processus

Modèle du producteur / consommateur.

 Solution pour un producteur et un consommateur :


Contexte commun :
SNbVides : sémaphore initialisé à N ;
SNbPleins : sémaphore initialisé à 0;
Tampon: Tableau de N messages ;
Processus Producteur Processus Consommateur
Var Queue : entier initialisé à 0; Var Tete : entier initialisé à 0;
MessProd : message; MessCons : message;
Debut Debut
Répéter Répéter
Fabriquer(MessProd); P(SNbPleins);
P(SNbVides); Prélever(MessCons,Tampon(Tete));
Déposer(MessProd,Tampon(Queue)); V(SNbVides);
V(SNbPleins); Traiter(MessCons);
Jusqua Faux; Jusqua Faux;
FinProcessus FinProcessus
28/11/2019 Synchronisation et Communication 49
entre Processus

Introduction Mécanismes de synchronisation Interblocage et traitement Communication entre processus

Modèle du producteur / consommateur.

 Cas plusieurs producteurs et plusieurs consommateurs :


Contexte commun :
SNbVides : sémaphore initialisé à N ;
SNbPleins : sémaphore initialisé à 0;
mutexProd, mutexCons : sémaphore initialisé à 1;
Tampon: Tableau de N messages ;
Processus Producteur Processus Consommateur
Var Queue : entier initialisé à 0; Var Tete : entier initialisé à 0;
MessProd : message; MessCons : message;
Debut Debut
Répéter Répéter
Fabriquer(MessProd); P(SNbPleins);
P(SNbVides);
Prélever(MessCons,Tampon(Tete))
Déposer(MessProd,Tampon(Queue));
V(SNbVides);
V(SNbPleins); Traiter(MessCons);
Jusqua Faux; Jusqua Faux;
FinProcessus FinProcessus

28/11/2019 Synchronisation et Communication 50


entre Processus
Introduction Mécanismes de synchronisation Interblocage et traitement Communication entre processus

Modèle du producteur / consommateur.

 Cas plusieurs producteurs et plusieurs consommateurs :


Contexte commun :
SNbVides : sémaphore initialisé à N ;
SNbPleins : sémaphore initialisé à 0;
mutexProd, mutexCons : sémaphore initialisé à 1;
Tampon: Tableau de N messages ;
Processus Producteur Processus Consommateur
Var Queue : entier initialisé à 0; Var Tete : entier initialisé à 0;
MessProd : message; MessCons : message;
Debut Debut
Répéter Répéter
Fabriquer(MessProd); P(SNbPleins);
P(SNbVides);
P(mutexProd); Prélever(MessCons,Tampon(Tete))
Déposer(MessProd,Tampon(Queue));
V(SNbVides);
V(SNbPleins); Traiter(MessCons);
Jusqua Faux; Jusqua Faux;
FinProcessus FinProcessus

28/11/2019 Synchronisation et Communication 51


entre Processus

Introduction Mécanismes de synchronisation Interblocage et traitement Communication entre processus

Modèle du producteur / consommateur.

 Cas plusieurs producteurs et plusieurs consommateurs :


Contexte commun :
SNbVides : sémaphore initialisé à N ;
SNbPleins : sémaphore initialisé à 0;
mutexProd, mutexCons : sémaphore initialisé à 1;
Tampon: Tableau de N messages ;
Processus Producteur Processus Consommateur
Var Queue : entier initialisé à 0; Var Tete : entier initialisé à 0;
MessProd : message; MessCons : message;
Debut Debut
Répéter Répéter
Fabriquer(MessProd); P(SNbPleins);
P(SNbVides);
P(mutexProd); Prélever(MessCons,Tampon(Tete))
Déposer(MessProd,Tampon(Queue));
V(mutexProd); V(SNbVides);
V(SNbPleins); Traiter(MessCons);
Jusqua Faux; Jusqua Faux;
FinProcessus FinProcessus

28/11/2019 Synchronisation et Communication 52


entre Processus
Introduction Mécanismes de synchronisation Interblocage et traitement Communication entre processus

Modèle du producteur / consommateur.

 Cas plusieurs producteurs et plusieurs consommateurs :


Contexte commun :
SNbVides : sémaphore initialisé à N ;
SNbPleins : sémaphore initialisé à 0;
mutexProd, mutexCons : sémaphore initialisé à 1;
Tampon: Tableau de N messages ;
Processus Producteur Processus Consommateur
Var Queue : entier initialisé à 0; Var Tete : entier initialisé à 0;
MessProd : message; MessCons : message;
Debut Debut
Répéter Répéter
Fabriquer(MessProd); P(SNbPleins);
P(SNbVides); P(mutexCons);
P(mutexProd); Prélever(MessCons,Tampon(Tete))
Déposer(MessProd,Tampon(Queue));
V(mutexProd); V(SNbVides);
V(SNbPleins); Traiter(MessCons);
Jusqua Faux; Jusqua Faux;
FinProcessus FinProcessus

28/11/2019 Synchronisation et Communication 53


entre Processus

Introduction Mécanismes de synchronisation Interblocage et traitement Communication entre processus

Modèle du producteur / consommateur.

 Cas plusieurs producteurs et plusieurs consommateurs :


Contexte commun :
SNbVides : sémaphore initialisé à N ;
SNbPleins : sémaphore initialisé à 0;
mutexProd, mutexCons : sémaphore initialisé à 1;
Tampon: Tableau de N messages ;
Processus Producteur Processus Consommateur
Var Queue : entier initialisé à 0; Var Tete : entier initialisé à 0;
MessProd : message; MessCons : message;
Debut Debut
Répéter Répéter
Fabriquer(MessProd); P(SNbPleins);
P(SNbVides); P(mutexCons);
P(mutexProd); Prélever(MessCons,Tampon(Tete))
Déposer(MessProd,Tampon(Queue)); V(mutexCons);
V(mutexProd); V(SNbVides);
V(SNbPleins); Traiter(MessCons);
Jusqua Faux; Jusqua Faux;
FinProcessus FinProcessus

28/11/2019 Synchronisation et Communication 54


entre Processus
Introduction Mécanismes de synchronisation Interblocage et traitement Communication entre processus

Modèle client / serveur.

 Sémaphore privé :

Un sémaphore privé spriv d’un processus P est tel que


seul P peut exécuter P(spriv) et V(spriv), les autres
processus ne peuvent exécuter que V(spriv).

 la valeur initiale du sémaphore spriv est 0

 la file d’attente d’un sémaphore privé contient au


plus un processus.

28/11/2019 Synchronisation et Communication 55


entre Processus

Introduction Mécanismes de synchronisation Interblocage et traitement Communication entre processus

Modèle client / serveur.

 ex : schéma client/serveur
Un processus serveur dont le rôle est d’offrir un service à des processus
clients ne peut s’exécuter que sur demande des clients, il traite une seule
demande à la fois.

Contexte commun: spriv : sémaphore initialisé à 0;


Processus Serveur
Tantque vrai faire
P(spriv)
{ Réalisation du service }
...
Fintantque

28/11/2019 Synchronisation et Communication 56


entre Processus
Introduction Mécanismes de synchronisation Interblocage et traitement Communication entre processus

Modèle client / serveur.

 ex : schéma client/serveur
Un processus serveur dont le rôle est d’offrir un service à des processus
clients ne peut s’exécuter que sur demande des clients, il traite une seule
demande à la fois.

Contexte commun: spriv : sémaphore initialisé à 0;


Processus Serveur Processus Client1
Tantque vrai faire ...
P(spriv) V(spriv)
{ Réalisation du service } ...
...
Fintantque
Processus Client2
...
V(spriv)
...

28/11/2019 Synchronisation et Communication 57


entre Processus

Introduction Mécanismes de synchronisation Interblocage et traitement Communication entre processus

Modèle des lecteurs / rédacteurs.

 Généralisation de l’usage exclusif d’une ressource lorsque l’on


veut distinguer :
 Usage en modification (en écriture/rédaction)
 exclusivité stricte : 1 seul à la fois
 Usage en consultation (en lecture)
 exclusivité relâchée : éventuellement plusieurs …

 Distinction exclusivité stricte / relâchée :


 Exclusion mutuelle entre rédacteurs : OUI
 Exclusion mutuelle entre lecteurs et rédacteurs : OUI
 Exclusion mutuelle entre lecteurs : NON

 Différentes politiques possibles afin de gérer les priorités pour les


différents types de processus

28/11/2019 Synchronisation et Communication 58


entre Processus
Introduction Mécanismes de synchronisation Interblocage et traitement Communication entre processus

Politiques de mise en œuvre.

 First-Come-First-Served (FIFO)
 Exemple de ressource : un fichier

 Aucun accès simultané des lecteurs (exclusion mutuelle classique)


 Par contre, c’est l’ordre de passage souhaitable car le plus
équitable

28/11/2019 Synchronisation et Communication 59


entre Processus

Introduction Mécanismes de synchronisation Interblocage et traitement Communication entre processus

Politique favorisant les lecteurs.

28/11/2019 Synchronisation et Communication 60


entre Processus
Introduction Mécanismes de synchronisation Interblocage et traitement Communication entre processus

Politique favorisant les lecteurs.

28/11/2019 Synchronisation et Communication 61


entre Processus

Introduction Mécanismes de synchronisation Interblocage et traitement Communication entre processus

Politique favorisant les lecteurs.

28/11/2019 Synchronisation et Communication 62


entre Processus

Vous aimerez peut-être aussi