1. Syst`mes concurrents
e
Philippe Qu´innec
e
11 f´vrier 2011
e
Syst`mes concurrents
e 1 / 31
2. Plan du cours
1 Introduction : probl´matique
e
2 Exclusion mutuelle
3 Synchronisation ` base de s´maphores
a e
4 Synchronisation ` base de moniteur
a
5 Interblocage
6 API Java, Posix Threads
7 Probl`mes g´n´riques
e e e
8 Processus communicants – Ada
9 Transactions
10 Synchronisation non bloquante
Syst`mes concurrents
e 2 / 31
3. Activit´s concurrentes
e
Conception
Avantages/inconv´nients
e
Premi`re partie
e
Introduction
Syst`mes concurrents
e 3 / 31
4. Activit´s concurrentes
e Le probl`me
e
Conception Un peu d’architecture
Avantages/inconv´nients
e Communication & processus
Plan
1 Activit´s concurrentes
e
Le probl`me
e
Un peu d’architecture
Communication & processus
2 Conception
Comment contrˆler (r´aliser) la composition ?
o e
Comment d´crire ?
e
Comment raisonner ?
3 Avantages/inconv´nients
e
Syst`mes concurrents – Introduction
e 4 / 31
5. Activit´s concurrentes
e Le probl`me
e
Conception Un peu d’architecture
Avantages/inconv´nients
e Communication & processus
Le probl`me
e
Ouvrier
Récepteur travaux urgents
Ouvrier Résultats
Livreur
Récepteur (émetteur)
Ouvrier
Récepteur travaux normaux
Ouvrier
coop´ration : les activit´s
e e se connaissent
comp´tition : les activit´s
e e s’ignorent
vitesse d’ex´cution arbitraire
e
Syst`mes concurrents – Introduction
e 5 / 31
6. Activit´s concurrentes
e Le probl`me
e
Conception Un peu d’architecture
Avantages/inconv´nients
e Communication & processus
Vocabulaire
parall´lisme (vrai parall´lisme) : le fait que des activit´s
e e e
s’ex´cutent simultan´ment. Possible uniquement sur
e e
un syst`me multi-processeurs.
e
concurrence (ou parall´lisme simul´, ou pseudo-parall´lisme) :
e e e
illusion que des activit´s s’ex´cutent simultan´ment.
e e e
asynchronisme : d´crit le fait que des activit´s (ou ´v´nements) se
e e e e
produisent de mani`re ind´pendante.
e e
synchronisation : apparaˆ quand il existe des d´pendances entre
ıt e
les activit´s.
e
Syst`mes concurrents – Introduction
e 6 / 31
7. Activit´s concurrentes
e Le probl`me
e
Conception Un peu d’architecture
Avantages/inconv´nients
e Communication & processus
Diff´rence avec la programmation s´quentielle
e e
pluralit´ d’activit´s
e e simultan´es
e
explosion de l’espace d’´tats
e
⇒ n´cessit´ de m´thodes et d’outils (conceptuels et logiciels)
e e e
pour le raisonnement et le d´veloppement
e
interd´pendance des activit´s
e e
logique : production/utilisation de r´sultats interm´diaires
e e
chronologique : disponibilit´ des r´sultats
e e
Syst`mes concurrents – Introduction
e 7 / 31
8. Activit´s concurrentes
e Le probl`me
e
Conception Un peu d’architecture
Avantages/inconv´nients
e Communication & processus
Composants mat´riels
e
Processeurs
M´canisme d’interconnexion
e
M´moire et caches
e
Syst`mes concurrents – Introduction
e 8 / 31
9. Activit´s concurrentes
e Le probl`me
e
Conception Un peu d’architecture
Avantages/inconv´nients
e Communication & processus
Processeur
Vision simpliste : ` chaque cycle, le processeur ex´cute une
a e
instruction machine ` partir d’un flot s´quentiel (le code).
a e
En pratique :
pipeline : plusieurs instructions en cours dans un mˆme cycle :
e
obtention, d´codage, ex´cution, ´criture du r´sultat
e e e e
superscalaire : plusieurs unit´s d’ex´cution
e e
instructions vectorielles
r´ordonnancement (out-of-order)
e
Syst`mes concurrents – Introduction
e 9 / 31
10. Activit´s concurrentes
e Le probl`me
e
Conception Un peu d’architecture
Avantages/inconv´nients
e Communication & processus
Interconnexion
Bus
m´dium ` diffusion
e a
interconnecte des processeurs entre eux
interconnecte les processeurs et la m´moire
e
interconnecte les processeurs et des unit´s d’E/S
e
Mini r´seaux locaux (parall´lisme massif)
e e
R´seaux locaux classiques (syst`me r´parti)
e e e
Syst`mes concurrents – Introduction
e 10 / 31
11. Activit´s concurrentes
e Le probl`me
e
Conception Un peu d’architecture
Avantages/inconv´nients
e Communication & processus
M´moire
e
La m´moire et le processeur sont ´loign´s : un acc`s m´moire est
e e e e e
consid´rablement plus lent que l’ex´cution d’une instruction (peut
e e
atteindre un facteur 100 dans un ordinateur, 10000 en r´parti).
e
Principe de localit´ :
e
temporelle si on utilise une adresse, on l’utilisera probablement
de nouveau dans peu de temps
spatiale si on utilise une adresse, on utilisera probablement
une adresse proche dans peu de temps
⇒ conserver pr`s du CPU les derni`res cases m´moire acc´d´es
e e e e e
⇒ Cache : m´moire rapide proche du processeur
e
Plusieurs niveaux de caches : de plus en plus gros, de moins en
moins rapides (actuellement 3 niveaux).
CPU Cache L1 Cache L2 Mémoire
Syst`mes concurrents – Introduction
e 11 / 31
12. Activit´s concurrentes
e Le probl`me
e
Conception Un peu d’architecture
Avantages/inconv´nients
e Communication & processus
Cache
Diff´rents principes de placement dans le cache (associatif,
e
mapp´, k-associatif. . . )
e
Diff´rentes strat´gies de remplacement (LRU - least recently
e e
used. . . )
Diff´rentes strat´gies d’invalidation - coh´rence m´moire
e e e e
Syst`mes concurrents – Introduction
e 12 / 31
13. Activit´s concurrentes
e Le probl`me
e
Conception Un peu d’architecture
Avantages/inconv´nients
e Communication & processus
Architecture multi-processeurs
Multi-processeurs ` l’ancienne
a :
Bus
CPU Cache L1 Cache L2
CPU Cache L1 Cache L2
Mémoire
CPU Cache L1 Cache L2
CPU Cache L1 Cache L2
Multi-processeurs multi-cœurs :
CPU Cache L1
Cache L2
CPU Cache L1
Mémoire
CPU Cache L1
Cache L2
CPU Cache L1
Syst`mes concurrents – Introduction
e 13 / 31
14. Activit´s concurrentes
e Le probl`me
e
Conception Un peu d’architecture
Avantages/inconv´nients
e Communication & processus
Architecture multi-processeurs
SMP Symmetric multiprocessor : une m´moire + un
e
ensemble de processeurs
CPU
CPU RAM
CPU
NUMA Non-Uniform Memory Access : un graphe
d’interconnexion de {CPU+m´moire}
e
CPU CPU CPU
RAM RAM RAM
CPU CPU CPU
RAM RAM RAM
CC-NUMA Cache-Coherent Non-Uniform Memory Access
Syst`mes concurrents – Introduction
e 14 / 31
15. Activit´s concurrentes
e Le probl`me
e
Conception Un peu d’architecture
Avantages/inconv´nients
e Communication & processus
´
Ecritures en m´moire
e
Comme fonctionne l’´criture d’une case m´moire en pr´sence de
e e e
caches ?
Write-Through diffusion sur le bus ` chaque valeur ´crite
a e
+ visible par les autres processeurs ⇒ invalidation
des valeurs pass´es
e
+ la m´moire et le cache sont coh´rents
e e
− trafic inutile : ´critures r´p´t´es, ´critures de
e e ee e
variables priv´es au thread
e
Write-Back diffusion uniquement ` l’´viction de la ligne
a e
+ trafic minimal
− coh´rence cache - m´moire - autres caches ?
e e
Syst`mes concurrents – Introduction
e 15 / 31
16. Activit´s concurrentes
e Le probl`me
e
Conception Un peu d’architecture
Avantages/inconv´nients
e Communication & processus
Coh´rence m´moire
e e
Si un processeur ´crit la case d’adresse a1 , quand les autres
e
processeurs verront-ils cette valeur ? Si plusieurs ´critures
e
cons´cutives en a1 , a2 . . . , sont-elles vues dans cet ordre ?
e
R`gles de coh´rence m´moire
e e e
Coh´rence s´quentielle le r´sultat d’une ex´cution parall`le est le
e e e e e
mˆme que celui d’une ex´cution s´quentielle qui
e e e
respecte l’ordre partiel de chacun des processeurs.
Coh´rence PRAM (pipelined RAM ou fifo) les ´critures d’un
e e
mˆme processeur sont vues dans l’ordre o` elles ont
e u
´t´ effectu´es ; des ´critures de processeurs diff´rents
ee e e e
peuvent ˆtre vues dans des ordres diff´rents.
e e
Coh´rence lente
e (slow consistency) : une lecture retourne une
valeur pr´c´demment ´crite, sans remonter dans le
e e e
temps.
Syst`mes concurrents – Introduction
e 16 / 31
17. Activit´s concurrentes
e Le probl`me
e
Conception Un peu d’architecture
Avantages/inconv´nients
e Communication & processus
Activit´
e
Activit´/processus/tˆches/threads/processus l´gers/. . .
e a e
ex´cution d’un programme s´quentiel
e e
entit´ logicielle
e
ex´cutable par un processeur
e
interruptible et commutable
Syst`mes concurrents – Introduction
e 17 / 31
18. Activit´s concurrentes
e Le probl`me
e
Conception Un peu d’architecture
Avantages/inconv´nients
e Communication & processus
La communication
M´moire partag´e
e e
Syst`me centralis´ multi-tˆches
e e a
communication implicite, r´sultant de l’acc`s ` des variables
e e a
partag´es
e
processus anonymes (pas d’identification n´cessaire)
e
Messages
Syst`me r´parti
e e
communication explicite par transfert de donn´es
e
d´signation n´cessaire du destinataire (l’activit´ ou un
e e e
interm´diaire)
e
synchronisation implicite
Syst`mes concurrents – Introduction
e 18 / 31
19. Activit´s concurrentes
e Le probl`me
e
Conception Un peu d’architecture
Avantages/inconv´nients
e Communication & processus
Activit´s
e
processus processus processus
l´gers
e communicants Unix
communication m´moire
e message fichier/tube/signal
m´moire partag´e
e e oui non non (sauf. . . )
d´signation explicite
e non (du canal) non/indirecte/oui
primitives de synchro ´volu´es
e e (communication) pauvres
Rq : un processus unix est plus une unit´ d’allocation que
e
d’ex´cution.
e
Syst`mes concurrents – Introduction
e 19 / 31
20. Activit´s concurrentes
e Comment contrˆler (r´aliser) la composition ?
o e
Conception Comment d´crire ?
e
Avantages/inconv´nients
e Comment raisonner ?
Plan
1 Activit´s concurrentes
e
Le probl`me
e
Un peu d’architecture
Communication & processus
2 Conception
Comment contrˆler (r´aliser) la composition ?
o e
Comment d´crire ?
e
Comment raisonner ?
3 Avantages/inconv´nients
e
Syst`mes concurrents – Introduction
e 20 / 31
21. Activit´s concurrentes
e Comment contrˆler (r´aliser) la composition ?
o e
Conception Comment d´crire ?
e
Avantages/inconv´nients
e Comment raisonner ?
Contrˆler
o
Concevoir une application concurrente
contrˆler un ensemble d’activit´s concurrentes
o e
contrˆler la progression et les interactions de chaque activit´
o e
assurer leur protection r´ciproque
e
Moyen
attente (par blocage – suspension – de l’activit´)
e
Syst`mes concurrents – Introduction
e 21 / 31
22. Activit´s concurrentes
e Comment contrˆler (r´aliser) la composition ?
o e
Conception Comment d´crire ?
e
Avantages/inconv´nients
e Comment raisonner ?
Contrˆler
o
Hypoth`ses de bon comportement : un protocole d´finit les
e e
interactions possibles :
Op´rations et param`tres autoris´s.
e e e
S´quences d’actions autoris´es.
e e
Un ouvrier ne doit pas d´poser plus de r´sultats qu’il n’a pris
e e
de travaux.
Syst`mes concurrents – Introduction
e 22 / 31
23. Activit´s concurrentes
e Comment contrˆler (r´aliser) la composition ?
o e
Conception Comment d´crire ?
e
Avantages/inconv´nients
e Comment raisonner ?
D´crire
e
Compteurs d’´v´nements
e e
Compter les actions ou les changements d’´tats et les relier entre
e
eux.
Exemple
#nb de travaux soumis = #nb travaux effectu´s
e
+ #nb travaux en cours
+ #nb travaux en attente
Syst`mes concurrents – Introduction
e 23 / 31
24. Activit´s concurrentes
e Comment contrˆler (r´aliser) la composition ?
o e
Conception Comment d´crire ?
e
Avantages/inconv´nients
e Comment raisonner ?
D´crire
e
Triplets de Hoare
pr´condition/action/postcondition
e
Exemple
{t = nb travaux en attente ∧ t > 0 ∧ r = nb r´sultats}
e
ouvrier effectue un travail
{nb travaux en attente = t − 1 ∧ nb r´sultats = r + 1}
e
S´rialisation : {p}A1 ; A2 {q12 }, {p}A2 ; A1 {q21 }
e
{p}A1 A2 {q12 ∨ q21 }
Ind´pendance :
e
A1 et A2 sans interf´rence, {p}A1 {q1 }, {p}A2 {q2 }
e
{p}A1 A2 {q1 ∧ q2 }
Syst`mes concurrents – Introduction
e 24 / 31
25. Activit´s concurrentes
e Comment contrˆler (r´aliser) la composition ?
o e
Conception Comment d´crire ?
e
Avantages/inconv´nients
e Comment raisonner ?
D´crire
e
Propri´t´s temporelles
ee
Lin´aires : pour toutes les ex´cutions possibles,
e e
` tout moment d’une ex´cution.
a e
Arborescentes : pour certaines ex´cutions possibles,
e
` tout moment d’une ex´cution.
a e
Exemple
Sˆret´ : rien de mauvais ne se produit
u e
Deux ouvriers ne peuvent jamais prendre le mˆme travail.
e
Vivacit´ : quelque chose de bon finit par se produire
e
Un travail d´pos´ finit par ˆtre pris par un ouvrier.
e e e
Possibilit´ : deux travaux d´pos´s cons´cutivement peuvent
e e e e
ˆtre ex´cut´s s´quentiellement par le mˆme ouvrier.
e e e e e
Syst`mes concurrents – Introduction
e 25 / 31
26. Activit´s concurrentes
e Comment contrˆler (r´aliser) la composition ?
o e
Conception Comment d´crire ?
e
Avantages/inconv´nients
e Comment raisonner ?
Mod`le : l’entrelacement
e
Raisonner sur tous les cas parall`les est trop complexe
e
⇒ on raisonne sur des ex´cutions s´quentielles obtenues par
e e
entrelacement des instructions des diff´rentes activit´s.
e e
Deux processus P = p1 ; p2 et Q = q1 ; q2 . L’ex´cution concurrente
e
P Q est vue comme (´quivalente `) l’une des ex´cutions :
e a e
p1 ; p2 ; q1 ; q2 ou p1 ; q1 ; p2 ; q2 ou p1 ; q1 ; q2 ; p2 ou q1 ; p1 ; p2 ; q2 ou
q1 ; p1 ; q2 ; p2 ou q1 ; q2 ; p1 ; p2
(p+q)!
Nombre d’entrelacements : p! q!
Attention
Ne pas oublier que c’est un mod`le simplificateur (vraie
e
concurrence, coh´rence m´moire. . . )
e e
Il peut ne pas exister de code s´quentiel ´quivalent au code
e e
parall`le.
e
Syst`mes concurrents – Introduction
e 26 / 31
27. Activit´s concurrentes
e Comment contrˆler (r´aliser) la composition ?
o e
Conception Comment d´crire ?
e
Avantages/inconv´nients
e Comment raisonner ?
Raisonner
Contrˆler les effets des interactions
o
isoler (raisonner ind´pendamment) ⇒ modularit´
e e
contrˆler/sp´cifier l’interaction
o e
sch´mas connus d’interaction (design patterns)
e
Syst`mes concurrents – Introduction
e 27 / 31
28. Activit´s concurrentes
e
Conception
Avantages/inconv´nients
e
Plan
1 Activit´s concurrentes
e
Le probl`me
e
Un peu d’architecture
Communication & processus
2 Conception
Comment contrˆler (r´aliser) la composition ?
o e
Comment d´crire ?
e
Comment raisonner ?
3 Avantages/inconv´nients
e
Syst`mes concurrents – Introduction
e 28 / 31
29. Activit´s concurrentes
e
Conception
Avantages/inconv´nients
e
Avantages/inconv´nients
e
+ utilisation d’un syst`me multi-processeurs.
e
+ utilisation de la concurrence naturelle d’un programme.
+ mod`le de programmation naturel, en explicitant la
e
synchronisation n´cessaire.
e
− surcoˆt d’ex´cution (synchronisation, implantation du
u e
pseudo-parall´lisme).
e
− surcoˆt de d´veloppement : n´cessit´ d’expliciter la
u e e e
synchronisation, v´rifier la r´entrance des biblioth`ques,
e e e
danger des variables partag´es.
e
− surcoˆt de mise-au-point : debuggage souvent d´licat (pas de
u e
flot s´quentiel ` suivre) ; effet d’interf´rence entre des
e a e
activit´s, interblocage. . .
e
Syst`mes concurrents – Introduction
e 29 / 31
30. Activit´s concurrentes
e
Conception
Avantages/inconv´nients
e
Parall´lisme et performance
e
Mythe du parall´lisme
e
Si je remplace ma machine mono-processeur par une machine `
a
N processeurs, mon programme ira N fois plus vite
Soit un syst`me compos´ par une partie p parall´lisable + une
e e e
partie 1 − p s´quentielle.
e
Loi d'Amdahl
20.00
18.00
Portion parallèle
16.00 50%
75%
CPU dur´e
e p = 40% p = 80% 14.00 90%
95%
12.00
1 p + (1 − p) 100 100
Speedup
10.00
p
4 4 + (1 − p) 70 40 8.00
p
8 8 + (1 − p) 65 30 6.00
4.00
p
16 16 + (1 − p) 62, 5 25 2.00
∞ 60 20 0.00
16384
32768
65536
1024
2048
4096
8192
128
256
512
16
32
64
1
2
4
8
1
Loi d’Amdahl : maximal speedup = 1−p
Nombre de Processeurs
(source : wikicommons)
Syst`mes concurrents – Introduction
e 30 / 31
31. Activit´s concurrentes
e
Conception
Avantages/inconv´nients
e
Parall´lisme et performance
e
Mythe de la performance
Si je remplace ma machine par une machine N fois plus rapide,
mon programme traitera des probl`mes N fois plus grands dans le
e
mˆme temps
e
Pour un probl`me de taille n soluble en temps T , taille de probl`me
e e
soluble dans le mˆme temps sur une machine N fois plus rapide :
e
complexit´
e N=4 N = 16 N = 1024
O(n) √ 4n √ 16n √ 1024n
O(n 2)
√ 4n = 2n √ 16n = 4n √1024n = 32n
O(n3 ) 3
4n ≈ 1.6n 3
16n ≈ 2.5n 3
1024n ≈ 10n
O(e n) ln(4)n ≈ 1.4n ln(16)n ≈ 2.8n ln(1024)n ≈ 6.9n
En supposant en outre que tout est 100% est parall´lisable et qu’il
e
n’y a aucune interf´rence !
e
Syst`mes concurrents – Introduction
e 31 / 31