You are on page 1of 34

Systmes dExploitation Avancs

Prpar par : Anis ZOUAOUI Hassen JEDIDI


Anis.ZOUAOUI@esprit.tn Hassen.JEDIDI@esprit.tn
1

Systmes dexploitation Avancs


Chapitre 4

Les Mcanismes de Synchronisation


Prsent : Anis ZOUAOUI
2

Introduction
Dans un systme dexploitation multiprogramm en temps partag, plusieurs processus sexcutent en pseudo-parallle ou en parallle et partagent des objets (mmoires et imprimantes )
Le partage des objets sans prcaution particulire peut conduire des rsultats imprvisibles. Ltat finale des donnes dpend de lordonnancement des processus.

Problme(1)
Compte Bancaire

Somme = 1000 dinars


Opration : Retrait

DAB

Agent

Deux Oprations Simultanes : DAB Agent S=1000 S=600 S=600

Lire (S); S=S-400; Ecrire(S);

Lire(S); S=S-300; Ecrire(S);

S=1000 S=700 S=700


4

Somme = 700 dinars

Problme(2)
Exemple : la spoule dimpression
Processus A 3 2 1 0

Dmon dimpression

Processus B

f2

f1

f0

Rpertoire de spoule

Variable partage in=3

Schma dexcution:
A : lire in, next_free_slot = 3 Interruption: la CPU bascule vers le processus B A : entre3 = fichierA, in = 4 B : lire in, next_free_slot = 3, entre3 = fichierB, in = 4

Problme: le fichier B ne sera jamais imprim

Introduction
Le problme prcdent est d aux conflits daccs la mme ressource. Ressource : toute entit dont a besoin un processus pour terminer son excution (UCT,E/S, Donne)

Lorsquun processus modifie un objet partag, les autres processus ne doivent ni lire, ni modifier jusqu ce quun processus ait termin de le modifier. Autrement dit, laccs une ressource doit se faire en exclusion mutuelle.
6

Dfinitions
Exclusion mutuelle est une mthode qui assure quun seul processus est autoris daccder une ressource partage; les autres processus seront exclus de la mme activit.
A B A entre dans sa section critique A quitte sa section critique B quitte sa section critique

t1 B tente dentrer dans sa section critique

t2

t3

t4 B entre dans sa section critique

La partie du programme partir de laquelle on accde la ressource partage est appele section (rgion) critique.
7

Section critique et Exclusion mutuelle


Quatre conditions doivent tre vrifies pour assurer lexclusion mutuelle: 1. Deux processus ne doivent pas se trouver simultanment dans leurs sections critiques. 2. Aucun processus lextrieur de sa section critique ne doit bloquer les autres processus. 3. Aucun processus ne doit attendre indfiniment pour entrer dans sa section critique. 4. Il ne faut pas faire dhypothse quant la vitesse ou le nombre de processeurs

Section critique et Exclusion mutuelle


Questions : Comment mettre en uvre lexclusion mutuelle? Comment contrler les accs concurrents de plusieurs processus une ressource partage?

Exclusion mutuelle
Un processus dsirant 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. Algorithme daccs une section critique : Entrer_Section_Critique () /* attente si SC non libre */ Section_Critique() /* un seul processus en SC */ Quitter_Section_Critique() Lattente peut tre : Active : la procdure Entrer_Section_Critique est une boucle dont la condition est un test qui porte sur des variables indiquant la prsence ou non dun processus en Section critique. Non active : le processus passe dans ltat endormi et ne sera rveill que lorsquil sera autoris entrer en section critique.
10

Exclusion mutuelle par attente active


Variable de blocage (lock variable) Solution : Attendre que la ressource soit disponible, en vrifiant le contenu dune variable verrou associe la ressource qui possde deux tats libre ou occup.

Problme 1 : reporte le problme sur le verrou (nouvelle ressource partage).


11

Exclusion mutuelle par attente active


Problme 2 : Si rpartiteur rquisition : le processus peut tre interrompu entre le test du verrou et laccs la ressource partage.

12

Solution 1 : Masquage des interruptions


Avant dentrer en section critique, le processus masque les interruptions. Il ne peut tre alors suspendu durant lexcution de la section critique. Problmes : Solution dangereuse : gnralement il est trs dangereux dautoriser les utilisateurs (programmes utilisateurs) dsactiver les interruptions. En cas derreur un processus pourrait compltement bloquer lordinateur. cette solution nassure lexclusion mutuelle en cas dune architecture multiprocesseur.
13

Solution 2: Test Set & Lock (TSL)


Certains processeurs disposent dinstructions permettant deffectuer directement le test de la valeur dun registre ou le contenu dune location en mmoire et dassigner une nouvelle valeur si la valeur courante tait nulle. De cette manire un processus ne peut plus tre interrompu entre le test de la variable verrou et le blocage du verrou.

14

Solution 3: Alternance Stricte

Problme avec lalternance stricte Le nombre de processus qui partagent la ressource apparat directement dans le code, chacun son tour nest pas ncessairement la manire la plus efficace et la plus quitable de partager une ressource, De plus un processus qui a une trs longue section non critique peut en bloquer un autre qui attend que son tour vienne.

15

Solution 3: Alternance Stricte


Problme gnraux avec lalternance stricte : Lattente active gaspille du temps UCT. Il faut ractiver rgulirement tous les processus qui veulent entrer dans leur section critique afin quils puissent vrifier si leur tour est enfin arriv. En rgle gnrale, lalternance stricte ne peut pas garantir quun processus nattende indfiniment, ou quun processus bloque dautres processus en dehors de sa section critique.

16

Solution 4: Solution de Peterson


#define FAUX 0 #define VRAI 1 #define N 2 int 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 intress */ tour = process ; /* demander le tour */ while (tour == process && interesse[autre] == VRAI) ; }

Void quitter_Section_Critique () { interesse[process]=FAUX ; }

Cette solution assure compltement lexclusion mutuelle. Mais, le processus qui attend sa section critique consomme du temps processeur inutilement (attente active).
17

Problmes Classiques
Ces problmes sont des reprsentations thoriques de problmes rels daccs une ou plusieurs ressources partages. Tout nouvel algorithme (mthode, solution) de synchronisation doit tre confront ces problmes. Le problme Producteurs/consommateurs

Producteur

f2

f1

f0

Tampon
Consommateur

Variable partage compteur=3

18

Problmes Classiques
Les philosophes dneurs N philosophes passent leurs temps soit manger, soit penser. Afin de manger, un philosophe doit utiliser 2 fourchettes. Malheureusement, il y a exactement autant de fourchettes que de philosophes. Ds quun philosophe fini de manger, il repose ses fourchettes et pense.

19

Problmes Classiques
Problme du Barbier endormi
Dans ce cas la ressource est un barbier (pouvant modliser lUCTdun systme multiprogramm) et chaises dattente. Des clients viennent et demandent tre servis ; ils peuvent donc modliser des processus cherchant accder lUCT. Tche du barbier : Si au moins un client est prsent, il en prend un et lui coupe les cheveux ; Si aucun client nest prsent, il sassied dans son fauteuil et sendort. Tche dun client : Si le barbier est endormi, le client le rveille et se fait servir ; Si le barbier est occup et quil reste au moins une chaise disponible, le client sassied et attend son tour ; Sil ny a aucune chaise disponible, le client sen va. 20

Smaphores
Dfinitions : Un Smaphore est une variable (enregistrement) qui a une valeur indiquant le nombre de ressources disponibles et une liste de processus bloqus.

smaphore>=0 nombres dunits de la ressource disponible smaphore<0 nombres de processus en attente de la ressource

21

Smaphores
Un smaphore s est manipul par les oprations atomiques suivantes : 1. down(s) : - dcrmente la valeur de s - si s>=0, - si s<0, alors le processus est mis en attente. 2. up(s) : - incrmente la valeur de s, - si la valeur de s tait ngative, alors un processus bloqu sera dclench

22

Smaphores

Down

UP

23

Smaphores

Pour assurer lexclusion mutuelle un smaphore peut tre programm de la manire suivante : initialisation mutex = 1 /* nombre de processus autoriss entrer simultanment dans la section critique */ Nom du smaphore down (mutex) <section_critique> up (mutex)

24

Smaphores

Application au modle Producteur / Consommateur : Trois smaphores sont ncessaires: 1. plein: compte le nombre de places occupes 2. vide : compte le nombre de places libres 3. Mutex : assure que le producteur et le consommateur n'accdent jamais en mme moment la mmoire tampon.

25

Smaphores
Application au modle Producteur / Consommateur :
#define N 100 /* taille du tampon */ typedef int semaphore; /* les smaphores sont des entiers */ semaphore mutex=1 ; /* contrle daccs la section critique */ semaphore vide=N; /* contrle les emplacements vide dans le tampon */ Semaphore plein=0; /* contrle les emplacements plein dans le tampon */ void producteur () { while (TRUE) { produire_objet() ; down(vide); down(mutex); mettre_objet() ; up(mutex); up(plein) } } void consommateur () { while (TRUE) { down(plein); down(mutex); retirer_objet() up(mutex); up(vide); consommer_objet() ; } }

26

Smaphores
Solution du problme des philosophes Dineurs

27

Smaphores
Solution du problme des philosophes Dineurs

28

Smaphores
Solution du problme des philosophes Dineurs

29

Smaphores
Solution du problme des philosophes Dineurs

30

Smaphores
Solution du problme du Barbier endormi

31

Smaphores
Solution du problme du Barbier endormi

32

Smaphores
Solution du problme du Barbier endormi Lorsque le barbier arrive au travail, sa procdure est excute et se bloque sur le smaphore des clients jusquce quun client arrive. Quand un client arrive, sa procdure est excute et il fait lacquisition de mutex afin dentrer en section critique. Les clients suivants doivent attendre que celui-ci aie rendu le jeton de mutex. Aprs avoir fait lacquisition de mutex, le client regarde si le nombre de personne en attente est infrieur au nombre de chaise. Si ce nest pas le cas, le jeton de mutex est restitu et le client sen va sans tre servi. Sil y a une place assise, le compteur de personne en attente est incrment, le barbier est rveill, et le client restitue le jeton du mutex. L e barbier prend alors le jeton du mutex et commence la coupe. Lorsque le client a les cheveux coups, il sen va. La barbier vrifie alors sil ny a pas un autre client, sinon il sendort.
33

Rfrences
[1] : http://www.cours.polymtl.ca/inf2610/documentation/Ch5INF2610Aut11.pdf

34

You might also like