Faculté des sciences de Gabes 28/10/2015 Cours de

Transcription

Faculté des sciences de Gabes 28/10/2015 Cours de
Faculté des sciences de Gabes
28/10/2015
28/10/2015
Khaled Hassine
1
CHAPITRE I –
SYNCHRONISATION DES
PROCESSUS
Par :
Khaled Hassine
[email protected]
Khaled Hassine
28/10/2015
2
PLAN
Introduction
Section critique et
exclusion mutuelle
Solutions classiques
Solution avancée : Les sémaphores
Problèmes classiques
28/10/2015
Khaled Hassine
Cours de Système d’exlpoitation
3
1
Faculté des sciences de Gabes
28/10/2015
PLAN
Introduction
Section critique et
exclusion mutuelle
Solutions classiques
Solution avancée : Les sémaphores
Problèmes classiques
28/10/2015
Khaled Hassine
4
Position du problème


Les processus d’un système ne s’exécutent pas tous de
manière isolée.
Certains processus ont besoin de coopérer, et
nécessitent donc des moyens de communication et de
synchronisation, et d’autres se trouvent en compétition
pour les ressources du système,


28/10/2015
soit à cause de la nature physique de la ressource (non
partageabilité),
soit parce que les opérations sur cette ressource peuvent
provoquer des incohérences ou des interblocages.
Khaled Hassine
5
Exemple : sérialisation de travaux
d’impression


Les tâches à imprimer sont stockées dans une file,
tel que chaque tâche reçoive à son arrivée un
numéro d’ordre d’exécution strictement croissant.
Pour administrer cette file, deux variables
globales partagées :



Libre: contiennent le prochain numéro de tâche à
attribuer,
Prochain: le prochain numéro de tâche à imprimer.
On a donc toujours Libre  Prochain.
28/10/2015
Khaled Hassine
Cours de Système d’exlpoitation
6
2
Faculté des sciences de Gabes
28/10/2015
Problème de synchronisation
Prochain
Libre
4
7
4
Job 4
5
Job 5
6
Job 6
Processus A
7
Processus B
28/10/2015
Khaled Hassine
7
Algorithme des processus


Si, au même moment, deux processus A et B
souhaitent lancer l’impression d’un fichier, ils
doivent chacun exécuter la séquence suivante ;
Algorithme Impression ()



28/10/2015
Local_Libre ← Libre
Placer-Job(Local_Libre)
Libre ← Local_Libre+1
Khaled Hassine
8
Séquence problématique



Le processus A lit la variable Libre et y trouve la
valeur 7, et il est ensuite interrompu.
Le processus B prend la main et lit la valeur de
Libre qui est toujours à 7 et met son fichier à cet
emplacement ensuite il incrémente la variable
Libre qui passe à 8.
Quand le processus A reprend son exécution,
dans ses registres il trouve la valeur de libre à 7,
il met son fichier à l'emplacement 7 et écrase
celui de B qui ne sera jamais imprimé.
28/10/2015
Khaled Hassine
Cours de Système d’exlpoitation
9
3
Faculté des sciences de Gabes
28/10/2015
Problème de synchronisation
Prochain
Libre
4
8
4
Job 4
5
Job 5
6
Job 6
7
Job -7 Pro B
Processus A
Processus B
28/10/2015
Khaled Hassine
10
Quand on aura problème ?


Si le processus à effectuer cette séquence est
interrompu par l’ordonnanceur entre la première
et la troisième instruction, les deux processus
utiliseront le même numéro pour placer leur
tâche, et l’un des deux travaux sera perdu.
Cependant, à la fin, le contenu de la file sera
cohérent avec l’état des variables, et le processus
d’impression ne pourra détecter aucune
anomalie.
28/10/2015
Khaled Hassine
11
Que doit fournir un SE efficace ?



Il est donc nécessaire que le système fournisse un support
sûr et efficace de la communication interprocessus,
permettant tant la synchronisation que l’échange de
données.
En fait, tous les problèmes de synchronisation se ramènent
au problème de l’accès concurrent à une variable
partagée.
La mise au point de programmes contenant de tels accès est
difficile, car ces programmes peuvent fonctionner pendant
de longues périodes de temps et produire des résultats
incohérents de façon imprévisible.
28/10/2015
Khaled Hassine
Cours de Système d’exlpoitation
12
4
Faculté des sciences de Gabes
28/10/2015
PLAN
Introduction
Section critique et
exclusion mutuelle
Solutions classiques
Solution avancée : Les sémaphores
Problèmes classiques
28/10/2015
Khaled Hassine
13
Définition

La solution conceptuellement naturelle à la
résolution des problèmes d’accès concurrents
consiste à interdire la modification de
données partagées à plus d’un processus à
la fois, c'est-à-dire définir un mécanisme
d’exclusion mutuelle sur des portions
spécifiques du code, appelées sections
critiques.
28/10/2015
Khaled Hassine
14
Définition




Une section critique (noté SC) est une partie du
processus où peut avoir lieu un conflit d'accès. Elle
contient des instructions utilisant des variables ou des
ressources partagées par d'autres processus.
On rentre en section critique, par une section d'entrée
(noté SE) qui permet de mettre en œuvre une condition
et on la quitte par une section de sortie (noté SS).
Si une SC est exécutée en entier, le problème est
résolu.
Or, un processus peut être interrompu à tout moment
notamment au milieu de sa section critique.
28/10/2015
Khaled Hassine
Cours de Système d’exlpoitation
15
5
Faculté des sciences de Gabes
28/10/2015
Squelette d’un processus



SE : Initialisation et mise en attente
éventuellement
SC : Section critique exécutée en exclusion
mutuelle
SS : Mise à la bonne valeur des états des
variables partagées (donner la main aux autres
processus)
28/10/2015
Khaled Hassine
16
Le problème de la section critique





Lorsqu’un processus manipule une donnée (ou ressource) partagée, nous
disons qu’il se trouve dans une section critique (SC) (associée à cette
donnée)
Le problème de la section critique est de trouver un algorithme d`exclusion
mutuelle de processus dans l`exécution de leur SCs afin que le résultat de
leurs actions ne dépendent pas de l’ordre d’entrelacement de leur
exécution (avec un ou plusieurs processeurs)
L’exécution des sections critiques doit être mutuellement exclusive: à tout
instant, un seul processus peut exécuter une SC pour une var donnée
(même lorsqu’il y a plusieurs processeurs)
Ceci peut être obtenu en plaçant des instructions spéciales dans les sections
d`entrée et sortie
Pour simplifier, dorénavant nous faisons l’hypothèse qu’il n’y a qu’une
seule SC dans un programme.
17
Structure du programme




Chaque processus doit donc demander une permission avant d’entrer dans
une section critique (SC)
La section de code qui effectue cette requête est la section d’entrée
La section critique est normalement suivie d’une section de sortie
Le code qui reste est la section restante (SR): non-critique
repeat
section d’entrée
section critique
section de sortie
section restante
forever
18
Cours de Système d’exlpoitation
6
Faculté des sciences de Gabes
28/10/2015
Exclusion mutuelle

La solution conceptuellement naturelle à la
résolution des problèmes d’accès concurrents
consiste à interdire la modification de données
partagées à plus d’un processus à la fois, c'està-dire définir un mécanisme d’exclusion
mutuelle sur les portions spécifiques (sections
critiques)
28/10/2015
Khaled Hassine
19
4 critères d’évaluation du
comportement de SC




deux processus ne peuvent être simultanément
dans la même SC ; (Exclusion mutuelle)
aucune hypothèse n’est faite sur la vitesse
relatives des processus, ni sur le nombre des
processeurs ; (Progression normale)
aucun processus suspendu en dehors d’une SC
ne peut bloquer les autres ; (Attente bornée)
aucun processus ne doit attendre trop longtemps
avant d’entrer en SC. (Absence de blocage).
28/10/2015
Khaled Hassine
20
Critères nécessaires pour solutions
valides

Exclusion Mutuelle


Non interférence:


À tout instant, au plus un processus peut être dans
une section critique (SC) pour une variable donnée
Si un processus s’arrête dans sa section restante,
ceci ne devrait pas affecter les autres processus
Mais on fait l’hypothèse qu’un processus qui
entre dans une section critique, en sortira.
21
Cours de Système d’exlpoitation
7
Faculté des sciences de Gabes
28/10/2015
Critères nécessaires pour solutions
valides

Progrès:


absence d`interblocage (Chap 6)
si un processus demande d`entrer dans une section
critique à un moment où aucun autre processus en
fait requête, il devrait être en mesure d’y entrer
22
Aussi nécessaire

Absence de famine: aucun processus
éternellement empêché d’atteindre sa SC

Difficile à obtenir, nous verrons…
23
Remarque

La première condition est suffisante à elle
seule pour éviter les conflits d’accès.
Cependant, elle ne suffit pas à garantir le bon
fonctionnement du système d’exploitation, en
particulier en ce qui concerne l’égalité
d’accès aux sections critiques
28/10/2015
Khaled Hassine
Cours de Système d’exlpoitation
24
8
Faculté des sciences de Gabes
28/10/2015
Exclusion mutuelle


On parle d'exclusion mutuelle quand un seul processus à la
fois a le droit de rentrer en SC (la condition d'entrée ne
permet qu'à un seul processus de passer). Le terme utilisé
est l'accès en exclusion mutuelle à une ressource ou à une
variable.
Remarque :


Si une ressource a été accédée par un premier processus et qu'il
est interrompu, aucun autre processus ne peut y accéder tant
qu'elle n'a pas été libérée par le premier processus. Il faut
attendre que le processus reprenne son exécution et qu'il libère
la ressource.
Il existe plusieurs mécanismes pour mettre en œuvre l'exclusion
mutuelle dont chacun a ses avantages et ses inconvénients.
Khaled Hassine
28/10/2015
25
PLAN
Introduction
Section critique et
exclusion mutuelle
Solutions classiques
Solution avancée : Les sémaphores
Problèmes classiques
28/10/2015
Khaled Hassine
26
Solutions classiques





Le masquage des interruptions
Variable de verrouillage
Variable d'alternance
Algorithme demander et attendre
Algorithme de Peterson
28/10/2015
Khaled Hassine
Cours de Système d’exlpoitation
27
9
Faculté des sciences de Gabes
28/10/2015
Solutions classiques





Le masquage des interruptions
Variable de verrouillage
Variable d'alternance
Algorithme demander et attendre
Algorithme de Peterson
28/10/2015
Khaled Hassine
28
Principe de base



Le moyen le plus simple d’éviter les accès concurrents
est de masquer les interruptions avant d’entrer dans
une section critique, et de les restaurer à la sortie de
celle-ci.
Ainsi, le processus en section critique ne pourra pas
être suspendu au profit d’un autre processus, puisque
l’inhibition (blocage) des interruptions empêche
l’ordonnanceur de s’exécuter.
Cette approche est couramment utilisée par le système
d’exploitation lui-même, pour manipuler de façon sure
ses structures internes.
28/10/2015
Khaled Hassine
29
Inconvénients


Cette approche, qui autorise un processus utilisateur de
masquer les interruptions du système, est inéquitable,
car un processus restant longtemps en SC peut
monopoliser le processeur. Elle est de plus
dangereuse, car le système peut être bloqué si le
processus oublie de restaurer les interruptions.
Aussi, cette approche n’est pas efficace pour les
systèmes multiprocesseurs, puisque les processus
s’exécutant sur les autres processeurs peuvent toujours
entrer en section critique.
28/10/2015
Khaled Hassine
Cours de Système d’exlpoitation
30
10
Faculté des sciences de Gabes
28/10/2015
Quoi pour les 4 conditions ?
Critère
Respecté (Oui/Non)
Exclusion mutuelle
Oui
Progression normale
Non
Attente bornée
Non
Absence de blocage
Non
28/10/2015
Khaled Hassine
31
Solutions classiques





Le masquage des interruptions
Variable de verrouillage
Variable d'alternance
Algorithme demander et attendre
Algorithme de Peterson
28/10/2015
Khaled Hassine
32
Besoins de verrouillage


L’inconvénient du masquage des interruptions
est son inefficacité : lorsqu’un processus entre
en section critique, tous les autres processus
sont bloqués, même si la section critique ne
concerne qu’un seul processus.
Il faut donc pouvoir définir autant de sections
critiques indépendantes que nécessaire.
28/10/2015
Khaled Hassine
Cours de Système d’exlpoitation
33
11
Faculté des sciences de Gabes
28/10/2015
Principe


Pour cela, on déclare une variable par section
critique, qui joue le rôle de verrou.
La variable est


mise à 1 par le processus entrant dans la section
critique considérée, et
remise à 0 par le processus lorsqu’il quitte la
section critique.
Khaled Hassine
28/10/2015
34
Algorithme

Avant d’entrer en section critique, un processus
doit donc tester l’état de la variable, et boucler en
dehors de la section critique si elle a déjà été
positionnée à 1 par un autre processus, selon
l’algorithme suivant :
while (verrou==1) ;
verrou = 1 ;
section_critique () ;
verrou =0 ;
28/10/2015
/*Attente*/
/*Verrouillage*/
/*Déverrouillage*/
Khaled Hassine
35
Problème possible

Malheureusement, cette solution présente le
même défaut que l’algorithme de l’exemple de
l’impression :

28/10/2015
un processus peut être interrompu entre sa sortie
de la boucle while et le positionnement du verrou,
permettant ainsi à un autre processus de rentrer lui
aussi en section critique.
Khaled Hassine
Cours de Système d’exlpoitation
36
12
Faculté des sciences de Gabes
28/10/2015
Quoi pour les 4 conditions ?
Critère
Respecté (Oui/Non)
Exclusion mutuelle
Non
Progression normale
Non
Attente bornée
Oui
Absence de blocage
Oui
28/10/2015
Khaled Hassine
37
Solutions classiques





Le masquage des interruptions
Variable de verrouillage
Variable d'alternance
Algorithme demander et attendre
Algorithme de Peterson
28/10/2015
Khaled Hassine
38
Principe de base


Le problème avec l'algorithme précédent est
que les 2 processus modifient la même
variable en même temps.
Pour éviter cette lacune, on peut mettre en
œuvre une variable Tour qui définit quel
processus a le droit d'entrer en SC.
28/10/2015
Khaled Hassine
Cours de Système d’exlpoitation
39
13
Faculté des sciences de Gabes
28/10/2015
Algorithme principal
Algorithme Alternance ()
Début
Tour ← 1; /* On donne la main à P1 au début */
P1, P2; /* P1 et P2 évoluent en parallèle */
Fin
28/10/2015
Khaled Hassine
40
Les processus P1 et P2
Procédure P1 ()
Début
Répéter
SR
Tant que (Tour1)
Ne rien faire (attente)
Fin Tant que
SC
Tour ← 2
Jusqu'à Condition 1
Fin
28/10/2015
Procédure P2 ()
Début
Répéter
SR
Tant que (Tour2)
Ne rien faire (attente)
Fin Tant que
SC
Tour ← 1
Jusqu'à Condition 2
Fin
Khaled Hassine
41
Inconvénients



Cette solution, si elle est valide du point de vue
exclusion mutuelle, ne respecte pas la deuxième et la
troisième règles du SC.
En effet, lorsqu'un processus quitte la SC, il s'interdit
d'y revenir avant que l'autre processus soit entré à son
tour.
Un tel comportement imposant une alternance stricte
de SC n'est pas souhaitable puisque l'arrêt définitive de
l'un de deux processus permet à l'autre au plus une fois
la SC. Il faut imposer la condition de progression.
28/10/2015
Khaled Hassine
Cours de Système d’exlpoitation
42
14
Faculté des sciences de Gabes
28/10/2015
Quoi pour les 4 conditions ?
Critère
Respecté (Oui/Non)
Exclusion mutuelle
Oui
Progression normale
Non
Attente bornée
Non
Absence de blocage
Non
28/10/2015
Khaled Hassine
43
Solutions classiques





Le masquage des interruptions
Variable de verrouillage
Variable d'alternance
Algorithme demander et attendre
Algorithme de Peterson
28/10/2015
Khaled Hassine
44
Principe : Rajouter une variable
de demande
Procédure P1 ()
Début
Répéter
SR
D1← Vrai
Tant que (D2)
Ne rien faire (attente)
Fin Tant que
SC
D1← Faux
Jusqu'à Condition 1
Fin
28/10/2015
Procédure P2 ()
Début
Répéter
SR
D2← Vrai
Tant que (D1)
Ne rien faire (attente)
Fin Tant que
SC
D2← Faux
Jusqu'à Condition 2
Fin
Khaled Hassine
Cours de Système d’exlpoitation
45
15
Faculté des sciences de Gabes
28/10/2015
Remarque



L'exclusion mutuelle est assurée.
Mais cette solution présente un grave
inconvénient qui est la possibilité d'un
blocage dans le cas où chacun des processus a
affecté la valeur vrai à la variable Di et par la
suite aucune action n'est possible.
Ceci conduit à imposer une troisième
condition: l'absence de blocage.
28/10/2015
Khaled Hassine
46
Quoi pour les 4 conditions ?
Critère
Respecté (Oui/Non)
Exclusion mutuelle
Oui
Progression normale
Oui
Attente bornée
Non
Absence de blocage
Non
28/10/2015
Khaled Hassine
47
Solutions classiques





Le masquage des interruptions
Variable de verrouillage
Variable d'alternance
Algorithme demander et attendre
Algorithme de Peterson
28/10/2015
Khaled Hassine
Cours de Système d’exlpoitation
48
16
Faculté des sciences de Gabes
28/10/2015
Principe : Rajouter une variable
Tour
Procédure P1 ()
Début
Répéter
SR
D1← Vrai
Tour ← 2
Tant que (D2 et Tour 1)
Ne rien faire (attente)
Fin Tant que
SC
D1← Faux
Jusqu'à Condition 1
Fin
28/10/2015
Procédure P2 ()
Début
Répéter
SR
D2← Vrai
Tour ← 1
Tant que (D1 et Tour 2)
Ne rien faire (attente)
Fin Tant que
SC
D2← Faux
Jusqu'à Condition 2
Fin
Khaled Hassine
49
Interprétation

La SC s'interprète de la manière suivante:


28/10/2015
P1 effectue sa demande (D1=vrai) et cède
immédiatement son tour à P2 (Tour=2).
Le seul cas où P1 ne peut pas entrer dans sa SC se
produit lorsque: P2 a demandé d'entrer dans la SC
(D2=vrai).
Khaled Hassine
50
Vérification de l'exclusion
mutuelle

Si P1 et P2 sont en SC alors:




(D2=faux ou Tour=1) et
(D1=faux ou Tour=2) et
(D1=vrai et D2=vrai)
Ce qui est impossible.
28/10/2015
Khaled Hassine
Cours de Système d’exlpoitation
51
17
Faculté des sciences de Gabes
28/10/2015
Vérification de l'absence de
blocage

Si P1 et P2 sont bloqués alors:



(D2=vrai et Tour=2) et
(D1=vrai et Tour=1)
Ce qui est impossible.
28/10/2015
Khaled Hassine
52
Vérification de la progression




La solution étant symétrique:
On peut supposer que P2 est en SR, D2=faux,
si P1 ne peut pas entrer en SC alors D2=vrai et
Tour=2.
Ce qui est une contradiction.
28/10/2015
Khaled Hassine
53
Vérification de l'attente bornée

Si P1 et P2 ont demandé l'entrée en SC,
supposons que P1 a pu y accéder.

Si P1 demande une autre fois l'entrée en SC après
avoir exécuter sa SS, il affecte à D1 la valeur vrai
et à Tour la valeur 2, ce qui lui interdit l'entrée en
SC et laisse passer P2.
Chaque processus lorsqu'il a demandé à entrer en
SC attend au plus un passage de l'autre en SC
pour y entrer à son tour.


28/10/2015
(D1=Vrai et D2=Vrai), Tour=1 et P2 est en attente.
Khaled Hassine
Cours de Système d’exlpoitation
54
18
Faculté des sciences de Gabes
28/10/2015
Quoi pour les 4 conditions ?
Critère
Respecté (Oui/Non)
Exclusion mutuelle
Oui
Progression normale
Oui
Attente bornée
Oui
Absence de blocage
Oui
28/10/2015
Khaled Hassine
Cours de Système d’exlpoitation
55
19