05 - semaphorebosio/hmee209/04 - semaphore.pdf · 2017. 2. 13. · 3 notion de ressources n...
TRANSCRIPT
![Page 1: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/1.jpg)
1
Agendan Synchronisation et communication entre
processusn Schémas classiques de synchronisation
![Page 2: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/2.jpg)
2
P1
P2
P3
F Processus non indépendants : accès concurrents aux ressources
Introductionn Système multiprocessusn L'ordonnancement "entrelace" les exécutions
![Page 3: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/3.jpg)
3
Notion de ressources
n Définitionsn Une ressource désigne toute entité dont a
besoin un processus pour s'exécuter.n Ressource matérielle (processeur, périphérique)n Ressource logicielle (variable)
n Une ressource est caractérisén par un état : libre /occupéen par son nombre de points d'accès (nombre de
processus pouvant l'utiliser en même temps)
![Page 4: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/4.jpg)
4
Notion de ressources
n Utilisation d'une ressource par un processusn Trois étapes :
n Allocation, Utilisation, Restitutionn Les phases d'allocation et de restitution
doivent assurer que le ressource estutilisée conformément à son nombre depoints d'accès
n ressource critique à un seul point d'accès
![Page 5: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/5.jpg)
5
Les sémaphores
n StructureFile L
Compteur K(niveau du sémaphore)
P (Sem)
V (Sem)
INIT (Val, Sem)Sem
Val
Opérations indivisibles
![Page 6: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/6.jpg)
6
n Un sémaphore Sem peut être vu comme un distributeur de jetons; le jeton étant un droit à poursuivre son exécution
n l'opération INIT (Sem, Val) fixe le nombre de jetons initial
n l'opération P(Sem) attribue un jeton au processus appelant si il en reste sinon bloque le processus dans Sem.L
n l'opération V(Sem) restitue un jeton et débloque un processus de Sem.L si il en existe un.
Les sémaphores
![Page 7: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/7.jpg)
7
n Opération Init (Val, Sem)Init (Val, Sem)
débutmasquer_itSem. K := Val;Sem. L := Ædemasquer_it
fin
Val jetons
Les sémaphores
![Page 8: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/8.jpg)
8
Les sémaphoresn Opération P (Sem)P (Sem)
débutmasquer_itSi il reste un jetonalors
le donner à ce processussinon
ajouter ce processus à Sem.Lbloquer ce processus
fsidemasquer_it
fin
Endormissement
0 jetons
![Page 9: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/9.jpg)
9
P (Sem)
débutSem.K := Sem.K - 1;Si Sem.K < 0alors
ajouter ce processus à Sem.Lendormir ce processus
fsifin
Endormissement
< 0
Les sémaphoresn Opération P (Sem)
![Page 10: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/10.jpg)
10
V (Sem)
débutmasquer_itAjouter un jeton à Sem.KSi il y a un processus en attente de jeton dans Sem.Lalors
sortir un processus de Sem.Llui donner un jetonréveiller ce processus
fsidemasquer_itfin
Réveil
jetons
n Opération V (Sem)
Les sémaphores
![Page 11: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/11.jpg)
11
V (Sem)
débutSem.K := Sem.K + 1;Si Sem.K £ 0alors
sortir un processus de Sem.Lréveiller ce processus
fsifin
£ 0
Réveil
n Opération V (Sem)
Les sémaphores
![Page 12: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/12.jpg)
12
n Signification du compteur K n Si Sem.K > 0, Sem.K est le nombre d'opérations P(Sem)
passantes
2
P1 P2 P3
P(Sem)
P(Sem)P(Sem)
K = 1
K = 0K < 0 Bloqué
Les sémaphores
![Page 13: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/13.jpg)
13
n Signification du compteur K n Si Sem.K £ 0, valeur_absolue(Sem.K) est le nombre de
processus bloqués dans Sem.L
-2
P3 P4 P1
P(Sem)
P(Sem)V(Sem)
K = -1Bloqué
K = -2Bloqué K = -1
Réveil de P3
Les sémaphores
P3P4
![Page 14: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/14.jpg)
14
1 seul processus en section critique=> 1 seul jetonSémaphore Mutex initialisé à 1
P (Mutex)
V (Mutex)
Entrée section_critique
Sortie section_critique
Section Critique
Section critique avec sémaphore
![Page 15: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/15.jpg)
15
N ressources exclusives de même type
Sémaphore Res initialisé à N
Allocation : P(Res)
Restitution V(Res)
Utilisation Ressource
Allocations de ressources
![Page 16: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/16.jpg)
16
P1
P2
P3
P4
P(Res) P(Res)
P(Res)
Res.K = 2 Res.K = 1
Res.K = 0
P(Res)Res.K = - 1
Bloqué
V(Res)Res.K = 0
alloué alloué
alloué
Allocations de ressources
![Page 17: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/17.jpg)
17
Tampon de messages géré circulairement
Producteur Consommateur
Notion de synchronisationProducteur - Consommateur
![Page 18: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/18.jpg)
18
n ProducteurSi il y a au moins une case libre alorsdéposer le message prévenir le consommateursinon attendrefsi
n ConsommateurSi il y a au moins une case pleine alorsprendre le message prévenir le producteursinonattendrefsi
Notion de synchronisationProducteur - Consommateur
![Page 19: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/19.jpg)
19
Tampon de N messages
ProducteurConsommateur
Ressources cases videsN
Ressources cases pleines 0
Sémaphore Vide Sémaphore Plein
retrait case jdépot case i
Les sémaphoresProducteur-Consommateur
![Page 20: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/20.jpg)
20
n ProducteurSi il y a au moins une case libre alorsdéposer le message prévenir le consommateursinon attendrefsi
allocation de ressources cases videsP (Sémaphore Vide)
une ressource case pleine disponibleV (Sémaphore Plein)
Les sémaphoresProducteur-Consommateur
![Page 21: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/21.jpg)
21
n ConsommateurSi il y a au moins une case pleine alorsprendre le message prévenir le
producteursinonattendrefsi
allocation de ressources cases pleinesP (Sémaphore Plein)
une ressource case vide disponibleV (SémaphoreVide)
Les sémaphoresProducteur-Consommateur
![Page 22: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/22.jpg)
22
n Producteurindex i de dépot : = 0
P(Vide)déposer le message dans T(i);i : = i + 1 mod N;V(Plein)
n Consommateur
index j de retrait := 0
P(Plein)retirer le message de T(j);j : = j + 1 mod N;V(Vide)
Sémaphore Vide initialisé à N : Init (Vide, N)Sémaphore Plein initialisé à 0 : Init (Plein, 0)
![Page 23: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/23.jpg)
23
Producteur ConsommateurP(Plein)Plein.K = -1Bloqué
P(Vide)Vide.K := 1dépotV(Plein) Débloqué
1 case pleine
Les sémaphoresProducteur-Consommateur
![Page 24: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/24.jpg)
24
Producteur ConsommateurP(Vide)Vide.K := 0dépotV(Plein)
2 cases pleines
P(Vide)Vide.K := - 1Bloqué
Retrait V(Vide)
Débloqué
Les sémaphoresProducteur-Consommateur
![Page 25: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/25.jpg)
25
FICHIER
ECRITURE
LECTURES
n Ecriture seule - Lectures simultanéesn Un écrivain exclut
n les écrivainsn les lecteurs
n Un lecteur exclut n les écrivains
Les sémaphoresLecteurs / Rédacteurs
![Page 26: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/26.jpg)
26
ECRITURE
n Un écrivain exclut les écrivains et les lecteursn Un écrivain effectue des accès en exclusion
mutuelle des autres écrivains et des lecteurs
n Sémaphore d'exclusion mutuelle Accès initialisé à 1
Les sémaphoresLecteurs / Rédacteurs
![Page 27: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/27.jpg)
27
Les sémaphoresLecteurs / Rédacteursn M'assurer que l'accès au fichier est libre
P(Accès)
entrer en écriture
Libérer l'accès au fichier
V(Accès)Ecrivain
![Page 28: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/28.jpg)
28
Les sémaphoresLecteurs / Rédacteursn M'assurer que l'accès au fichier est libre
P(Accès)
entrer en lecture
Libérer l'accès au fichier
V(Accès)Lecteur
![Page 29: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/29.jpg)
29
LECTURES
n Un lecteur exclut les écrivainsn Un premier lecteur doit s'assurer qu'il n'y a pas d'accès en
écriture en coursn Le dernier lecteur doit réveiller un éventuel écrivain
n NL, nombre de lecteurs courants, initialisé à 0
Les sémaphoresLecteurs / Rédacteurs
![Page 30: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/30.jpg)
30
Lecteur
Compter un lecteur de plusSi je suis le premier lecteuralors
Y-a-t-il un écrivain ?si oui, attendre
fsi
entrer en lecture
Compter un lecteur de moinsSi je suis le dernier, réveiller un écrivain
Les sémaphoresLecteurs / Rédacteurs
NL = 1NL : = NL + 1
V(Accès)
NL : = NL - 1NL = 0
P(Accès)
P(Mutex)
V(Mutex)
P(Mutex)
V(Mutex)
Lecture
![Page 31: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/31.jpg)
31
P(Mutex)NL : = NL + 1Si (NL = 1)alors
P(Accès)fsiV(Mutex)
P(Mutex)NL := NL - 1;Si (NL = 0) alors
V(Accès)fsiV(Mutex)
Accès lecture
Lecteur
Les sémaphoresLecteurs / Rédacteurs
![Page 32: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/32.jpg)
32
Lecteur 1 Rédacteur 1Lecteur 2 Rédacteur 2
P(Mutex)NL = 1
P(ACCES)Accès autoriséFichier (L)V(Mutex)
P(ACCES)Bloqué
Non actifNon actif
Les sémaphoresLecteurs / Rédacteurs
![Page 33: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/33.jpg)
33
Lecteur 1 Rédacteur 1Lecteur 2 Rédacteur 2
P(Mutex)NL = 2
Accès autorisé
V(Mutex)
Lecture Bloqué Non actif
Les sémaphoresLecteurs / Rédacteurs
![Page 34: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/34.jpg)
34
Lecteur 1 Rédacteur 1Lecteur 2 Rédacteur 2
P(Mutex)NL -- = 1V(Mutex) Bloqué Non actif
P(Mutex)NL -- = 0V(ACCES)V(Mutex)
Lecture
Fichier (E) P(ACCES)Bloqué
Les sémaphoresLecteurs / Rédacteurs
![Page 35: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/35.jpg)
35
Lecteur 1 Rédacteur 1Lecteur 2 Rédacteur 2
Bloqué
Ecriture
V(ACCES) Ecriture
P(Mutex)NL = 1P(ACCES)bloqué
P(Mutex)bloqué
Les sémaphoresLecteurs / Rédacteurs
![Page 36: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/36.jpg)
36
n Coalition des lecteurs contre les écrivains
Lecteur 1P(E) et accès
Lecteur 2...iaccès direct Ecrivain
P(E) bloquant
Lecteur j.. ¥accès direct
Fichier libre
Fichier en lecture
Les sémaphoresLecteurs / Rédacteurs
![Page 37: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/37.jpg)
37
n Solution à la coalition
Fichier libre
Lecteur 1P(E) et accès
Lecteur 2...iaccès direct Ecrivain
P(E) bloquant
Lecteur j.. ¥
Fichier en lecture
Interdire l'accès
Les sémaphoresLecteurs / Rédacteurs
![Page 38: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/38.jpg)
38
Agendan Semaphore and Threads
![Page 39: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/39.jpg)
Mutexn Mutex is an abbreviation for "mutual
exclusion”n Variable:
n pthread_mutex_t lock;
n Functions:n pthread_mutex_init (*mutex, *attr) n pthread_mutex_destroy (*mutex)n pthread_mutex_lock (*mutex) n pthread_mutex_unlock (*mutex) 39
![Page 40: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/40.jpg)
Implementation with Threadstypedef struct sem_t {
pthread_mutex_t lock; int k;pthread_cond_t sem_cond;
} semaphore;
40
![Page 41: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/41.jpg)
Implementation with Threadsvoid sem_init (semaphore *b, int value) {
pthread_mutex_init (&b->lock, NULL); pthread_cond_init (&b->sem_cond,
NULL); b->k=value;
}
41
![Page 42: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/42.jpg)
Implementation with Threadsvoid sem_p (semaphore *b) {
pthread_mutex_lock (&b->lock);b->k--;if (b->k < 0)
pthread_cond_wait (&b->sem_cond, &b->lock);
pthread_mutex_unlock (&b->lock);
}
42
![Page 43: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/43.jpg)
Implementation with Threadsvoid sem_v (semaphore *b) {
pthread_mutex_lock (&b->lock);b->k++;if (b->k <= 0)
pthread_cond_signal (&b->sem_cond);
pthread_mutex_unlock (&b->lock);}
43
![Page 44: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/44.jpg)
Implementation with Threadsvoid sem_close (semaphore *b) {
pthread_mutex_destroy (&b->lock); pthread_cond_destroy (&b->sem_cond);
}
44
![Page 45: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/45.jpg)
n http://linuxdevcenter.com/pub/a/linux/2007/05/24/semaphores-in-linux.html?page=1
n http://www.csc.villanova.edu/~mdamian/threads/posixsem.html
45
![Page 46: 05 - semaphorebosio/HMEE209/04 - semaphore.pdf · 2017. 2. 13. · 3 Notion de ressources n Définitions n Une ressource désigne toute entité dont a besoin un processus pour s'exécuter](https://reader036.vdocuments.fr/reader036/viewer/2022081620/61126d7fea6cf854ad1f453a/html5/thumbnails/46.jpg)
Exercice
n On considère deux machines (M1 et M2) qui travaillent en ligne (concurrence). Un robot permet de transporter une pièce à la fois soit du stock aval de la Machine 1 vers le Stock S, soit du Stock S vers le stock amont de la Machine 2. Le Stock S a une capacité limité à 4 pièces.
n Quelle sont les ressources ?n Ecrire un programme pour modéliser le system 46
M1 M2StockS
Robot