D´
efinitions
Progression : Un processus d’un syst `
eme synchrone progresse
(normalement) si, `
a l’issue de l’ex ´
ecution d’une phase, l’ex´
ecution
de la phase suivante a lieu au bout d’un temps fini.
Viabilit´
e: Un syst`
eme asynchrone est viable si tous les processus,
qui le composent, progressent.
Inter-blocage : Un syst`
eme asynchrone est en inter-blocage si
aucun des processus, qui le composent, ne peut progresser.
Famine : Si, dans un syst `
eme asynchrone qui n’est pas en
inter-blocage, un processus ne peut plus progresser, alors il est en
situation de famine.
´
Equit´
e: Un syst`
eme asynchrone viable est ´
equitable si, pour tout
processus, la dur´
ee entre deux phases cons´
ecutives est born ´
ee.
Inter-blocage – exemple
Acc`
es `
a une ressource g´
er´
e par un mutex: obtenir /lib´
erer
P1:
X1
Requiert M1
Requiert M2
Y1
Lib`
ere M1
Lib`
ere M2
X2
attente M1
X1
attente M1
attente M2
attente M2
obtient M1
obtient M2
P1:
X2
Requiert M2
Requiert M1
Y2
Lib`
ere M2
Lib`
ere M1
Difficult´
es
Facile d’´
ecrire un programme r´
eparti sans inter-blocage
(synchronisation partout, sections critiques partout)
Difficile d’´
ecrire un programme sans inter-blocage et correct
Extrˆ
emement difficile d’´
ecrire un programme sans inter-blocage, correct
et efficace
Extrˆ
emement difficile de s’assurer qu’un programme r´
eparti est sans
inter-blocage
Extrˆ
emement difficile de s’assurer qu’un programme r´
eparti est correct
Inter-blocage
Des trucs:
IToujours acqu´
erir les mutex dans le m ˆ
eme ordre
INe pas partager les mutex entre des processus de priorit ´
es
diff´
erentes
IMOD ´
ELISER avant de programmer!
INe pas compter sur le langage de programmation