2. 19/06/19 DIU EIL - Université de Montpellier 2/31
Sommaire
● Un petit exemple
● Co-routines → Tâches → Processus
● Exclusion mutuelle
● Synchronisation : Événements et sémaphores
● Ordonnancement
● Interblocage
● Famine et Équité
3. 19/06/19 DIU EIL - Université de Montpellier 3/31
Un exemple
Agence de Voyage en
ligne
Site de réservation de
places d'avion
Site de réservation de
chambres d'hôtel
Alice Bob
4. 19/06/19 DIU EIL - Université de Montpellier 4/31
Un exemple
● Alice et Bob
s'adressent indépendamment l'un de l'autre à une
agence de voyage pour réserver
● Un billet d'avion
● Une chambre d'hôtel
et ne partiront en voyage que s'ils obtiennent
satisfaction pour l'ensemble de ces deux
réservations
5. 19/06/19 DIU EIL - Université de Montpellier 5/31
Site de l'agence de voyage
réservation d'une place d'avion
Que se passe-t-il s'il ne reste plus qu'une place ?
1 2
3
5
4
6
Processus Alice Processus Bob
Consultation du vol Air-Isson n°421
lecture du fichier
Réservation d'une place
écriture du fichier
Consultation du vol Air-Isson n°421
lecture du fichier
Réservation d'une place
écriture du fichier
6. 19/06/19 DIU EIL - Université de Montpellier 6/31
Site de l'agence de voyage
réservation d'une place d'avion et d'une chambre d'hôtel
Processus Alice Processus Bob
Consultation du vol Air-Isson n°421
Réservation d'une place
Consultation de l'hôtel Kel
Réservation d'une chambre
Consultation de l'hôtel Kel
Réservation d'une chambre
Consultation du vol Air-Isson n°421
Réservation d'une place
1 2
3 4
5 6
7 8
7. 19/06/19 DIU EIL - Université de Montpellier 7/31
Site de l'agence de voyage
réservation d'une place d'avion et d'une chambre d'hôtel
● Résultats
– Dans le premier scénario une même place d'avion
pouvait être attribuée à deux personnes
– Dans le second scénario, s'il n'existe plus qu'une place
d'avion et qu'une chambre d'hôtel
● Alice obtient satisfaction pour son vol mais pas pour sa
chambre d'hôtel
● Bob obtient satisfaction pour sa chambre d'hôtel mais pas pour
son vol
● Aucun des deux ne partira !
● Il s'agit d'une forme d'interblocage
8. 19/06/19 DIU EIL - Université de Montpellier 8/31
Co-routines
Une sous-routine
● s'exécute dans le contexte
de l'appelant
● dans la pile de l'appelant
Les co-routines
● s'exécutent dans un
contexte commun
● possèdent leur propre pile
appel SP
retour
reprise B
reprise A
SP
A B
reprise B
9. 19/06/19 DIU EIL - Université de Montpellier 9/31
Tâches (threads)
● Tâche (thread) ou « processus léger » :
– Coroutine contrôlée par un planificateur (scheduler)
– Pas d'instruction explicite de reprise d'exécution
– Peut être interrompue entre deux instructions (via le mécanisme
d'interruption) pour donner le contrôle à un planificateur : c'est la
préemption
– Le planificateur choisit une des tâches prêtes à être exécutée et lui
donne le contrôle
● Plusieurs tâches peuvent s'exécuter sur un même processeur
– Leur exécution est interrompue périodiquement à très fine échelle (de
l'ordre de la microseconde) donnant l'illusion à plus grande échelle
d'exécution en parallèle : c'est le quasi-prallélisme
10. 19/06/19 DIU EIL - Université de Montpellier 10/31
Préemption, quasi-parallélisme
T1 T2
Interruptions
+
planificateur
11. 19/06/19 DIU EIL - Université de Montpellier 11/31
Processus
● Un processus est une tâche (thread)
possédant son propre contexte en mémoire
virtuelle :
– Pile d'exécution (coroutine)
● Adresses de retour
des sous-programmes
● Variables locales et paramètres
– Tas
● Objets
Données
Tas
Pile
Code
Coroutine
☞ les différentes zones ne sont pas
nécessairement dans cet ordre
12. 19/06/19 DIU EIL - Université de Montpellier 12/31
Tâche vs Processus
● Très souvent les deux coexistent au sein d'un système
● Unix : un processus peut comprendre plusieurs tâches
● La gestion des tâches est plus légère que celle des
processus
– le contexte est réduit à une simple pile
● Les processus sont plus autonomes que les tâches : ils
possèdent
– un environnement propre
– un espace de mémoire virtuelle
– une protection vis-à-vis des autres processus
13. 19/06/19 DIU EIL - Université de Montpellier 13/31
Exclusion mutuelle
● Ressource partageable
– Base de données, tableau, fichier, imprimante, …
– Possède un état
– Utilisable par plusieurs processus
– Exclusive : utilisée par un seul processus à un instant donné
● Opération sur une ressource
– Modifie l'état de la ressource
– Déterministe : l'état final ne dépend que de l'état initial et de
l'opération
– Indivisible : aucune autre opération sur cette ressource ne peut avoir
lieu pendant cette opération
14. 19/06/19 DIU EIL - Université de Montpellier 14/31
Exclusion mutuelle
● Section critique
– Suite d'instructions composant une opération indivisible sur
une ressource
● Verrou : objet lié à une ressource
– Attributs
● Une donnée reflétant l'utilisation de la ressource : libre ou occupée
● Les processus en attente d'utilisation
– Méthodes
● Verrouiller
● Déverrouiller
15. 19/06/19 DIU EIL - Université de Montpellier 15/31
Exclusion mutuelle
● Verrouiller : précède une section critique
– Si la ressource est libre :
● Met la ressource à occupée
– Sinon :
● Met le processus courant en attente
● Invoque le planificateur
● Déverrouiller : termine une section critique
– Si au moins un processus est en attente :
● Met un seul de ces processus dans l'état prêt
● Invoque le planificateur
– Sinon :
● Met la ressource à libre
☞ les opérations verrouiller et déverrouiller doivent être indivisibles !
16. 19/06/19 DIU EIL - Université de Montpellier 16/31
Exclusion mutuelle
Processus Alice
Verrouiller le vol n°421
Consultation du vol Air-Isson n°421
Réservation d'une place
Déverrouiller le vol n°421
Processus Bob
Verrouiller le vol n°421
Consultation du vol Air-Isson n°421
Réservation d'une place
Déverrouiller le vol n°421
1 2
3
3
3
5
4
4
4
6
sectioncritique
sectioncritique
17. 19/06/19 DIU EIL - Université de Montpellier 17/31
Interblocage
Processus Alice
Consultation du vol Air-Isson n°421
Réservation d'une place
Consultation de l'hôtel Kel
Réservation d'une chambre
Processus Bob
Consultation de l'hôtel Kel
Réservation d'une chambre
Consultation du vol Air-Isson n°421
Réservation d'une place
1
3
5
2
4
6
sectioncritique#1
sectioncritique#2
sectioncritique#2
sectioncritique#1
sc #1 sc #2
18. 19/06/19 DIU EIL - Université de Montpellier 18/31
Donc ...
Les verrous
– permettent de résoudre le problème d'accès à une
ressource exclusive partagée par des processus
– ne résolvent pas l'interblocage
19. 19/06/19 DIU EIL - Université de Montpellier 19/31
Synchronisation
● Coopération entre processus ou entre tâches
⇒ nécessité de synchronisation
P1 P2
Planificateur
gère le
attente
envoi
signal
P1 attend un signal émis par P2
Exemples d'outils de synchronisation :
événements, sémaphores
20. 19/06/19 DIU EIL - Université de Montpellier 20/31
Synchronisation
● Événement
– Objet lié à un signal
– Envoyé par un processus, puis mémorisé
– Les processus en attente d'un signal mémorisé poursuivent leur exécution
– Les processus mis en attente avant l'envoi du signal sont débloqués
– Un tel signal doit être effacé explicitement
– Si plusieurs signaux sont envoyés avant d’avoir été effacés, tout se passe comme
si un seul avait effectivement été envoyé.
● Attributs
– Une donnée booléenne E reflétant l'état du signal
– Les processus en attente de ce signal
● Méthodes
– envoi (S)
– attente (S)
21. 19/06/19 DIU EIL - Université de Montpellier 21/31
Événement
● envoi (S)
– Si E ≠ S :
● E ← S
● Met tous les processus en attente à l'état prêt
● Invoque le planificateur
● Attente (S)
– Si E ≠ S :
● Met le processus courant en attente
● Invoque le planificateur
☞ ces deux opérations doivent être indivisibles !
22. 19/06/19 DIU EIL - Université de Montpellier 22/31
Sémaphores
● Objet permettant de gérer
– Exclusion mutuelle
– Synchronisation
● Inventé par Edsger Dijkstra
● Attributs
– Un compteur K
– Une liste de processus en attente
● Méthodes
– P « Proberen » : Tester
– V « Verhogen » : Incrémenter
23. 19/06/19 DIU EIL - Université de Montpellier 23/31
Sémaphores
● P :
– K ← K – 1
– si K < 0 :
● Met le processus courant en attente
● Invoque le planificateur
● V :
– K = K + 1
– Si K ≤ 0 :
● Met à l'état prêt un seul des processus en attente
● Invoque le planificateur
☞ ces deux opérations doivent être indivisibles !
24. 19/06/19 DIU EIL - Université de Montpellier 24/31
Sémaphores
● On observe que la valeur de S désigne
– Si K ≥ 0 : le nombre de fois qu’une opération P peut être
exécutée sans bloquer le processus qui l’invoque
– Si K ≤ 0 : |K| = le nombre de processus en attente
● Utilisation
– Pour l'exclusion mutuelle : S doit être initialisé à 1
– Pour la gestion d'un signal : S doit être initialisé à 0
● Dans ce cas, l'opération V :
– Mémorise et compte chaque occurrence d'un signal envoyé
– Ne débloque qu'un seul des processus en attente
25. 19/06/19 DIU EIL - Université de Montpellier 25/31
Communication entre processus
● Modèle du Producteur-Consommateur
– Un processus P envoie des données à un processus K via
un tampon partagé T de n cases
– On utilise deux sémaphores
● S1 dont le compteur est initialisé à n
● S2 dont le compteur est initialisé à 0
P K
T [1:n] S2.P
Consomme (j)
j ← j + 1 mod n
S1.V
S1.P
Produit (i)
i ← i + 1 mod n
S2.V
i j
26. 19/06/19 DIU EIL - Université de Montpellier 26/31
Ordonnancement
● États d'un processus ou d'une tâche
– ACTIF : un seul processus (ou tâche) est en cours d'exécution à un instant donné par
processeur (donc un seul sur un mono-processeur)
– PRÊT : un processus non ACTIF possédant toutes les ressources nécessaires à son
exécution
– BLOQUÉ : un processus en attente de ressource ou de signal
● Transitions entre états
PRÊT ACTIF
BLOQUÉ
création
activation
désactivation
blocage
(mise en attente)
déblocage
terminaison
planificateur
synchronisation
27. 19/06/19 DIU EIL - Université de Montpellier 27/31
Ordonnancement
● Dès qu'il est appelé, le planificateur choisit parmi les
processus ou les tâches prêts à être exécutés, un « élu »
● Stratégies d'élection
– Par priorités
– Tourniquet (round-robin)
Élu
Prêts
28. 19/06/19 DIU EIL - Université de Montpellier 28/31
Interblocage
● Situation dans laquelle deux processus ou tâches
P1 et P2 demandent l'accès à deux ressources R1
et R2 selon le schéma ci-dessous
R1
R2
P1 P2
Est allouée à
Est allouée à
Demande
Demande
29. 19/06/19 DIU EIL - Université de Montpellier 29/31
Interblocage
● Détection
– Comment savoir que deux processus ou tâches sont en situation
d'interblocage ?
● Guérison
– Que peut on faire pour sortir d'un interblocage ?
● Prévention
– Comment et quand peut-on prévoir une situation d'interblocage ?
● Exemple de l'algorithme du banquier
– Développé par Dijstra et Habermann
– Analogie avec les prêts gérés par un banquier
30. 19/06/19 DIU EIL - Université de Montpellier 30/31
R1
R2
P1
P2
f3
f1
f2
a
b c
d
31. 19/06/19 DIU EIL - Université de Montpellier 31/31
Famine et Équité
● Famine
– Certains processus ou tâches sont privés de l'obtention
de certaines ressources demandées, allouées à tour de
rôle à d'autres processus ou tâches
● Équité
– Propriété assurée par le planificateur pour éviter la
famine, prenant par exemple en compte
● Nombre et fréquence des demandes
● Temps d'utilisation des ressources
● Gestion dynamiques de priorités (vieillissement des
demandes en attente)