150 likes | 284 Views
Introduction à Linda. Béat Hirsbrunner. References Nicholas Carriero, David Gelernter : "Linda in context", Communications of ACM, vol. 32 (n° 4, April 1989) p. 444-458. Nicholas Carriero, David Gelernter : "How to write parallel programs: a first course", The MIT Press, 1990.
E N D
Introduction à Linda Béat Hirsbrunner References Nicholas Carriero, David Gelernter : "Linda in context", Communications of ACM, vol. 32 (n° 4, April 1989) p. 444-458. Nicholas Carriero, David Gelernter : "How to write parallel programs: a first course", The MIT Press, 1990. Béat Hirsbrunner: "Introduction à Linda", Université de Fribourg, Suisse, Notes de cours, mai 1991. Ubiquitous SystemsBéat Hirsbrunner (Fribourg) and Peter Kropf (Neuchâtel)) Autumn Semester 2007, Lecture 1, 28 September 2006
1. Remarque préliminaire • Langage de programmation vs Langage de coordination • Modèle de calcul vs Modèle de communication • Indépendance totale “progr.” - “coord.” possible?
2. Définition de Linda • Modèle de mémoire composé • Collection de tuples, appelé espace des tuples • Ensemble d’opérations • Rajout, retrait et lecture de tuples • Mécanisme d’unification qui permet d’accéder aux tuples
3. Définition d’un tuple • Suite finie et ordonnée de champs typés • Chaque champs contient soit une valeur typée, soit un processus • Exemple: • <“un tuple de données”, 3.14) > • <“un type de processus”, cos(3.14)>
4. Définition d’un anti-tuple • Suite finie et ordonnées de champs typés • Chaque champs contient soit une valeur typée, soit une place libre typée susceptible d’accueillir une valeur du même type • Exemple: • <“un anti-tuple”, ?x>
5. Opérations de lecture • rd(a) • bloquant • équité garantie • n tuples candidats, m processus en attente • problème: définition pécise et non ambiguë de la notion d’équité (notamment lorsque l’espace des tuples est réparti!!!) • rdp(a) • non bloquant
6. Opérations de retrait • in(a) • idem à rd(a), mais le tuple t qui a été unifié à l’anti-tuple a est retiré de l’espace des tuples • inp(a) • idem à rdp(a), mais si un tuple t a été unifié à l’anti-tuple a alors ce tuple t est retiré de l’espace des tuples
7. Opérations de rajout • out(t) • le tuple t est d’abord évalué, puis rajouté à Ts, et finalement le processus appelant reprend son exécution • eval(t) • un processus p permettant d’évaluer le tuple t est créé • tous les processus s’exécute en parallèle • si le tuple t contient n champs de processus, le choix de créé 1 ou n+1 processus est laissé au choix de l’implémentation
8. Modèle d’unification • Le modèle d’unification n’est pas précisé au niveau du modèle Linda !!! • Ce modèle doit être définie pour chaque réalisation de Linda dans un langage de programmation donné • A méditer : • programmation = calcul + communication ?!
Exemple 1. Calcul des nombres premiers (1) % création de n-1 tuples de processus, % un par nombre entier ≤ n for i := 2 to n do eval("nombre premier", i, est_premier(i)); endfor; % lecture des nombres premiers ≤ n for i := 2 to n do rd("nombre premier", i, ? ok); endfor;
Exemple 1. Calcul des nombres premiers(2) % définition de la procédure est_premier procedure est_premier(i:integer) : boolean; var j: integer; begin for j := 2 to sqrt(i) do rd("nombre premier", j, ? ok); if ok and (i mod j = 0) then return false endif; endfor; return true; end est_premier;
Exemple 2. Problème des philosophes (1) % création de n baguettes, n philosophes % et n-1 tickets for i := 1 to n do out("baguette", i); eval(philosophe(i)); if i < n then out("ticket") endif; endfor;
Exemple 2. Problème des philosophes (2) % définition d'un philosophe procedure philosophe(i:integer); begin loopforever penser; in("ticket"); in("baguette", i); in("baguette", (i+1) div n); manger; out("baguette", i); out("baguette", (i+1) div n); out("ticket"); endloop; end philosophe;
The Sleeping Barber Problem (1) Andrew S. Tanenbaum: "Modern Operating Systems"; Prince Hall 2001, chap. 2.4.3
The Sleeping Barber Problem (2) Solution to sleeping barber problem