Informatique T4 (FSAC1450) Concurrence et Syst - PowerPoint PPT Presentation

About This Presentation
Title:

Informatique T4 (FSAC1450) Concurrence et Syst

Description:

Qu'est-ce qu'on fait si on veut faire un programme qui fait deux activit s ind pendantes? ... Les activit s peuvent communiquer et synchroniser. Communiquer: ... – PowerPoint PPT presentation

Number of Views:22
Avg rating:3.0/5.0
Slides: 46
Provided by: seifha
Category:

less

Transcript and Presenter's Notes

Title: Informatique T4 (FSAC1450) Concurrence et Syst


1
Informatique T4 (FSAC1450)Concurrence
etSystèmes Multi-Agents
  • Peter Van Roy
  • Département dIngénierie Informatique, UCL
  • pvr_at_info.ucl.ac.be

2
Annonce
  • Il y aura en supplément un cours officieux fait
    par deux étudiants/moniteurs
  • Lundi 22 novembre de 16h15 à 18h15 en BA94
  • Une initiative de Damien Saucez et Anh Tuan Tang
    Mac, vous pouvez les remercier!
  • Venez nombreux pour poser toutes les questions
    que vous nosez pas poser à moi!
  • Loccasion ou jamais pour éliminer le flou dans
    vos pensées

3
Consignes pour lexamen
  • Lexamen sera de 2h30, à livre fermé
  • Il y aura une division égale entre théorie et
    pratique
  • Attention à la précision pour la théorie (voir le
    livre!)
  • Attention à la syntaxe pour la pratique!
  • Il y aura une question théorique sur la
    sémantique
  • Où vous devez faire lexécution dun programme
    sans sombrer dans les détails
  • La matière est tout ce qui a été vu dans les
    cours magistraux et les séances pratiques
  • Les notes ne seront pas sur une courbe
  • Jespère vous pouvoir donner tous de bonnes notes

4
Ce quon va voir aujourdhui
  • Un exercice de sémantique
  • La motivation pour la concurrence
  • Lexécution dataflow
  • La manière la plus simple de faire la concurrence
  • Les flots de données
  • Les systèmes multi-agents
  • Producteur/consommateur
  • Pipeline (comme dans Unix!)
  • Réflections sur le cours Informatique T4

5
Parties du livre pour aujourdhui
  • Concurrence, dataflow, nondéterminisme
  • 1.10, 1.11, 1.15
  • Threads, dataflow
  • 4.2.1, 4.2.2, 4.2.3
  • Flots et agents
  • 4.3.1, 4.3.2

6
Exercice de sémantique
7
Lénoncé
  • Quel est létat à la fin de lexécution delocal
    MakeBumper B Y in fun MakeBumper
    CNewCell 0 in fun C_at_C1 _at_C
    end end BMakeBumper YBend
  • Montrez quelques pas dexécution représentatifs

8
Traduction partielleen langage noyau
  • local MakeBumper B Y in proc MakeBumper R
    CNewCell 0 in Rproc K C_at_C1
    K_at_C end end MakeBumper B B Yend

s1
s2
Solution au tableau
9
Létat final
Une cellule
  • ( , mp1, bp2, y1, cx, i0, cy )
  • avec
  • p1(proc R CNewCell 0 in end, )
  • p2(proc K C_at_C1 K_at_C end, C c)

10
Motivation pour la concurrence
11
Le monde est concurrent!
  • Le monde réel est concurrent
  • Il est fait dactivités qui évoluent de façon
    indépendante
  • Le monde informatique est concurrent aussi
  • Système réparti ordinateurs liés par un réseau
  • Une activité concurrente sappelle un ordinateur
  • Système dexploitation dun ordinateur
  • Une activité concurrente sappelle un processus
  • Parfois, plusieurs fenêtres dans une application
  • Typiquement, dans les browsers Web!
  • Une activité concurrente sappelle un thread

12
La programmation concurrente
  • La concurrence est naturelle
  • Deux activités indépendantes sont concurrentes!
  • Quest-ce quon fait si on veut faire un
    programme qui fait deux activités indépendantes?
  • La concurrence doit être soutenu par les langages
    de programmation
  • Un programme concurrent
  • Plusieurs activités exécutent simultanément
  • Les activités peuvent communiquer et synchroniser
  • Communiquer information passe dune activité à
    une autre
  • Synchroniser une activité attend une autre

13
Exécution dataflow
14
Exécution dataflow
  • Il y a trois manières principales de programmer
    avec la concurrence
  • La manière la plus simple sappelle lexécution
    dataflow ou concurrence déclarative
  • Cest ce quon va voir aujourdhui
  • Il y a deux autres manières principales
  • Concurrence par envoi de messages
  • Toujours assez simple
  • Concurrence par état partagé
  • Beaucoup plus compliquée!
  • Malheureusement, cest ce que fait Java -(

15
Une variable libre
  • Une variable libre est créée en mémoire mais
    nest pas encore affectée à une valeur
  • Quest-ce qui se passe si on essaie de faire une
    opération avec une variable libre?local X Y
    in YX1 Browse Yend
  • Quest-ce qui se passe?
  • Rien! Lexécution attend juste avant laddition.

16
Quoi faire avec une variable non-initialisée?
  • Différents langages font des choses différentes
  • En C, laddition continue mais X contient une
    valeur au hasard (contenu de la mémoire)
  • En Java, laddition continue avec 0 comme valeur
    pour X (si X est lattribut dun objet)
  • En Prolog, lexécution sarrête avec une erreur
  • En Java, il y a une détection derreur par le
    compilateur (si X est une variable locale)
  • En Oz, lexécution attend juste avant laddition
    et peut continuer quand X est lié
  • Dans la programmation par contraintes, laddition
    YX1 est ajoutée à lensemble de contraintes
    et lexécution continue! (voir cours
    Programmation par Contraintes)

17
Faire continuer lexécution
  • Linstruction qui attenddeclare Xlocal Y
    in YX1 Browse Yend
  • Si quelquun dautre pourrait lier X, alors
    lexécution pourrait continuer!
  • Mais qui peut le faire?
  • Réponse une autre activité concurrente!
  • Si une autre activité fait X20
  • Alors laddition continuera et on affichera 21!
  • Cela sappelle de lexécution dataflow

18
Lexécution dataflow
YX1
Browse Y
Progrès de lactivité A
(1)
X20
Progrès de lactivité B
  • Lactivité A attend sagement au point (1) juste
    avant laddition
  • Quand lactivité B fait X20, alors lactivité A
    continue
  • Si lactivité B fait X20 avant que lactivité A
    narrive au point (1), alors lactivité A
    nattendra pas du tout

19
Threads
20
Threads
  • Une activité est une séquence dinstructions en
    exécution
  • On appelle cela un thread
  • Chaque thread est indépendant des autres
  • Entre deux threads il ny a pas dordre
  • Le système garantit que chaque thread reçoit une
    partie équitable de la capacité de calcul du
    processeur
  • Deux threads peuvent communiquer sils partagent
    des variables
  • Par exemple, la variable qui correspond à X dans
    lexemple quon vient de voir

21
La création des threads
  • En Oz, la création dun thread est simple
  • On peut exécuter nimporte quelle instruction ltsgt
    dans un nouveau thread thread ltsgt end
  • Par exemple declare X thread Browse X1
    end thread X1 end
  • Quest-ce que fait ce fragment de programme?
  • Il y a plusieurs exécutions possibles, mais elles
    arrivent toutes au même résultat tôt ou tard, on
    affichera 2!

22
Un petit programme (1)
  • Voici un petit programme avec des
    threads declare X0 X1 X2 X3 thread X11X0
    end thread X3X1X2 end Browse X0 X1 X2 X3
  • Le Browser affiche X0 X1 X2 X3
  • Les variables ne sont pas encore affectées
  • Le Browser utilise aussi le dataflow quand une
    variable est affectée, laffichage est mis à jour

23
Un petit programme (2)
  • Voici un petit programme avec des
    threads declare X0 X1 X2 X3 thread X11X0
    end thread X3X1X2 end Browse X0 X1 X2 X3
  • Les deux threads attendent
  • X11X0 attend (X0 nest pas affectée)
  • X3X1X2 attend (X1 et X2 ne sont pas affectées)

24
Un petit programme (3)
  • Voici un petit programme avec des
    threads declare X0 X1 X2 X3 thread X11X0
    end thread X3X1X2 end Browse X0 X1 X2 X3
  • Nous faisons une affectation
  • Faites X04

25
Un petit programme (4)
  • Voici un petit programme avec des
    threads declare X0 X1 X2 X3 thread X11X0
    end thread X3X1X2 end Browse X0 X1 X2 X3
  • Nous faisons une affectation
  • Faites X04
  • Le premier thread peut exécuter, il fait X15
  • Le Browser montre 4 5 X2 X3

26
Un petit programme (5)
  • Voici un petit programme avec des
    threads declare X0 X1 X2 X3 thread X11X0 end
    thread terminé thread X3X1X2 end Browse
    X0 X1 X2 X3
  • Le second thread attend toujours
  • Parce que X2 nest toujours pas affecté

27
Un petit programme (6)
  • Voici un petit programme avec des
    threads declare X0 X1 X2 X3 thread X11X0 end
    thread terminé thread X3X1X2 end Browse
    X0 X1 X2 X3
  • Nous faisons une autre affectation
  • Faites X27
  • Le second thread peut exécuter, il fait X312
  • Le Browser montre 4 5 7 12

28
Le Browser est concurrent
  • Le Browser exécute avec ses propres threads
  • Pour chaque variable libre, il y a un thread dans
    le Browser qui attend sur cette variable
  • Quand la variable est affectée, laffichage est
    mis à jour
  • Attention cela ne marche pas avec les cellules!
  • Le Browser ne regarde pas le contenu dune
    cellule

29
Nondéterminisme (1)
  • Quest-ce que fait le programme suivant? declare
    X thread X1 end thread X2 end
  • Lordre dexécution des deux threads nest pas
    déterminé
  • X sera lié à 1 ou à 2, on ne sait pas à quelle
    valeur
  • Lautre thread aura une erreur
  • On ne peut pas affecter une variable deux fois
  • Cette incertitude sappelle le nondéterminisme

30
Nondéterminisme (2)
  • Quest-ce que fait le programme suivant? declare
    XNewCell 0 thread X1 end thread X2 end
  • Lordre dexécution des deux threads nest pas
    déterminé
  • La cellule X sera affectée à une valeur, puis à
    lautre
  • Quand les deux threads sont terminés, X aura le
    contenu 1 ou 2, on ne sait pas quelle valeur
  • Cette incertitude sappelle le nondéterminisme

31
Nondéterminisme (3)
  • En général, il faut éviter le nondéterminisme
  • Ce nest pas facile en général
  • Cest assez compliqué si on mélange les threads
    et les cellules
  • Malheureusement, dans beaucoup de langages cest
    comme ça -(
  • Mais le modèle déclaratif a un avantage
  • Le modèle déclaratif na pas de nondéterminisme
    (sauf sil y a une erreur comme dans lexemple
    précédent)

32
Flots et agents
33
Flot (stream)
  • Un flot (stream) est une liste dont lextrémité
    est une variable non-liée
  • SabcdS2
  • En général, un flot ne se terminera jamais par
    nil, mais sera toujours étendu avec des éléments
  • Un flot peut servir comme un canal de
    communication entre deux threads
  • Le premier thread ajoute des éléments au flot
  • Le second thread lit le flot

34
Exemple dun flot
  • Voici un programme qui affiche tous les éléments
    dun flotproc Disp S case S of XS2 then
    Browse X Disp S2 endenddeclare Sthread
    Disp S end
  • On ajoute des éléments au flot declare S2 in
    SabcS2 declare S3 in S2defS3
  • Essayez par vous-même!

35
Producteur/consommateur (1)
  • Un producteur génère un flot de données fun
    Prod N Delay 1000 NProd N1 end
  • Le Delay 1000 ralentit lexécution pour quon
    puisse voir!
  • Un consommateur lit le flot et fait quelque chose
    (comme la procédure Disp)
  • Un programme producteur/consommateur declare
    S thread SProd 1 end thread Disp S end

36
Producteur/consommateur (2)
Agent P
Agent C
S1234
thread SProd 1 end
thread Disp S end
  • Chaque cercle est une activité concurrente avec
    un (ou plusieurs) canaux de communication
  • On appelle ça aussi un agent
  • Les agents communiquent par le flot S
  • Le premier thread crée le flot, le second le lit

37
Pipeline (1)
  • On peut ajouter dautres agents entre P et C
  • Voici un transformateur qui modifie le flot fun
    Trans S case S of XS2 then XXTrans S2
    end end
  • Voici un programme avec trois agents declare S1
    S2 thread S1Prod 1 end thread S2Trans S1
    end thread Disp S2 end

38
Pipeline (2)
Agent P
Agent C
Agent T
S1123
S2149
thread S1Prod 1 end
thread Disp S2 end
thread S2Trans S1 end
  • Nous avons maintenant créé trois agents
  • Le producteur crée le flot S1
  • Le transformateur lit S1 et crée S2
  • Le consommateur lit S2
  • La technique du pipeline est très utile!
  • Par exemple, il est omniprésent en Unix

39
Résumé
40
Résumé
  • Concurrence
  • Activités qui évoluent de façon indépendante
  • Exécution dataflow avec variables libres
  • Nondéterminisme
  • Thread
  • Pour modéliser une activité dans le langage
  • Une séquence dinstructions en exécution
  • Flot
  • Une liste dont lextrémité est une variable libre
  • Un canal de communication entre agents
  • Agent
  • Un thread avec un ou plusieurs canaux de
    communication
  • Programme multi-agent producteur/consommateur,
    pipeline

41
Réflectionssur Informatique T4
42
Le monde selon InfoT4
  • Dans ce cours nous avons vu quelques des concepts
    les plus importants dans la programmation
  • Nous avons vu quelques paradigmes de
    programmation
  • Programmation déclarative (fonctionnelle stricte)
  • Programmation avec état
  • Programmation orienté-objet
  • Programmation concurrente avec dataflow
  • Programmation multi-agent
  • Il y a beaucoup dautres paradigmes intéressants

43
Paradigmes de programmation
Programmation déclarative Programmation
fonctionnelle stricte, Scheme, ML Programmation
logique déterministe concurrence
synchronisation selon besoin Concurrence
dataflow Progr. fonctionnelle paresseuse,
Haskell choix nondéterministe Progr.
logique concurrente traitement
dexceptions état explicite
Programmation orienté-objet, Java, C
recherche Pr. logique nondéterministe,
Prolog
OOP concurrente (envoi de messages,
Erlang, E) (état partagé, Java) espaces de
calcul Programmation par contraintes
  • Ce schéma donne un résumé des différents
    paradigmes avec les relations entre eux
  • Chaque paradigme a ses avantages et désavantages
    et un domaine où il est le meilleur


44
La coexistence des paradigmes
  • Chaque paradigme a sa place
  • Avec plus de concepts on peut exprimer plus, mais
    le raisonnement devient plus compliqué
  • Avec moins de concepts on peut satisfaire des
    conditions dutilisation plus stricte
  • Plus nest pas mieux (ou pire) que moins, mais
    simplement différent
  • Dans vos programmes, je vous conseille de bien
    réfléchir et de choisir le paradigme approprié

45
  • Fin du cours
  • Jespère que ce survol rapide
  • de la programmation vous a plu
  • Bonne chance pour lexamen!
Write a Comment
User Comments (0)
About PowerShow.com