Vous êtes sur la page 1sur 50

La communication

interprocessus

ZIDANE NORDINE ENSET RABAT


La communication interprocessus

Objectifs de ce module
En suivant ce module vous allez:

 Comprendre la problématique
de l'accès concurrent.
 Comprendre les algorithmes de
résolution.
 Trouver des solutions
optimisées.
ZIDANE NORDINE ENSET RABAT
La communication interprocessus

Plan du module
Voici les parties que nous allons aborder:

 Blocage et interblocage.
 Supprimer l'attente active.
ZIDANE NORDINE ENSET RABAT
La communication interprocessus

Blocage et interblocage

Notions et sémantique

ZIDANE NORDINE ENSET RABAT


Blocage et interblocage

Plan de la partie
Voici les chapitres que nous allons aborder:
 Un exemple concret
 Définitions de la section critique
 Généralisation du problème
 Pertinence de l’étude
 Critères nécessaires pour une
solution valide
 Première solution algorithmique
 L'excès de courtoisie
 L'algorithme de Dekker
ZIDANE NORDINE ENSET RABAT

 L'algorithme de Peterson
 L'instruction test & set
 Nécessité d'utiliser d'autres méthodes
Blocage et interblocage

Un exemple concret
Un professeur
veut réserver une
salle de TP
ZIDANE NORDINE ENSET RABAT
Blocage et interblocage

Un exemple concret
Il se connecte sur
campus booster
ZIDANE NORDINE ENSET RABAT
Blocage et interblocage

Un exemple concret
Il se connecte sur
campus booster

La salle est
libre
ZIDANE NORDINE ENSET RABAT
Blocage et interblocage

Un exemple concret
Il se connecte sur
campus booster

La salle est
libre

Un autre professeur
ZIDANE NORDINE ENSET RABAT

veut réserver la
même salle de TP
Blocage et interblocage

Un exemple concret
Il se connecte sur
campus booster

La salle est
libre

Il se connecte sur
ZIDANE NORDINE ENSET RABAT

campus Booster
Blocage et interblocage

Un exemple concret
Il se connecte sur
campus booster

La salle est
libre

Il se connecte sur
ZIDANE NORDINE ENSET RABAT

campus Booster

La salle est
libre
Blocage et interblocage

Un exemple concret
Il réserve la salle

La salle est
réservée!

Il se connecte sur
ZIDANE NORDINE ENSET RABAT

campus Booster

La salle est
libre
Blocage et interblocage

Un exemple concret
Il réserve la salle

La salle est
réservée!

Il réserve la salle
ZIDANE NORDINE ENSET RABAT

Message d'erreur (dans


le meilleur des cas)
Blocage et interblocage

Définitions de la section critique

Section critique – gn.


Partie d’un programme dont l’exécution de doit pas
entrelacer avec d’autres programmes.

Une fois qu’une tâche y entre, il faut lui permettre de


terminer cette section sans permettre à autres tâches
de jouer sur les mêmes données.
ZIDANE NORDINE ENSET RABAT
Blocage et interblocage

Généralisation du problème

Le problème de la section critique

1.Lorsqu’un processus manipule une donnée nous


disons qu’il se trouve dans une section critique (SC)

2.Le problème de la section critique est de trouver un


algorithme d’exclusion mutuelle
ZIDANE NORDINE ENSET RABAT
Blocage et interblocage

Généralisation du problème

Répéter
Section d’entrée
Section critique
Section de sortie
Section restante
Toujours
ZIDANE NORDINE ENSET RABAT
Blocage et interblocage

Généralisation du problème

Application

M. X demande une réservation de salle


Section d’entrée

Base de données dit que la salle A est disponible


Section
Critique
Salle A est assignée à X et marquée occupée
ZIDANE NORDINE ENSET RABAT

Section de sortie
Blocage et interblocage

Pertinence de l'étude

Nous retrouvons cette problématique dans:

 Les bases de données


 Le partage des ressources (fichiers, connections,
réseaux, …)
 Les automates (exemple du GAB)
 Le Hardware (Disque dur, …)
 Le développement (MMORPG, clients/serveur, …)
ZIDANE NORDINE ENSET RABAT

 Etc…
Blocage et interblocage

Critères nécessaires pour une solution valide

Exclusion Mutuelle :
 À tout instant, au plus un processus peut
être dans une section critique (SC) pour
une variable donnée.

Non interférence :
 Si un processus s’arrête dans sa section
restante, ceci ne devrait pas affecter les
autres processus.
ZIDANE NORDINE ENSET RABAT
Blocage et interblocage

Critères nécessaires pour une solution valide


Types de solutions

1. Solutions par logiciel


2. Solutions fournies par le matériel
3. Solutions fournies pas le SE
ZIDANE NORDINE ENSET RABAT

Atomicité = indivisibilité
Blocage et interblocage

Première solution algorithmique


Solution par logiciel

1. Débutons avec 2 processus : T0 et T1


2. Lorsque nous discutons de la tâche Ti, Tj dénotera
toujours l’autre tâche (i != j)
ZIDANE NORDINE ENSET RABAT
Blocage et interblocage

Première solution algorithmique


Algorithme 1 : processus se donnant mutuellement le
tour
1. La variable partagée turn est initialisée à 0 ou 1
2. La SC de Ti est exécutée ssi turn = i
3. Ti est occupé à attendre si Tj est dans SC.

Thread Ti:
repeat
while(turn!=i){};
SC
turn = j;
SR
ZIDANE NORDINE ENSET RABAT

forever
Blocage et interblocage

Première solution algorithmique


Initialisation de Turn à 0 ou 1

Processus T0: Processus T1:


repeat repeat
while(turn!=0){}; while(turn!=1){};
SC SC
turn = 1; turn = 0;
SR SR
forever forever
ZIDANE NORDINE ENSET RABAT
Blocage et interblocage

Première solution algorithmique


Initialisation de Turn à 0 ou 1

Processus T0: Processus T1:


repeat repeat
while(turn!=0){}; while(turn!=1){};
SC SC
turn = 1; turn = 0;
SR SR
forever forever
ZIDANE NORDINE ENSET RABAT
Blocage et interblocage

Première solution algorithmique


Initialisation de Turn à 0 ou 1

Processus T0: Processus T1:

repeat repeat

while(turn!=0){}; while(turn!=1){};

SC SC

turn = 1; turn = 0;

SR SR

forever forever
ZIDANE NORDINE ENSET RABAT

Algorithme 1 vue globale


Ex 2: Généralisation à n processus: chaque fois, avant qu’un
processus puisse rentrer dans sa section critique, il lui faut attendre
que tous les autres aient eu cette chance!
Blocage et interblocage

L’excès de courtoisie

Une variable Booléenne par processus :


flag[0] et flag[1]

Ti signale qu’il désire exécuter sa SC par:


flag[i] =vrai

Processus Ti:
repeat
flag[i] = vrai;
while(flag[j]==vrai){};
SC
ZIDANE NORDINE ENSET RABAT

flag[i] = faux;
SR
forever
Blocage et interblocage

L’excès de courtoisie
Après Après
Processus T0: vous, Processus T1: vous,
monsieur monsieur
repeat repeat
flag[0] = vrai; flag[1] = vrai;
while(flag[1]==vrai) while(flag[0]==vrai)
{}; {};
SC SC
flag[0] = faux; flag[1] = faux;
SR SR
forever forever
ZIDANE NORDINE ENSET RABAT
Blocage et interblocage

L’excès de courtoisie

Processus T0: Processus T1:


repeat repeat
flag[0] = vrai; flag[1] = vrai;
while(flag[1]==vrai) while(flag[0]==vrai)
{}; {};
SC SC
flag[0] = faux; flag[1] = faux;
SR SR
forever forever
ZIDANE NORDINE ENSET RABAT
Blocage et interblocage

L’excès de courtoisie

Processus T0: Processus T1:


repeat repeat
flag[0] = vrai; flag[1] = vrai;
while(flag[1]==vrai) while(flag[0]==vrai)
{}; {};
SC SC
flag[0] = faux; flag[1] = faux;
SR SR
forever forever
ZIDANE NORDINE ENSET RABAT
Blocage et interblocage

L’algorithme de Dekker
ZIDANE NORDINE ENSET RABAT
Blocage et interblocage

L’algorithme de Dekker
L’équitié
 Le fonctionnement correct de l'algorithme de
Dekker dépend du fait que chaque processus finit
toujours par progresser.

 Une hypothèse d’équité simple, suffisante pour


raisonner au sujet de l'algorithme de Dekker, est la
suivante.

 Tout processus qui a la possibilité d'exécuter une


ZIDANE NORDINE ENSET RABAT

instruction finira toujours par le faire.


Blocage et interblocage

L’algorithme de Dekker

Parmi les propriétés que nous spécifions pour un


programme parallèle, nous distinguons les deux
catégories suivantes :

Les propriétés de sûreté – gn.


Ce sont les propriétés qui expriment que certains états
indésirables ne sont jamais atteints. Elles ne dépendent
pas de l'utilisation d'une hypothèse d‘équité.

Les propriétés de vivacité – gn.


Celles-ci expriment que des états désirables seront
immanquablement atteints. Habituellement, ces propriétés
ZIDANE NORDINE ENSET RABAT

ne sont vraies qu'en présence d'une hypothèse d‘équité.


Blocage et interblocage
Nécessité d’utiliser d’autres méthodes

L'inconvénient majeur des solutions logicielles :


l'attente active

Solutions matérielles (justes) à l'exclusion mutuelle

Le masquage des interruptions:


Un processus qui veut rentrer en section critique inhibe les
interruptions pour conserver le processeur jusqu'à ce qu'elle
les rétablisse
ZIDANE NORDINE ENSET RABAT
Blocage et interblocage

Pause-réflexion sur la partie 1

Avez-vous des questions ?


ZIDANE NORDINE ENSET RABAT
La communication interprocessus

Supprimer l’attente active

Notions et sémantique

ZIDANE NORDINE ENSET RABAT


Supprimer l’attente active

Plan de la partie
Voici les chapitres que nous allons aborder:
 Définition d’un sémaphore
 Sémaphore d’exclusion mutuelle
 Sémaphore de synchronisation
 Généralisation : Le rendez-vous
 Le risque d’interblocage
 Le modèle producteur-consommateur à
une case
ZIDANE NORDINE ENSET RABAT
Supprimer l’attente active

Définition d’un sémaphore

Sémaphore – n.
Introduits par Dijkstra en 1965. Les sémaphores sont un
outil élémentaire de synchronisation qui évitent l'attente
active.

Sémaphore – n. Un sémaphore s =
 Un entier e(s) ;
 Une file d'attente f(s) ;
 Deux primitives P(s) et V(s).
 Soit p le processus qui effectue P(s) ou V(s).
ZIDANE NORDINE ENSET RABAT
Supprimer l’attente active

Définition d’un sémaphore

P(s) V(s)
E(s)=e(s) +1
e(s)= e(s) -1
si e(s)<=+0 alors
si e(s)<0 alors
sortir(q,f(s));
État(p)=bloqué;
état(q)=éligible;
Entrer(p,f(s));
entrer(q,f(éligibles));
ZIDANE NORDINE ENSET RABAT
Supprimer l’attente active

Sémaphore d’exclusion mutuelle

P(s) V(s)
E(s)=e(s) +1
e(s)= e(s) -1
si e(s)<=+0 alors
si e(s)<0 alors
sortir(q,f(s));
État(p)=bloqué;
état(q)=éligible;
Entrer(p,f(s));
entrer(q,f(éligibles));

But : protéger l'accès à une ressource unique (e.g. variable,


imprimante, ...). e(s) est initialisée à 1.
Utilisation :
P(s)
ZIDANE NORDINE ENSET RABAT

< Section Critique >


V(s)
Tous les processus doivent suivre la même règle.
Supprimer l’attente active

Sémaphore de synchronisation

But : un processus doit en attendre un autre pour continuer


(ou commencer) son exécution. e(s) est initialisée à 0.

Utilisation :

Processus 1 Processus 2

1er travail P(s) //attente processus 1


V(s) //réveil processus 2 2ème travail
ZIDANE NORDINE ENSET RABAT
Supprimer l’attente active

Généralisation : Le rendez-vous

Le rendez-vous (généralisation du problème précédent). Un


processus doit attendre que n autres processus soient
parvenus à un endroit précis pour poursuivre son exécution.
Nous utilisons :
 Un sémaphore Ssync initialisé à 0 ;
 Un sémaphore mutex initialisé à 1 ;
 Un sémaphore Sattend initialisé à 0 ;
 Un entier nb initialisé à 0.
Processus i Processus RdV
...
ZIDANE NORDINE ENSET RABAT

P(mutex);
nb=nb+1; ...
si nb=n alors V(Ssync; nb=0; P(Sync);
V(mutex); V(Sattend,n);
P(Sattend); ...
Supprimer l’attente active

Le risque d’interblocage

SemA et SemB sont deux sémaphores d'exclusion mutuelle.


Il existe deux remèdes différents pour s'affranchir des
interblocages.
Prévention :
 Exécuter les P() toujours dans le même ordre ;
 Utiliser un algorithme tel que l'algorithme du banquier et
déclarer quelles sont les ressources que nous allons utiliser.
Processus i Processus j
P(semA); P(semB);
ZIDANE NORDINE ENSET RABAT

P(semB); P(semA);
<SC> <SC>
V(semB); V(semA);
V(semA); V(semB);
Supprimer l’attente active

Le risque d’interblocage
Détection, guérison

 Construire le graphe des conflits (périodiquement) ;


 Si un circuit  interblocage ;
 Tuer un processus  effectuer les V() manquants.
ZIDANE NORDINE ENSET RABAT
Supprimer l’attente active

Le modèle producteur-consommateur à une case

Modèle producteur-consommateur – gn.


Le producteur et le consommateur sont 2 processus
cycliques.

Producteur Consommateur

produire(messageP); retirer(case, messageC);


ZIDANE NORDINE ENSET RABAT

déposer(case, messageP); consommer(messageC);


Supprimer l’attente active

Le modèle producteur-consommateur à une case


Nous utilisons 2 sémaphores plein et vide initialisés à 0 et 1.
plein indique si la case est pleine et vide...

Producteur Consommateur
P(vide) P(plein)
produire(messageP); retirer(case, messageC);
déposer(case, messageP); consommer(messageC);
V(plein) V(vide)

Amélioration:
Producteur Consommateur
ZIDANE NORDINE ENSET RABAT

produire(messageP); P(plein)
P(vide) retirer(case, messageC);
déposer(case, messageP); V(vide)
V(plein) consommer(messageC);
Supprimer l’attente active

Pause-réflexion sur la partie 2

Avez-vous des questions ?


ZIDANE NORDINE ENSET RABAT
La communication interprocessus

Résumé du module

Interruption
Interblocage

Section Attente active


ZIDANE NORDINE ENSET RABAT

critique
La communication interprocessus

Pour aller plus loin…


Si vous voulez approfondir vos connaissances:

Publications

Des ports d'E/S à la


gestion de
processus

Sites web
http://www.microsoft.com/france/windows/vista/default.mspx
ZIDANE NORDINE ENSET RABAT

http://www.docsdunet.com/doc_ado.html

http://www.linux-france.org/article/dalox/
Félicitations
Vous avez suivi avec succès le
chapitre n°3
La communication
interprocessus
ZIDANE NORDINE ENSET RABAT
La communication interprocessus

Fin
ZIDANE NORDINE ENSET RABAT

 Préférer une solution sans attente active

Vous aimerez peut-être aussi