communication inter process us v2

49
 1 ESPRIT 2009-2010

Upload: ahmed-ben-amor

Post on 15-Jul-2015

29 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 1/49

 

1

ESPRIT 2009-2010

Page 2: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 2/49

 

1. Problématique

2. Sections critiques et exclusion mutuelle

3. Exclusion mutuelle par masquage des interruptions

4. Exclusion mutuelle par attente active1. Proposition 1 : Les variables de verrouillage

2. Proposition 2 : L¶alternance stricte

3. Solution de Peterson

5. Exclusion mutuelle sans attente active

a. Primitives  sleep et wakeup

 b. Sémaphores

2

Page 3: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 3/49

 

3

Processus A

Processus B

« 3 2 1 0

f1f2« f0 Répertoire de spoule

Démon d¶impression

Variable partagée in=3

 A : lire in,next_free_slot = 3Interruption: la CPU bascule versle processus B

B : lire in,next_free_slot = 3,entrée3 = fichierB,in = 4

Problème: le fichier B ne sera jamais imprimé

 A: entrée3 = fichier 

 A,in = 4

Exemple : la spoule d¶impression

Page 4: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 4/49

 

4

 A

B

t1 t2 t3 t4

 A entre dans sa section

critique

B tente d¶entrer dans sa

section critique

 A quitte sa section

critique

B entre dans sa section

critique

B quitte sa sectioncritique

` Le problème est dû aux conflits d¶accès à la même ressource.

` La partie du programme à partir de laquelle on accède à la

ressource partagée est appelée section (région) critique.

Solution

` L¶exclusion mutuelle est une méthode qui assure qu¶un seul  processus est autorisé d¶accéder à une ressource partagée; les

autres processus seront exclus de la même activité.

Page 5: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 5/49

 

Quatre conditions doivent être vérifier pour assurer l¶exclusion mutuelle :

1. Deux processus ne doivent pas se trouver simultanément dans leurs

sections critiques.

2. Aucun processus à l¶extérieur de sa section critique ne doit bloquer les autres processus.

3. Aucun processus ne doit attendre indéfiniment pour entrer dans sa

section critique.

4. Il ne faut pas faire d¶hypothèse quant à la vitesse ou le nombre de

 processeurs

Page 6: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 6/49

 

Solution 1 : Masquage des interruptions

` Lorsqu¶un processus entre en section critique il doit masquer les

interruptions.

6

Pas de commutation de processus

` Lorsqu¶ il quitte sa section critique il doit restaurer les interruptions.

` C¶est une solution matérielle qui permet de résoudre complètement le

 problème. Mais elle est dangereuse en mode utilisateur s¶il oublie derestaurer les interruptions.

Page 7: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 7/49

Principe :

` Un processus désirant entrer dans une section critique doit être mis en

attente jusqu¶à ce que la section critique devient libre.

` Un processus quittant la section critique doit le signaler aux autres

 processus.

7

Algorithme d¶accès à une section critique :Entrer_Section_Critique () /* attente si SC non libre */

Section_Critique() /* un seul processus en SC */

Quitter_Section_Critique() /* libérer la SC*/

Type d¶attente :

` Active: La procédure Entrer_Section_Critique est une boucle dont la

condition est un test qui porte sur des variables indiquant la présence ou

non d¶un processus en Section critique.

` Non active: Le processus passe dans l¶état endormi et ne sera réveillé

que lorsqu¶il sera autorisé à entrer en section critique.

 

Page 8: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 8/49

8

Proposition 1 : Variables de verrouillage

Un verrou est une variable binaire partagée qui indique la présence d¶un

 processus en section critique.

` si verrou=0 alors section critique libre` si verrou=1 alors section critique occupée

void entrer_Section_Critique ()

{while (verrou == 1) ; /* attente active */verrou=1 ;

}

Void quitter_Section_Critique ()

{

verrou=0 ;}

Problème :

` Cette solution ne garantie pas l¶exclusion mutuelle car le verrou est une

variable partagée qui peut constituer aussi une section critique.

 

Page 9: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 9/49

9

Proposition 2:Alternance stricte

Tour est une variable partagée qui indique le numéro de processus autorisé a

entrer en section critique.

void entrer_Section_Critique (int process){

while (Tour!=process) ; /* attente active */}

Void quitter_Section_Critique (){

Tour = (Tour+1) ;}

L¶alternance stricte est une solution simple et facile a implémenter.

Problème :

Un processus qui possède Tour peut ne pas être intéressé immédiatement par 

la section critique et en même temps il bloque un autre processus qui

demandeur Problème de blocage et problème de famine

 

Page 10: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 10/49

10

Solution de Peterson#define FAUX 0#define VRAI 1#define N 2int tour ; /* à qui le tour */

int interesse[N] ; /* initialisé à FAUX */void entrer_Section_Critique (int process){int autre ;autre = 1-process ;interesse[process]=VRAI; /* process est intéressé */tour = process ; /* demander le tour */

while (tour == process && interesse[autre] == VRAI) ;}

Void quitter_Section_Critique ()

{interesse[process]=FAUX ;

}

` Cette solution assure complètement l¶exclusion mutuelle. Mais, le

 processus qui attend sa section critique consomme du temps processeur

inutilement (attente active).

 

Page 11: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 11/49

11

` L¶idée est qu¶un processus qui ne peut pas entrer en section critique

 passe à l¶état bloqué au lieu de consommer le temps processeur 

inutilement. Il sera réveillé lorsqu¶il pourra y entrer.

` Les primitives Sleep et Wakeup : Le système d¶exploitation offre

deux appels système :

x Sleep (dormir) qui bloque le processus appelant.

x Wakeup (réveiller) qui réveille le processus donné en argument.

 

Page 12: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 12/49

12

` Application des primitives Sleep et Wakeup au modèle Producteur 

Consommateur:

Producteur 

f1f2« f0 Tampon

Variable partagée c ompteur=3 Consommateur 

` Deux processus (le producteur et le consommateur) coopèrent en partageant un même tampon:

` Le producteur produit des objets qu¶il dépose dans le tampon.

` Le consommateur retire des objets du tampon pour les consommer.

 

Page 13: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 13/49

13

#define N 100 /* taille du tampon */

int compteur = 0 ; /* objets dans tampon */void producteur () {

while (TRUE)

{ produire_objet() ;if (compteur == N) sleep () ;

mettre_objet() ;compteur = compteur + 1 ;

if (compteur == 1)

wakeup(consommateur) ;}

}

void consommateur () {

while (TRUE){

if (compteur == 0) sleep() ;retirer_objet()

compteur = compteur ² 1 ;if (compteur == N-1)

wakeup (producteur) ;consommer_objet(«) ;

}}

 

Page 14: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 14/49

14

` Problème de blocage:

` Le consommateur note que le tampon est vide

` Interruption: arrêt du consommateur sans qu¶il parte en sommeil

` Le producteur insère un jeton, incrémente le décompte, appelle

wakeup pour réveiller le consommateur 

` Le signal wakeup est perdu, car le consommateur n¶est pas en

sommeil` Le consommateur reprend, pour lui le tampon est vide, il dort

` Le producteur remplit le tampon et dort

 

Page 15: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 15/49

15

` Solution: ajouter un bit d¶attente d¶éveil.

` Quand un wakeup est envoyé à un processus le bit est à 1;

` le consommateur teste le bit, s¶il est à 1, il le remet à 0 et reste en éveil

 

Page 16: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 16/49

16

Pour remédier au problème des réveils en attente (les wakeup

perdus), l¶idée est d¶employé une variable entière appelée:

Sémaphore à laquelle est associée une file d¶attente des processus

bloqués.

sémaphore=0 aucun réveil n¶est mémorisé

sémaphore>0 un ou plusieurs réveils sont en attente

Un sémaphore s est manipulé par les opérations :

1. down(s) ou P(s) : - décrémente la valeur de s si s>0,

- si s=0, alors le processus est mis en attente.

2. up(s) ou V(s) : - incrémente la valeur de s,

- si un ou plusieurs processus sont en attente sur ce

sémaphore, l'un d'entre eux est réveillé,

 

Page 17: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 17/49

17

Pour assurer l¶exclusion mutuelle un sémaphore peut être programmé

de la manière suivante :

initialisation mutex = 1 /* nombre de processus autorisés à entrer 

simultanément dans la section critique */P(mutex)<section_critique>

V (mutex)

Nom du sémaphore

 

Page 18: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 18/49

func tion Init(semaphore sem, int val)

{

disable_interrupt;sem.K:= val;

enable_interrupt;

}

18

 

Page 19: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 19/49

` func tion P(semaphore sem)

{ disable_interrupt;

if (sem.K == 0)

{ L.suivant = processus_courant;processus_courant.state= bloque;

reordonnancement = vrai; }

sem.K=sem.K-1;

enable_interrupt;}

19

 

Page 20: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 20/49

` func tion V(semaphore sem) {

disable_interrupt;

sem.K=sem.K+1;

if (not L.vide) {processus_reveille= L.tete;

processus_reveille.state = prêt ;

reordonnancement = vrai; }

enable_interrupt;

}

20

 

Page 21: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 21/49

21

 Application au modèle Producteur / Consommateur :

Trois sémaphores sont nécessaires:

1. plein: compte le nombre de places occupées

2. vide : compte le nombre de places libres

3. Mutex : assure que le producteur et le consommateur  

n'accèdent jamais en même moment à la mémoire tampon.

 

Page 22: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 22/49

22

 Application au modèle Producteur / Consommateur :

#define N 100 /* taille du tampon */

typedef int semaphore; /* les sémaphores sont des entiers */semaphore mutex=1 ; /* contrôle d·accès à la section critique */

semaphore vide=N; /* contrôle les emplacements vide dans le tampon */

Semaphore plein=0; /* contrôle les emplacements plein dans le tampon */

void consommateur () {

while (TRUE){ down(plein);

down(mutex);

retirer_objet()up(mutex);up(vide);

consommer_objet(«) ; }}

void producteur () {

while (TRUE){ produire_objet() ;

down(vide);

down(mutex);mettre_objet() ;up(mutex);

up(plein) }}

 

Page 23: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 23/49

23

 Application au modèle Lecteurs / Rédacteurs :

Permettre une compétition cohérente entre deux types de

processus (les lecteurs » et les rédacteurs ») :

Plusieurs lecteurs peuvent accéder simultanément à la

ressource,

Les rédacteurs sont exclusifs entre eux pour leur exploitation

de la ressource,

Un rédacteur est exclusif avec les lecteurs

 

Page 24: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 24/49

24

 

Page 25: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 25/49

25

Convient aux systèmes distribués

2 primitives appels systèmes: send et rec eive ± send (destination, &message)

 ± rec eive (source, &message)

Problèmes ± Perte de messages dans le réseau,

 ± + de fiabilité par les  ACKs, la retransmission de messages etla détection de doublons

Problème du producteur-consommateur  ± Le consommateur envoie N messages vides au producteur 

 ± Le producteur remplit chaque message vide reçu

 

Page 26: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 26/49

26

#define N 100

void producer (void) {

int item;

message m;

while (TRUE) {

item =produce_item();

receive(consumer,&m);

build_message(&m,item);

send(consumer,&m);

}}

}

void consumer (void) {

int item, i;

for(i=0; i<N;i++)

send(producer, &m);

while (TRUE) {

receive(producer,&m);item = extract_item(&m);

send(producer, &m);

consume_item(item);

}

 

Page 27: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 27/49

` Mécanisme de synchronisation destiné aux groupes de processus.

` Cas d¶applications décomposées en phases, où aucun processus

ne peut entrer dans la phase suivante tant que tous les processus

ne sont pas prêts à y entrer.

` Solution: placer une barrière, et quand un processus atteint la

barrière il est bloqué jusqu¶à ce que tous les processus atteignent la

barrière.

27

 

Page 28: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 28/49

28

 

Page 29: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 29/49

29

Un moniteur est un module de programme de haut niveau permettant

au compilateur (pas au processus utilisateur) de réaliser l¶exclusion

mutuelle.

Un moniteur est constitué d'un ensemble de variables d'état et de

procédures possédant les caractéristiques suivantes :

1. Seules certaines procédures, appelées entrées (entry) du

moniteur peuvent être appelées de l'extérieur 

2. Un seul processus actif dans un moniteur à un moment donné.

3. Les variables d'état ne sont pas visibles de l'extérieur du

module4. Le moniteur fournit des possibilités de synchronisation au

moyen de conditions.

5. Une instruction initiale est exécutée une seule fois à

l'initialisation du programme

 

Page 30: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 30/49

30

Une condition C est une variable manipulable par seulement deux

opérations :

L'opération attendre(C) (en anglais wait(c)): bloque le

processus appelant et le place en queue de file d'attente

L'opération signaler(C) (en anglais signal(c)): retire un

processus en tête de la file d'attente, si elle est non vide, etl'active

Une condition est implantée dans un système d¶exploitation comme

une file d'attente de processus bloqués, c'est à dire une structure de

données capable de mémoriser le blocage de processus.

En général, une condition de synchronisation est exprimée à l'aide

d'une expression booléenne faisant intervenir les valeurs des

variables d'état :

SI NON <condition>ALORS attendre (c) FSI;SI NON <condition>ALORS attendre (c) FSI;

 

Page 31: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 31/49

31

 Algorithme Moniteur:

Moniteur ressource ;

var ressource_libre : booleen;

libre : condition;

Procédure acquérir ()Procédure acquérir ()

debutsi non ressource_libre alors attendre(libre) fsi;

ressource_libre:= Faux;

fin acquérir;

Procédure libérer ()Procédure libérer ()

debut

ressource_libre := vrai;

signaler(libre);fin liberer;

debut

ressource_libre := vrai;fin ressource;

Nom du moniteur 

Fonction principale d¶initialisation du

moniteur 

Variables et conditions globales

portant sur les ressources partagées.

Procédure d¶entrée en

section critique

Procédure quitter section critique

 

Page 32: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 32/49

3232

 Application au modèle producteur consommateur:

monitor ProducteurConsommateur 

condition full, empty;

integer count;

procedure i nsert (item)

begin

if count = N then wait(full)insert_item(item);

count++;

if (count = 1) then signal(empty);

end;

procedure remove ()

begin

if count = 0 then wait(empty);

item = remove_item;count--;

if (count = N ±1) then signal(full);

end;

count = 0;

end monitor;

procedure producteur 

begin

while true {item = produce_item;

P roduc teurConsommateur .insert(item);

}

end;

procedure consommateur 

begin

while true {

item = P roduc teurConsommateur.remove;

consume_item(item);

}

end;

 

Page 33: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 33/49

` Cinq philosophes sont réunis autour d¶une table

pour manger un plat chinois.

` Chaque philosophe a devant lui une assiette et

un couvert.

` Un philosophe a besoin de deux couverts pour manger.

33

 

Page 34: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 34/49

` Lorsqu¶il ne mange pas, le philosophe réfléchit.

34

Le dîner des philosophes

 

Page 35: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 35/49

35

 

Page 36: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 36/49

36

 

Page 37: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 37/49

37

 

Page 38: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 38/49

38

 

Page 39: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 39/49

39

 

Page 40: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 40/49

40

 

Page 41: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 41/49

41

 

Page 42: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 42/49

42

 

Page 43: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 43/49

43

Exemples Introductifs

Exemple 1 : Considérons un croisement où les voitures s·immobilisent mutuellement :

aucune voiture en peut progresser que si on ne prend pas les mesures spéciales.

Exemple 2 : Sémaphores -- considérons deux processus P1 et P2 :P1 P2... ....Down(x) Down(y)Down(y) Down(x).... ....

 

Page 44: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 44/49

4444

Les ressources sont, généralement, demandées par des appels système et

allouées par le système d¶exploitation Définition : Le bloc age est une situation où chaque proc essus est en

attente d ¶une ressour c e détenue par un autre. P uisqu¶ils sont tous enattente, auc un ne peut libérer c e que les autres attendent.

Ex em pl e 3 : Processus et blocs -- Considérons avoir P processus et Tblocs. Pour s'exécuter, chaque processus a besoin de N blocs.

 

Page 45: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 45/49

45

La concurrence entre processus et l¶allocation dynamique de

ressources peuvent introduire un interblocage. Ce phénomène

résulte de la conjonction de quatre circonstances :

Ex c l usi on mutuell e : Chaque ressource est utilisable

exclusivement par un processus, et un seul, car son partage

donnerait des résultats incohérents.

Pas de réqu i si t i on : les ressources déjà allouées restentnécessaires aux processus qui les ont reçue et elles ne

peuvent être réquisitionnées.

 

Page 46: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 46/49

T eni r et attendre : chaque processus ne peut progresser que

s ¶il obtient les ressources qu ¶il requiert dynamiquement par des

demandes successives; il attend donc les ressources de sadernière requête avant de poursuivre son déroulement.

 Attente c i rcu l ai re : plusieurs processus en attente de ressources

allouées à d ¶autres processus et il s¶est formé une attente

circulaire

46

 

Page 47: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 47/49

47

Par un g ra phe d¶all ocat i on des ressources, soit GA(N ,  A )

orienté biparti où

 ± N : 2  part i t i ons de noeuds

un processus P est représenté par 

une ressource R est représentée par  ±  A : ensembl e des arcs :

un processus en attente d¶une ressource :

une ressource est allouée à un processus :

Ex em pl e d¶a ppar i t i on d¶un bl ocag e :

P P 

P P R 

P P R 

P P 

R1

R2 

Q Q 

P P 

R1

R2 

Q Q 

(a) Existence d¶un circuit(a) Existence d¶un circuit :: blocageblocage(b) Pas d¶exclusion mutuelle(b) Pas d¶exclusion mutuelle

 

Page 48: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 48/49

48

1. I g norer l e bl ocag e (politique de l¶autruche : ça n¶arrivera pas)

 ± Approche adoptée par Unix (¶¶don¶t worry, it will be fine¶¶).

 ± Si cela arrive, relancer le système !

2. . Détect i on-Guér i son ± Laisser le blocage se produire puis après l¶avoir détecté, reprendre

les ressources de certains.

 ± Rompre le blocage par tuer un ou plus de processus, jusqu¶à

suppression des circuits (dans le graphe d ¶allocation des

ressources) ; Quelle est la victime?

 

Page 49: Communication Inter Process Us V2

5/13/2018 Communication Inter Process Us V2 - slidepdf.com

http://slidepdf.com/reader/full/communication-inter-process-us-v2 49/49

3. Mét hode prévent i ve

Garantir qu¶une situation de blocage ne se produira jamais

Imposer des contraintes sur les demandes de manière que le blocage

soit impossible

x Demander toutes les ressources à l ¶avance pas d ¶attente

x Exiger de connaître à l ¶avance les besoins et résultats

x permettre la réquisition

x Numéroter les ressources et les demandes doivent être faites selon

l ¶ordre indiqué

49