uml comportemental et concurrence
TRANSCRIPT
-
7/25/2019 UML Comportemental Et Concurrence
1/46
Reprsenter le tempsA. BeugnardMajeure Informatique INF301 GL-C42e semestre 2015
-
7/25/2019 UML Comportemental Et Concurrence
2/46
Les cours de laxe GL de lUV1 - INF301
1. La dcouverte des objets2. Les cycles de vie des logiciels3. UML structurel et hritage
4. UML comportemental et concurrence
2 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
3/46
Objectifs
Un systme peut tre dcrit selon plusieurs points devue. Nous nous sommes focalis sur sa structure ; cequi le compose (les objets, les relations), ce quicaractrise son tat.
Une autre dimension essentielle est son volution ; cequi fait voluer son tat dans le temps.
Dfinir des conceptsDonner quelques intuitionsProposer quelques notations
Je vous invite prendre des notes. . .
3 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
4/46
Avancement
1 La concurrenceDfinition
Quelques difficults
2 La concurrence en UML
4 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
5/46
Comment le temps est-il reprsent ?
Un programme = une squence dinstructions
0start 1 2 3 4 5a b
c d
e
Peut-il se passer plusieurs choses simultanment ?
5 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
6/46
Comment le temps est-il reprsent ?
Un programme = une squence dinstructions
0start 1 2 3 4 5a b
c d
e
Peut-il se passer plusieurs choses simultanment ?Non!
Linstruction bne peut commencer que silinstruction aest termine.Le programme se termine quand (et si) linstructionese termine.
5 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
7/46
Comment faire 2 choses en mme temps?
Une interface utilisateur ractive (Thinking in Java,www.BruceEckel.com2ed p825)
Valeur courante du compteur
Dmarrage du compteur Suspension / Redmarrage
6 / 38 A. Beugnard Reprsenter le temps
http://www.bruceeckel.com/http://www.bruceeckel.com/ -
7/25/2019 UML Comportemental Et Concurrence
8/46
Tches et excution
Le programme est dcoup en tchesles instructions dune tche sexcutent squentiellementCes tches sont excutes indpendamment1. si assez de processeurs / curs, excutionsimultane
ttche 1
.
.
.
.
.
.
.
.
.
t
tche k
a11 a
12 . . . a
1n1
ak1 a
k2 . . . a
knk
2. sinon, il y aentrelacement
t
tche 1 et ka11 a
k1 a
k2 a
12 . . . . . . a1n1 aknk
Si plusieurs tches sexcutent :paralllisme
7 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
9/46
Ordre des tches
Dans quel ordre sexcutent les tches ?si les tches sontindpendantes(cest rare...)- il suffit de respecter lordre interne chaque tche
si des tches partagent des ressources ou changent desdonnes
- il faut quelles sentendent, cest lasynchronisation- certains ordres dexcution ne sont plus acceptables
On parle deconcurrencedes tchesComment est assure la synchronisation ?
soit par construction (temps partag, algorithme, . . .)soit le systme dexcution fournit des verrous que lesactions doivent prendre et rendre
8 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
10/46
Quest-ce quun programme concurrent ?
Un programmeconcurrentExcute simultanment plusieurs tches (squencesdinstructions) grce au support de plusieurs filsdactivits (threads)
Unespcificationdun programme concurrentun ensemble de processus (ou dactivits) quidcrivent des actions squentielles.
un ensemble de contraintes (synchronisation,partage de ressources, change de donnes)Unetracedexcution
la squence des instructions effectivementexcute.
9 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
11/46
Exemple : partage de ressources
1 while(true) {
2 R1.acqurir();
3 R2.acqurir();
4 travailler();
5 R1.librer();
6 R2.librer();
7 seReposer();
8 }
0start
1
2
3
4
5
R1.acqurir
R2.acqurirtravailler
R1.librer
R2.librer
seReposer
10 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
12/46
Dfinition du paralllisme
Dfinition :On dit que deux instructions (actions,calculs) sont parallles si elles ont lieu au mme instant
Quest-ce quun instant ?
11 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
13/46
Dfinition du paralllisme
Dfinition :On dit que deux instructions (actions,calculs) sont parallles si elles ont lieu au mme instant
Quest-ce quun instant ?
11 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
14/46
Dfinition du paralllisme
Dfinition :On dit que deux instructions (actions,calculs) sont parallles si elles ont lieu au mme instant
Quest-ce quun instant ?Un point dans le temps. . . qui peut tre considrcomme de dure nulle
11 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
15/46
Dfinition du paralllisme
Dfinition :On dit que deux instructions (actions,calculs) sont parallles si elles ont lieu au mme instant
Quest-ce quun instant ?Un point dans le temps. . . qui peut tre considrcomme de dure nulleAbstraitement : pas de relation causaleentre les deuxinstructions (indpendance)
ExemplesSur une machine : 2 sessions dutilisateurs diffrentsAvec plusieurs machines : des clients et un serveur
11 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
16/46
Exemple de systme concurrent
12 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
17/46
Pourquoi la concurrence ?
Cest naturel !Meilleure utilisation des ressources (partage)Meilleures performances
Plus de souplesse dans les interactions (plus blocagesur une entre)Meilleur contrle, en jouant sur les priorits
13 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
18/46
Pourquoi la concurrence ?
Cest naturel !Meilleure utilisation des ressources (partage)Meilleures performances
Plus de souplesse dans les interactions (plus blocagesur une entre)Meilleur contrle, en jouant sur les priorits
Mais cest aussi beaucoup plus complexe !
13 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
19/46
Rappels douloureux
Incident Therac 25TGV
Interblocage, famine, mauvais contrle (atomicit,
transaction), ...
14 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
20/46
Partager correctement
Console
Radar
Radar
(x,y)
positionde la fuse
partage
Radar := while(true) {write(x); write(y);}
Console := while(true) {read(x); read(y); decision();}
Une trajectoire est prvue. Si on observe une erreur detrajectoire, on dtruit la fuseEt alors. . . ?
15 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
21/46
Atomicit, exclusion mutuelle
Imaginez lentrelacement :write(x); read(x); read(y); write(y); decision();
La console observe lancienne valeur de y ! ! ! Ladcision peut tre errone.
16 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
22/46
Atomicit, exclusion mutuelle
Imaginez lentrelacement :write(x); read(x); read(y); write(y); decision();
La console observe lancienne valeur de y ! ! ! Ladcision peut tre errone.
Il faut garantir la mise jour de x et y ensemble :on parle doprationatomique
Rendre atomique permet dassurer uneexclusionmutuelle, en interdisant tout autre processusdintervenir pendant lexcution de lazone critique.
16 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
23/46
Non dterminisme
Avec la concurrence il faut imaginer que tous lesentrelacements sont possibles. Le choix du cheminrellement excut est inconnu.
On parle denon dterminisme.10 processus avec 10 instructions chacun cest dj1010 entrelacements possibles !
En consquence, il estdifficile de testerexhaustivement un programme concurrent. Denouveaux risques derreurs arrivent.
17 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
24/46
Accder avec sret
Rseau
Disque
VoD1 VoD2
VoD1 := while(true) { acquire(Rx); acquire(Dd); compute();
release(Rx); release(Dd);}
VoD2 := while(true) { acquire(Dd); acquire(Rx); compute();
release(Rx); release(Dd);}
Et alors. . . ?
18 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
25/46
-
7/25/2019 UML Comportemental Et Concurrence
26/46
Interblocage
Imaginez lentrelacement :VoD1.acquire(Rx); VoD2.acquire(Dd); VoD1.acquire(Dd);
VoD2.acquire(Rx);
VoD1 attend que VoD2 libre le disqueVoD2 que VoD1 libre le rseauPlus rien ne se passe, cest uninterblocage
Deux solutions ce type de problme :
prvention : viter que cela arrive.
gurison : tuer un des processus, librer ses possessions(verrous) et le redmarrer
19 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
27/46
Conclusion intermdiaire
On a quelques intuitions de la concurrence et de sesdifficults.
Comment dcrire le temps ?
Comment dcrire la concurrence ?
20 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
28/46
Avancement
1 La concurrence
2 La concurrence en UMLDiagramme de squencetats, transitions, activits
21 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
29/46
Interaction en Java
1 public class Producer {2 ...
3 private Stock s ; //initialis par le constructeur4 ...
5 public void produce() {
6 Product o;
7 boolean full;
8 o = new Product("gomme");
9 s.add(o);
10 full = s.isEmpty();
11 }
12 ...13 }
22 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
30/46
Un diagramme de squence : produce
:Producer o:Product s:Stocko=create()
add(o)
full=isEmpty()
23 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
31/46
Squences et flux
p1:Producer s:Stock p2:Produceradd(o1)
add(o2)
Il y a des objetsactifs(p1etp2) et dautrespassifs(s)
24 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
32/46
Squences et flux
p1:Producer s:Stock p2:Produceradd(o1)
add(o2)
p1 et p2 veulent accder en mme temps s. Il y a des
risques si lun des 2 modifie ltatde lobjet partag.Comment retarder ? Avec ou sans condition ? Parexemple si s est plein. . .
25 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
33/46
Lien avec le cours Java
Comment crer des activits ? la classeThreadComment rendre atomique ?Comment assurer lexclusion mutuelle ?Comment synchroniser ? faire attendre ?Comment utiliser ces outils ? Une mthode
Comment reprsenter des automates et des filsdactivit en UML ?
26 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
34/46
tats et automate
On considre un clavier de tlphone sur lequel oncompose des chiffres pour former un numro.
27 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
35/46
tats et automate
On considre un clavier de tlphone sur lequel oncompose des chiffres pour former un numro.
0start 2 3n
n
num
27 / 38 A. Beugnard Reprsenter le temps
-
7/25/2019 UML Comportemental Et Concurrence
36/46
Vocabulaire : tat, transition, etc.
tat Reprsente un moment dans le temps (quipeut durer). On distingue les tats initiaux(sans origine) et finaux (sans issues).
Transition Reprsente un vnement qui fait passer
dun tat un autre de manire (abstraite)instantane. On distingue la transition (vide) qui permet une transition immdiate.
Garde Reprsente une condition pour quune
transition puisse tre tire.Action Opration attache une transition qui est
excute lors du tirage de la transition.
28 / 38 A. Beugnard Reprsenter le temps
M h l (S M h )
-
7/25/2019 UML Comportemental Et Concurrence
37/46
Machines tats simple (State Machine)
Un tel diagramme permet de dcrire les volutions destats dun objet.
29 / 38 A. Beugnard Reprsenter le temps
M h (S M h )
-
7/25/2019 UML Comportemental Et Concurrence
38/46
Machines tats (State Machine)
30 / 38 A. Beugnard Reprsenter le temps
Li i d
-
7/25/2019 UML Comportemental Et Concurrence
39/46
Limite des automates
Un ProtocolStateMachine UML permet de dcrire unfil dexcution comme par exemple les volutions destats dun objet.
Ltat peut tre dfini comme lensemble des valeursdes attributs de lobjet.
Comment dcrire plusieurs fils dxcution ?
31 / 38 A. Beugnard Reprsenter le temps
Di d i i (A i i )
-
7/25/2019 UML Comportemental Et Concurrence
40/46
Diagramme dactivits (Activity)
ActivityPartitionInitialNodeAction
ControlFlowObjectFlowDecisionNode
ForkNodeJoinNodeActivityFinal
32 / 38 A. Beugnard Reprsenter le temps
C i
-
7/25/2019 UML Comportemental Et Concurrence
41/46
Comparaisons
Quand utiliser les diffrents diagrammes ?Diagramme de squence : interactions entre objetsAutomate : un fil, volution des tats dun objets
Diagramme dactivit : plusieurs fils, plusieursobjets, peu de dtails
Les diagrammes dactivit sont plus adapts auxphases amont (analyse) du dveloppement.
33 / 38 A. Beugnard Reprsenter le temps
C l i
-
7/25/2019 UML Comportemental Et Concurrence
42/46
Conclusion
Un systme (logiciel) ncessite de nombreux points devue pour tre dcrit.UML offre des outils pour dcrire les points de vue :
structurel: diagramme de classe, objet, et dautres
temporel: diagramme dtat, dactivit, desquence, et dautresfonctionnel: diagramme de cas dutilisation ou
dactivit
34 / 38 A. Beugnard Reprsenter le temps
C l i
-
7/25/2019 UML Comportemental Et Concurrence
43/46
Conclusion
Ce cours donne quelques outils et intuitions sur lafaon de dcrire la concurrence.Le cours Java complte compltera avec une visionplus oprationnelle (excutable) de la concurrence.
LUV2 approfondira la comprhension de laconcurrence.
35 / 38 A. Beugnard Reprsenter le temps
Partie I : Annexe
-
7/25/2019 UML Comportemental Et Concurrence
44/46
Partie I :Annexe
36 / 38 A. Beugnard Reprsenter le temps
Vocabulaire
-
7/25/2019 UML Comportemental Et Concurrence
45/46
Vocabulaire
SpcificationProcessusActivit
* seq. dactionsContraintesDpendances
ProgrammationTche
* seq. dinstructionsThread(java)
Runnable(java)
ExcutionTraceCalculSupport
- Processeur- Cur- Systme
dexploitation- thread/process
37 / 38 A. Beugnard Reprsenter le temps
Vocabulaire
-
7/25/2019 UML Comportemental Et Concurrence
46/46
Vocabulaire
Flux, (Thread)ConcurrenceNondterminismeEntrelacementObject actif,passif
tat, transitionPartage
Diagramme UMLde squencedtat
dactivitAutomate
interblocageatomicitexclusion
mutuelle
38 / 38 A. Beugnard Reprsenter le temps