Introduction à Linda Béat Hirsbrunner References Nicholas Carriero, David Gelernter : "Linda in context", Communications of ACM, vol. 32 (n° 4, April 1989) p Nicholas Carriero, David Gelernter : "How to write parallel programs: a first course", The MIT Press, Béat Hirsbrunner: "Introduction à Linda", Université de Fribourg, Suisse, Notes de cours, mai Ubiquitous Systems Béat Hirsbrunner (Fribourg) and Peter Kropf (Neuchâtel)) Autumn Semester 2007, Lecture 1, 28 September 2006
2 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?
3 2. Définition de Linda Modèle de mémoire composé Collection de tuples, appelé espace des tuples Ensemble dopérations Rajout, retrait et lecture de tuples Mécanisme dunification qui permet daccéder aux tuples
4 3. Définition dun tuple Suite finie et ordonnée de champs typés Chaque champs contient soit une valeur typée, soit un processus Exemple:
5 4. Définition dun 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 daccueillir une valeur du même type Exemple:
6 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 lespace des tuples est réparti!!!) rdp(a) non bloquant
7 6. Opérations de retrait in(a) idem à rd(a), mais le tuple t qui a été unifié à lanti-tuple a est retiré de lespace des tuples inp(a) idem à rdp(a), mais si un tuple t a été unifié à lanti-tuple a alors ce tuple t est retiré de lespace des tuples
8 7. Opérations de rajout out(t) le tuple t est dabord é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 sexé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 limplémentation
9 8. Modèle dunification Le modèle dunification nest 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 ?!
10 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)); end for; % lecture des nombres premiers n for i := 2 to n do rd("nombre premier", i, ? ok); end for;
11 % 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 end if; end for; return true; end est_premier; Exemple 1. Calcul des nombres premiers (2)
12 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") end if; end for;
13 % définition d'un philosophe procedure philosophe(i:integer); begin loop forever penser; in("ticket"); in("baguette", i); in("baguette", (i+1) div n); manger; out("baguette", i); out("baguette", (i+1) div n); out("ticket"); end loop; end philosophe; Exemple 2. Problème des philosophes (2)
14 The Sleeping Barber Problem (1) Andrew S. Tanenbaum: "Modern Operating Systems"; Prince Hall 2001, chap
15 The Sleeping Barber Problem (2) Solution to sleeping barber problem