Professional Documents
Culture Documents
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
DAB
Agent
Problme(2)
Exemple : la spoule dimpression
Processus A 3 2 1 0
Dmon dimpression
Processus B
f2
f1
f0
Rpertoire de spoule
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
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
t2
t3
La partie du programme partir de laquelle on accde la ressource partage est appele section (rgion) critique.
7
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
12
14
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
16
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
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