Home
Thème Vers un Nouveau Langage Mobile
Contents
1. Caml est donc n dans les ann es 80 dans les laboratoires de INRIA Institut National de Recherche en Informatique et en Automatique en France Il f t d abord con u par l quipe Formel Form et poursuit actuellement son d veloppement par l quipe Cristal Cris La premi re v ritable impl mentation de Caml arriva en 1987 En 1991 Xavier Leroy actuellement Directeur de recherche l INRIA et que j ai contact pour discuter du projet de cette th se cr a une nouvelle impl mentation de Caml bas sur un interpr teur de bytecode crit en C et connue maintenant sous le nom de Caml Light Lero97 Elle f t aussi dot e d un bon syst me d allocation m moire Le terme Light l ger est pour version hautement portable avec un interpr teur l ger et efficace ce qui a permis une large diffusion de cette version dans les domaines de l enseignement et de la recherche C est l une des raisons principales justifi e par la suite de notre choix pour cette version l g re de Caml c est dire Caml Light Xavier Leroy une grande figure Il INRIA ne s arr ta pas l et ajouta Caml Light un syst me de modules puissant et partir de 1996 tous ses travaux avec ses collaborateurs ont abouti au langage Ocaml Objective Caml Lero07 Le O pour objective de programmation orient objet par l adjonction d une couche objet au langage Caml Ce langage gagne r guli rement en popularit et
2. Je remercie M D Saidouni ma tre de conf rences l universit Mentouri de Constantine pour avoir accept la lourde charge d tre aussi examinateur Mes remerciements vont naturellement l ensemble des gens du centre universitaire de Khenchela que j ai c toy et qui m ont encourag En particulier je voudrais remercier M B Houha et M N Benalicherif qui n ont cess de m encourager Je remercie finalement mes amis et tous les coll gues du d partement d informatique et de l institut SET pour leur soutien et leurs encouragements en particulier Hakim Sahour Je ne saurais oublier l aide de mon fils Djaber de 14 ans pour sa maintenance impeccable de mon PC aucun virus n a eu la chance de se trouver quelque part dans mon disque Merci Djaber Je remercie aussi mes anciens amis et mes anciens coll gues qui se regroupent souvent dans la boutique de Saihi Et puis je remercie tous ceux que je n aurais bien s r pas d oublier iv Je d die cette Th se gt A la m moire de ma m re qui ma quitt durant la pr paration de cette th se et qui me manque norm ment gt A mow p re qui wa toujours soutenu gt A Hayet mon pouse pour mavoir support gt A mes enfants Raouf Faiza Rayane et Djaber Table des Mati res Introduction g n rale Le paradigme de la mobilit Objectifs de la th se Structure de la th se Chapitre 1 Le langage Caml Light 1 1
3. 4 2 3 Evaluation a distance REV pour Remote EValuation L valuation ou l ex cution distance Stam90 est une g n ralisation du RPC en plus des donn es d entr es fournies le code est aussi transmis Il y a donc transfert de code savoir faire d un site source initiateur un autre site destination o ce code sera ex cut Le site de destination d tient les ressources n cessaires l ex cution du code g n ralement un pouvoir de calcul et non des services sp cifiques L valuation distance peut porter sur une proc dure ou tout un programme On parle de migration de code Il y a donc un certain degr de mobilit Exemples de REV Vv rsh remote shell commande UNIX permettant d ex cuter un script code que fournit le site source sur une machine distante sp cifi e en argument v Impression d un document Postscript Le code transmettre est le document lui m me crit dans le langage Postscript Le site de destination comprend l interpr teur du Postscript situ dans l imprimante elle m me et l imprimante pour imprimer v Un site source d sire transf rer une application un filtre vers un site distant disposant d une base de donn es pour acc der cette base de donn es et compresser des donn es locales Ainsi on vite d engager l administrateur de cette base de donn es dans cette t che Source Destination Ex cution du code 56 Chapitre
4. Caml Light dispose d un mod le imp ratif d entr es sorties Une op ration d entr e sortie provoque donc un effet de bord Les entr es sorties sont effectu es sur des canaux avec comme type in_channel et out_channel std_in std_out et std_err sont les canaux standards pour les entr es les sorties et les sorties erreurs connect s aux clavier et cran 1 10 Autres traits de Caml Light 1 10 1 Exceptions Caml Light poss de un m canisme de traitement des exceptions pour traiter les situations exceptionnelles ou des situations qui normalement ne devraient pas arriver Quelques exceptions sont pr d finies comme Failure d autres peuvent tre d finies par la construction exception Elles sont soulev es par la fonction raise et on les traite avec la construction syntaxique try with Dans le bloc with on peut filtrer les diff rentes exceptions qui ont pu tre soulev es 16 Chapitrel Le langage Caml Light 1 10 2 Strat gie d valuation Caml Light est un langage strict par opposition aux langages paresseux Cependant la pleine fonctionnalit permet de cr er des suspensions et donc de coder l valuation paresseuse de donn es potentiellement infinies 1 10 3 Gestion m moire Pour des raisons de s ret Caml light offre une gestion automatique de la m moire l allocation et la lib ration des structures de donn es est implicite Il n y a pas de primitives de manipulation explicite de la
5. e interruption de l ex cution de l unit d ex cution sur le site source 59 Chapitre4 Vers un Caml Light mobile e transfert du code et de l tat des donn es du site source vers le site de destination e arriv e l application mobile reprend son ex cution depuis le d but tout en poss dant les valeurs mises jours des donn es de l tat des donn es c est dire que les donn es sont conserv es et non r initialis es 4 3 2 2 Mobilit forte Lorsqu il y a migration du code de l unit d ex cution de l tat des donn es etde l tat d ex cution Simulation de la migration e interruption de l ex cution de l unit d ex cution sur le site source e transfert du code de l tat des donn es et de l tat d ex cution du site source vers le site de destination e arriv e l application mobile reprend son ex cution au point o elle a t interrompue sur le site de d part 4 3 3 R sum des diff rents mod les mod les classiques et code mobile Voici une sch matisation qui nous renseigne sur le degr de mobilit de chacun des paradigmes voqu s pr c demment gt Code Mobile gt Mobilit nulle Mobilit Mobilit faible Mobilit forte Echange de REV Code Code message COD donn es donn es tat d ex cution Degr s de mobilit 60 Chapitre4 Vers un Caml Light mobile L objectif
6. Melvin E Conway Proposal for an UNCOL Communications of the ACM 1 3 5 1958 74 Bibliographie Cris Cugo98 Emme01 Erla03 Fiel06 Form Four96 Fugg98 Geha92 Projet Cristal Arr t en 2005 Projet Gallium lui succ de INRIA Analyzing mobile code Languages Gianpaolo Cugola Carlo Ghezzi Gian Pietro Picco and Giovanni Vigna Springer Berlin Heidelberg ISSN 0302 9743 Print 1611 3349 Online Volume 1222 1997 1997 W Emmerich N Kaveh F2 Component technologies Java beans COM CORBA RMI EJB and the CORBA component model In Volker Gruhn editor Proceedings of the Joint 8th European Software Engeneering Conference and 9th ACM SIGSOFT Symposium on the Foundation of Software Engeneering ESEC FSE 01 volume 26 5 of SOFTWARE ENGINEERING NOTES pages 311 312 ACM Press 2001 ERLANG http www erlang org page May 2003 Zara Field P W Trinder and Andr Rauber Du Bois A comparative Evaluation of Three Mobile Languages Proceedings of the 3 International Conference on Mobile Technology applications and systems Bangkok Thailand 2006 Projet FORMEL INRIA C Fournet G Gonthier J J L vy L Maranget and D R my A calculus of mobile agents In Proceedings of the 7th International Conference on Concurrency Theory CONCUR 96 pages 406 421 Springer Verlag 1996 A Fuggetta G Picco and G Vigna Understanding Code Mobility IEEE Trans
7. extension concurrente de Caml Light nous proposons un ensemble de primitives avec une s mantique tr s simple Le support pour la cr ation dynamique et la communication asynchrone entre processus sont les deux plus importantes extensions du langage Caml Light Ecrire des programmes distribu s dans ce langage tendu est faite par l adaptation des fonctions utilis es pour la concurrence L utilisation des constructions ajout es a Caml Light est illustr e par quelques exemples iii Remerciements Je suis tr s reconnaissant envers Monsieur Allaoua Chaoui maitre de conf rences l universit Mentouri de Constantine pour avoir propos ce th me et avoir accept de diriger cette recherche et aussi pour sa disponibilit et ses nombreux conseils Je suis tr s profond ment touch par la confiance qu il m a accord e tout au long de ce travail J exprime ma profonde gratitude M M Benmohammed Professeur l universit Mentouri de Constantine pour l honneur qu il me fait de pr sider mon jury de th se Je suis particuli rement reconnaissant envers M B Belattar ma tre de conf rences l universit de Batna et un de mes anciens professeurs l universit de Constantine pour avoir accept d tre parmi les jur s de cette th se Je tiens remercier tout particuli rement M O Kazar ma tre de conf rences l universit de Biskra d tre parmi les jur s de cette th se
8. Pr sentation compacte 1 2 Une petite histoire de Caml 1 3 Types de donn es 1 4 Valeurs et d clarations 1 5 Fonctions 1 6 Filtrage de motifs 1 7 Les programmes 1 8 Les modules 1 9 Aspects imp ratifs dans Caml Light 1 9 1 R f rences 1 9 2 Les structures de contr le 1 9 3 Les entr es sorties 1 10 Autres traits de Caml Light 1 10 1 Exceptions 1 10 2 Strat gie valuation 1 10 3 Gestion m moire 1 10 4 Polymorphisme 1 11 Un petit exemple en Caml Light 1 12 Conclusion Chapitre 2 Caml Light concurrent 2 1 Introduction 2 2 Processus et Thread 2 3 Le mod le de concurrence propos Vil O A N j 10 11 11 13 14 15 15 15 15 16 16 16 17 17 17 17 18 20 21 22 24 2 3 1 Architecture des threads 2 4 Cr ation de processus 2 5 Communication interprocessus 2 5 1 La primitive send_messag 2 5 2 La primitive receive _messag 2 6 Exemples en Caml Light tendu 2 6 1 Une calculatrice de bureau concurrente 2 6 2 Un automate tats finis 2 7 ERLANG 2 7 1 Types de donn es 2 7 2 Les fonctions et les modules 2 7 3 Le filtrage 2 7 4 La concurrence dans ERLANG 2 7 5 Conclusion sur ERLANG 2 8 Conclusion Chapitre 3 Caml Light distribu 3 1 D finitions 3 2 Int r ts des syst mes distribu s 3 3 Le mod le de distribution 3 3 1 N uds et connexions 3 3 2 Authentification 3 3 3 Les primitives de distribution 3 4 Un exemple de serveurs de noms 3 5 Conclusion Chapitre 4 V
9. de la bo te messages du processus qui ex cute la primitive receive message Cette proc dure est r p t e jusqu ce qu une correspondance soit trouv e ou jusqu ce que tous les messages dans la bo te messages soient examin s Si aucun des messages dans la bo te messages ne correspond le processus qui value receive message est suspendu jusqu ce qu un message soit enregistr dans la bo te messages Tous les messages sauvegard s pour traitement ult rieur sont de nouveau remis dans le m me ordre dans la bo te messages quand un nouveau message arrive et sa correspondance r ussit Nous avons choisi la m me syntaxe de la constrution match du langage Caml Light pour la primitive receive message Afin de recevoir des messages uniquement d un metteur particulier avec PId comme identifiant nous pouvons faire receive message PId pattern gt On peut aussi ajouter un d lai temps exprim en millisecondes comme en ERLANG la primitive receive message afin d viter un processus d attendre un message qui n arrivera jamais La syntaxe est 32 Chapitre2 Caml Light concurrent receive message with pattern expression pattern gt expressionn after time gt expression end 2 6 Exemples en Caml Light tendu 2 6 1 Une calculatrice de bureau concurrente Pour illustrer l utilisation des primitives de concurrence propos es voici un exemple plus complet d
10. id al est la mobilit forte 4 3 4 Quelques probl mes du code mobile La mobilit se heurte de nombreux probl mes dont beaucoup restent ouverts En plus de l h t rog n it du mat riel et du logiciel la capture et la restauration du contexte d ex cution dans le cas de la mobilit forte est un point critique Un frein majeur aussi une r elle utilisation du code mobile est celui de la s curit Le fait qu un code mobile est un code tranger et peut tre malicieux alors comment prot ger les ressources et les donn es des machines h tes contre des attaques par ce dernier Le probl me devient encore plus complexe lorsqu une machine h te peut tre son tour malveillante intentionnelle ou non contre un code mobile Des solutions ces diff rents probl mes ont t envisag es mais sont loin de satisfaire 4 4 Langages mobiles Les langages mobiles repr sentent une nouvelle tendance dans les langages de programmation pour les syst mes distribu s Un langage de programmation mobile est un langage usage g n ral et qui permet le d veloppement d applications mobiles Il doit tre capable d exprimer des codes mobiles d exprimer leur transmission leur r ception et leur ex cution ult rieure Son impl mentation doit g rer l h t rog n it architecturale entre les machines communicantes En plus des constructions classiques que l on retrouve dans un langage de programma
11. la fonction successeur comme suit accroissement _un successeur qui produira la valeur 1 gt De m me une fonction peut retourner un r sultat de type fonctionnel gt Une fonction peut aussi avoir un argument de type fonctionnel et retourner un r sultat de type fonctionnel La fonction bigger qui prend comme argument une fonction f et retourne une autre fonction comme valeur let bigger f x y fx y 12 Chapitrel Le langage Caml Light L application d une fonction s crit tout simplement f x L application partielle d une fonction est l application d une fonction quelques uns et non tous ses arguments 1 6 Filtrage de motifs Le filtrage pattern matching de Caml Light est un moyen de tester les cas de la structure d un objet et de choisir des actions a effectuer selon chaque cas Le filtrage est appliqu aux valeurs Il est utilis pour reconna tre la forme d une valeur et on utilise souvent la construction match suivante match expr with motifl gt exprl motif2 gt expr2 motifn gt exprn L expression expr est confront e matching s quentiellement aux motifs Si expr satisfait le motif alors l expression correspondante est valu e Toute expression satisfait le motif _ qui est le motif universel tous les autres cas Le filtrage est aussi souvent utilis pour d finir une fonction par cas comme dans let rec fib function 0 gt 1 g
12. m moire comme new ou free ou dispose qu on retrouve dans d autres langages comme Pascal 1 10 4 Polymorphisme Caml Light est dot d un typage puissant polymorphe certains types peuvent rester ind termin s repr sentant alors n importe quel type type a list Ainsi les fonctions qui sont d usage g n ral s appliquent n importe quel type de donn es sans exception par exemple les routines de tri s appliquent tout type de tableaux Ce qui aide la r utilisabilit du code 1 11 Un petit exemple en Caml Light racines2nd ml resolution d une equation du second degre let liste des racines a b c if a 0 then if b 0 then else c b else let delta b 2 4 a Cin if delta lt 0 then else if delta 0 then b 2 a else b sqrt delta 2 aj b sqrt delta 2 a 17 Chapitrel Le langage Caml Light liste_des_racines a b c renvoie la liste des racines du polynome ax bx c Le r sultat de la fonction liste _des_racines est une liste 1 12 Conclusion Voici les caract ristiques essentielles du langage Caml light et qui nous ont guid le choisir comme candidat notre extension langage assez r pandu et devient de plus en plus populaire que ce soit dans l enseignement ou dans les entreprises industrielles Langage fonctionnel en plus de la compacit d
13. ne re oit pas directement un message partir d un processus mais tente de lire et de supprimer un message dans la bo te messages Dans une certaine mesure l metteur et le r cepteur du message ne se synchronisent pas c est la nature m me de l change asynchrone de messages Les primitives send_message et receive_message avec la m me s mantique que dans ERLANG fonctionnent comme suit 2 5 1 La Primitive send_message La primitive send_message poss de la signature value send_message Process_Id gt a gt a est utilis e pour envoyer des messages et a la syntaxe et la s mantique suivantes send_message PId Message Le message Message est envoy au processus PId Plus exactement la primitive send_message value ses arguments PId et Message Message est plac dans la bo te messages du processus avec identificateur PId et renvoie Message comme valeur L metteur ne m morise donc pas les messages Un processus 30 Chapitre2 Caml Light concurrent qui d sire envoyer un message n est pas suspendu jusqu ce qu un processus d sirant recevoir ce message soit trouv et vice versa On suppose que les messages arrivent toujours au r cepteur en d autres termes on suppose que nous avons des communications fiables ou s res Les messages perdus sont hors port e de cette tude on peut consulter Raja02 sur ce sujet Afin de recevoir les messages d un processus sp cif
14. pour la programmation s quentielle mais un domaine non trait dans la d finition du langage c est qu aucun m canisme n est pr vu pour la concurrence C est dans ce contexte que nous allons agir Un concept fondamental de la programmation concurrente est la notion de thread 2 2 Processus et Thread Pour cr er un nouveau processus un syst me d exploitation moderne doit pouvoir lancer l ex cution d un programme Un processus est donc un programme en cours d ex cution Chaque processus poss de au moins un thread qui s ex cute en lui Les syst mes d exploitation modernes permettent plusieurs threads de s ex cuter de fa on concurrente dans un seul processus C est le cas par exemple du langage Java lorsque la machine virtuelle est lanc e par le syst me d exploitation un nouveau processus est cr e et dans ce processus plusieurs threads peuvent aussi tre cr s On parle donc de programmation concurrente ou multithreading Un des grands atouts du langage Java est qu il est dot d un support int gr pour l criture de programmes concurrents Ses concepteurs d origine ont bien estim l importance et la valeur du multithreading en d cidant d inclure directement le support des threads dans le langage m me 22 Chapitre2 Caml Light concurrent M me si un syst me d exploitation ne supporte pas le concept des threads la machine virtuelle du langage Java saura simul
15. s par ce code mobile 53 Chapitre4 Vers un Caml Light mobile Durant cette mobilit ce code mobile peut accumuler des r sultats sur un quelconque site h te et peut communiquer avec d autres codes mobiles Une communication avec le site initial n est pas n cessaire 4 1 2 Motivations Voici quelques applications qui peuvent exploiter ce concept de mobilit gt Diminution du trafic r seau data access locality o d placer l application vers le site qui h berge les informations donn es ou services fr quemment acc d es gt Equilibrage de charge load balancing o pour des besoins m moire ou processeur les applications migrent a partir des n uds les plus charg s vers des n uds moins charg s gt Tol rance aux pannes fault tolerance o En cas de panne d une machine une application peut migrer vers un autre site pour tre reprise partir de sa derni re sauvegarde gt Administration syst me improved system administration o Faire migrer les applications des sites r initialiser ou rendre indisponibles vers d autres gt Reconfigurer une application dynamiquement o ajouter une nouvelle fonctionnalit une quelconque application de mani re dynamique gt Recherche d information r partie moteur de recherche gt Commerce lectronique 4 2 Les diff rents mod les classiques d ex cution distribu e Les paradigmes de programmat
16. 2 cle noeud2 cookiel cle gt serveur_noms__lancer Pld cle is Sur la machine hotel distante on lance l ex cution d une autre instance de la machine virtuelle un client Cette instance aura pour nom noeud Sous le contr le de noeud on lance deux requ tes adress es au serveur qui tourne sur hote2 en envoyant deux messages distants hotel cle noeud cookiel cle gt rsend_message self noeud2 hote2 serveur_noms enregistrer nom1 valeur1 true cle gt rsend_message self noeud2 hote2 serveur_noms rechercher nom1 valeur cle gt cookiel repr sente le nom d un fichier contenant la valeur d un m me cookie utilis par noeud et noeud2 pour former un cluster Avec le syst me UNIX on peut mettre cette valeur dans HOME camllight cookiel 3 5 Conclusion Le mod le concurrence a t tendue ais ment vue la simplicit des primitives et leur adaptation un environnement distant afin de supporter la distribution c est 50 Chapitre3 Caml Light distribu dire le fait de permettre plusieurs programmes Caml Light de communiquer uniquement par envoi asynchrone de messages dans un r seau local ou un r seau de r seaux comme Internet La difficult peut tre interviendra au niveau de l impl mentation des n uds 51 Chapitre4 Vers un Caml Light mobile Chapitre 4 Vers un Caml Light mobile 52 Chapitre4 Vers un Caml Light
17. 4 Vers un Caml Light mobile 4 2 4 Code la demande COD Code On Demand C est la situation sym trique REV encore une g n ralisation de RPC Un acteur A sur un site de destination initiateur dispose de ressources mais pas de code alors qu un autre acteur B sur un site source d tient le code Le code est alors demand B pour tre amen localement migr ou t l charg et ex cut sur le site de destination c est dire le site de l acteur A Exemple les Applets Java Applet Java Site Chargement AU Communication Acteur A Comme dans le cas de REV on parle aussi de migration de code pour COD mais dans un autre sens Il y a donc quand m me un certain degr de mobilit 4 3 Le mod le du code mobile 4 3 1 D finition du code mobile d finition plus concr te Le code mobile est surtout apparu non pas pour remplacer les autres mod les d ex cution distribu e qui ont quand m me leur domaine d application mais pour les compl ter d autres fins 57 Chapitre4 Vers un Caml Light mobile Un code mobile ou agent mobile est vue comme une unit d ex cution programme en cours d ex cution Un processus UNIX e Un Thread dans un environnement multithread avec l adjectif mobile qui indique que cette unit d ex cution s ex cutant sur un site source peut se d placer vers un autre site machine distante o l ex cution reprendra ou continue
18. Les primitives propos es pour la concurrence et la distribution sont de haut niveau m moire distribu et d une s mantique tr s simple mais tr s claires et pr sentent une structure naturelle au programmeur surtout au programmeur non trop impliqu dans une programmation relative de bas niveau s maphores verrous Nous avons t influenc en particulier par le langage ERLANG et l change de message asynchrone Nous nous sommes aussi efforc s de montrer que le langage Caml light dispose de plusieurs des propri t s indispensables et d sirables pour la mobilit Le fruit de notre apport a t aussi la publication de cinq papiers Mera08a Mera08b Mera09a Mera09b et Mera09c qui d crivent l extension de Caml Light pour la concurrence la distribution et une vision pour la mobilit Mais la faisabilit et l efficacit de notre proposition ne se fera qu travers une impl mentation r elle et une comparaison avec d autres langages mobiles Il reste donc des choses faire 71 Conclusion Certes nous avons acquis une certaine exp rience et une vue assez large de ce th me de mobilit mais nos efforts ont t aussi parpill s par la diversit des concepts de concurrence de distribution et de mobilit Dans l id e de se pencher sur des points tr s pr cis pour concentrer le travail et tre plus efficace nous envisageons de poursuivre nos travaux dans une q
19. R publique Alg rienne D mocratique et Populaire Minist re de l Enseignement Sup rieur et de la Recherche Scientifique Universit Mentouri Constantine Facult des Sciences de l Ing nieur D partement d Informatique THESE Pr sent e par Elkamel MERAH Pour obtenir le titre de Docteur en Sciences Sp cialit Informatique Theme Vers un Nouveau Langage Mobile Devant le Jury compos de Pr Mohamed BENMOHAMMED Pr sident Universit de Constantine Dr Allaoua CHAOUI Rapporteur Universit de Constantine Dr Brahim BELATTAR Examinateur Universit de Batna Dr Okba KAZAR Examinateur Universit de Biskra Dr Djameleddine SAIDOUNI Examinateur Universit de Constantine Soutenue le 06 Juillet 2009 Bain AS ja Ana y dat gi zl js dati Jr aise Caml Light al laid yids AIL ji oda ic jgall g ndi 68 yo dial dae pall clei gas NS Labs po case slats Ia Basls ge y al AM yall ae al Laf da ge slats laa Ae j gall Cl Sia ia ose ehi Lund cs A oles Ge DSI Ole Le Jul g Jlsy Cus ERLANG 4 Jlall ga LS AADU ul Bose Lisl fie Qs Y dilu ll IS Tl gall Ge de gene epi Caml Light J tl ji YL 5 geal pall Si pall Lay Ales y dus ire J alayi sal Ge Ole mel all Gap Le Aie ual All ote de jga al y lac ol Caml Light 42 Qi 8 ilaria JI gall aS Gs yb Ge jeu Staal AY Gars ae de J sall oda Jaial Towards A New Mobile Language Elkamel MERAH Abstract In this thesis we propose an extension of Caml L
20. a Dans le chapitre 4 et le dernier nous discutons la mobilit et le support qui manque a Caml Light pour se rapprocher de la mobilit Mera09b Nous terminons bien s r par une conclusion qui r sume l apport essentiel de nos travaux Cette conclusion ouvre galement de nouveaux l ments de r flexion et quelques perspectives de recherche Chapitrel Le langage Caml Light Chapitre 1 Le Langage Caml Light Chapitrel Le langage Caml Light Ce chapitre est consacr au langage Caml plus exactement au langage Caml Light langage choisi pour une extension vers la mobilit Bien s r il ne s agit pas d un manuel d utilisation du langage mais plut t d une petite introduction aux concepts fondamentaux du langage Caml Light qui quand m me permet de se faire une id e des traits saillants de ce langage A la fin de ce chapitre on essayera de donner une justification du choix de Caml Light comme candidat notre extension 1 1 Pr sentation compacte Le langage Caml Light a h rit d une dizaine d ann es de la recherche dans la th orie des types la conception de langages et l impl mentation de langages fonctionnels Il est utilis dans l ducation dans l apprentissage de la programmation dans l industrie et dans le monde de la recherche pour le d veloppement de projets acad miques Notre projet se situe aussi dans ce contexte Caml Light est un langage de programmatio
21. a primitive spawn_process avec la signature value spawn_process a gt b gt a int prend deux arguments le premier argument est une fonction qui est ex cut e dans le nouveau thread et le second argument est l argument de la fonction Les arguments de la fonction doivent tre pass s en tant que structure de donn es spawn_process cr e un processus concurrent qui effectue ou value la fonction func avec son argument arg contenue dans le module mod spawn_process est asym trique si un processus ex cute un spawn_process le processus fils correspondant est ex cut de mani re concurrente avec le processus p re spawn process retourne imm diatement un Pld Identificateur de Processus sans attendre la fin de l valuation de la fonction func Pld est utilis pour communiquer avec le processus cr et il est connu uniquement par celui qui l a cr Un processus se termine une fois sa fonction valu e et ne renvoie aucun r sultat Pour le moment le Pld est de type entier et il peut tre manipul compar d autres Plds stock dans une liste ou envoy comme message a d autres processus La primitive spawn_process doit tre pr c d e par une directive Caml Light open mod sila fonction func est d finie dans un module s par Dans ce cas le module mod peut tre omis dans la primitive spawn_process 28 Chapitre2 Caml Light concurrent Voici un exemple fichier proc
22. actions on Software Engineering 24 5 342 361 May 1998 N H Gehanl W D Roome Implementing Concurrent C Software Practice And Experience Vol 22 3 265 285 March 1992 75 Bibliographie Gilm97 Gray95 Grun07 Huch99 Ichb83 INRIA Jone96 Kirl01 Knab96 S Gilmore Programming in Standard ML 97 A tutorial introduction Technical Report ECS LFCS 97 364 Laboratory for Foundations of Computer Science 1997 R S Gray Agent Tcl A Transportable Agent System In Proceedings of the CIKM 95 Workshop on Intelligent Information Agents 1995 B Grundmann eConcurrency Concurrent and Distributed Programming in OCaml http osp janestreet com files econcurrency pdf August 2007 F Huch Erlang Style Distributed Haskell In Draft Proceedings of the 11 International Workshop on Implementation of functional Languages September 7 10 1990 J Ichbiah ed Ada Programming Language ANSI MIL STD 1815A Ada Joint Program Office Department of Defense Washington DC 1983 Institut National de Recherche en Informatique et en Automatique http caml inria fr download fr html S P Jones A Gordon S Finne Concurrent Haskell In Conference Record of POPL 96 The 23 ACM SIGPLAN SIGACT Symposium on Principles of Programming Languages pages 295 308 St Petersbourg Beach Florida 21 24 January 1996 Zeliha Dilsun Kirli Mobile Computation with Fu
23. age fort ou statique sont d ja bien connus dans les langages conventionnels Ils prennent encore plus de l importance avec la programmation du code mobile 4 4 2 2 Gestion automatique de la m moire Avec une gestion automatique de la m moire le probl me des pointeurs pendants peut tre limin Les pertes de m moire sont aussi r duites 4 4 2 3 S curit Il est n cessaire d assurer que le code mobile s ex cutant sur une machine cible n endommage pas les ressources syst mes 63 Chapitre4 Vers un Caml Light mobile 4 4 3 Quelques langages mobiles Il ne s agit pas bien s r d une tude comparative de langages mobiles mais juste de citer quelques tentatives d extensions de langages existants vers la mobilit On peut trouver une telle tude par exemple portant sur trois langages dans Fiel06 A notre connaissance 1l n y a pas eu de travaux sur la mobilit dans le langage Caml et qui se rapportent enti rement l change asynchrone de messages l exception d une tentative tr s r cente de Grun07 mais qui est sans suite Il existe d autres extensions de langages fonctionnels pour supporter la concurrence la distribution et la mobilit ERLANG JoCaml et Distributed Haskell sont des exemples ERLANG est un langage fonctionnel qui permet la concurrence et la distribution d une mani re similaire l extension pr sent e dans cet article Mais ERLANG reste non typ en
24. allons suivre pour l extension de Caml light Les caract ristiques les plus importantes d un langage de programmation concurrent sont la synchronisation et les primitives de communication Celles ci peuvent tre divis es en deux grandes cat gories les primitives m moire partag e et les primitives m moire distribu e ou change de messages Les langages m moire partag e utilisent un tat partag mutable pour impl menter la communication entre processus de telle mani re qu il est n cessaire de verrouiller la m moire alors qu elle est utilis e Lorsqu il y a des verrous il y a des cl s qui peuvent se perdre Nous consid rons que les verrous sont un m canisme de bas niveau qui n a pas sa place dans un langage de haut niveau comme Caml Light Ce n est pas le cas dans Java qui use de ces verrous Aussi les langages concurrents m moire partag e reposent sur un tat mutable pour la communication interprocessus Cela 24 Chapitre2 Caml Light concurrent conduit un style imp ratif qui va l encontre du style essentiellement fonctionnel des programmes Caml Light Pour ces raisons nous pensons que les primitives 4 m moire partag e ne sont pas adapt es a une extension concurrente et surtout distribu e de Caml Light et que nous n allons pas utiliser L autre classe des primitives de concurrence est la m moire distribu e ou change de messages Les primitives ou op rations d
25. ant le polymorphisme qui permet un contr le de type statique de composants software 67 Chapitre4 Vers un Caml Light mobile r utilisables qui op rent g n ralement sur des structures de donn es telles que les listes les ensembles les arbres Dans Caml Light le typage statique le polymorphisme param trique et l inf rence de types sont combin s afin am liorer la productivit du programmeur et la construction de composants software fiables et r utilisables 4 5 2 2 Gestion automatique de la m moire Caml Light dispose d un ramasse miettes garbage collector tr s efficace Celui ci r cup re automatiquement la m moire donc pas de r f rences pendantes ni de segmentation default dues des manipulations manuelles de m moire alors des erreurs en moins 4 5 2 2 S curit Le langage Caml light comme d crit dans Lero97 est un langage moderne sir garantissant que les r gles d acc s et de types sont toujours respect es Le code produit par le compilateur Caml light n est pas directement interpr t par la machine virtuelle Il peut tre analys par un module suppl mentaire le v rificateur de bytecode pour v rifier l absence de constructions potentiellement dangereuses Pour aller plus loin Ailleret Aill02 proposa le typage du bytecode afin d assurer un utilisateur que le code compil qu il poss de s ex cutera sans erreur et ceci sans aucune connaissance
26. apport au langage Caml Light Donc il s agit dans cette section de comparer Caml Light avec les propri t s indispensables et souhaitables d un langage mobile et voir quelles sont celles qu il supporte et celles qui restent fournir 65 Chapitre4 Vers un Caml Light mobile 4 5 1 Caml Light et les propri t s indispensables 4 5 1 1 Manipulation de code La manipulation de code dans le langage m me est non disponible dans le langage Caml Light C est dire que notre langage mobile doit pouvoir offrir un support de base pour la manipulation de code Des primitives ou des fonctions de la librairie doivent tre disponibles pour exprimer la transmission d un code mobile Et bien s r l environnement ex cutif du langage doit tre capable d ex cuter les codes mobiles re us Nous allons repr senter un code mobile par une fonction Kirl01 Un code mobile peut alors tre structur par plusieurs fonctions avec l une d elles d sign e comme point d entr e Comme indiqu auparavant les fonctions de Caml Light sont de premi re classe c est dire elles peuvent tre pass es en arguments d autres fonctions et retourn es comme r sultats d autres fonctions Elles peuvent donc aussi tre transmissibles leur code par la primitive send_ message En plus du code et pour atteindre une mobilit forte il est n cessaire de capturer l tat d ex cution d un code mobile Une approche couran
27. ar des s maphores ou des moniteurs Ceci nous offre un nouveau style pour r soudre les probl mes habituels Bien s r nous avons besoin d impl menter un buffer du fait que l envoi de messages est non bloquant que nous allons appeler mailbox boite messages Ce buffer agit comme un canal mais il fait partie du r cepteur Donc les deux nouveaux ingr dients ajout s pour une extension concurrente du langage fonctionnel Caml Light sont e Les processus et un m canisme pour la cr ation et le lancement de processus e La communication interprocessus La cr ation de processus et de la communication interprocessus sont explicites La forme de d signation de processus est directe et asym trique 26 Chapitre2 Caml Light concurrent Envoi de message Q Toute r ception 2 3 1 Architecture des threads indication d impl mentation L architecture que nous proposons pour la gestion de la m moire des threads est une architecture m moire priv e c est dire chaque thread poss de sa m moire priv e essentiellement d coup e en deux parties un tas heap priv et une pile stack priv e Le tas est utilis pour les arguments de fonctions les variables locales et les adresses de retour Le tas contient les listes les tuples Les deux zones m moires tas et pile sont co localis es c est dire que le tas et la pile voluent chacun vers l autre L avantage est qu un d bordem
28. attire une communaut significative d utilisateurs Le langage Caml continu toujours a volu essentiellement Chapitrel Le langage Caml Light dans les laboratoires de l INRIA par de nouveaux concepts et de nouvelles impl mentations encore plus efficaces Enfin et pour terminer en 1996 Guy Cousineau aussi l un des fondateurs de Caml crivait L histoire de Caml aurait certainement pu tre plus lin aire N anmoins travers une s rie de f tonnements une capacit produire des implantations de haute performance portables et flexibles pour les langages de programmation fonctionnels a merg en France 1 3 Types de donn es Avant de parler des diff rents types dans Caml Light il est important d indiquer que ce langage est statiquement typ ce qui veut dire que le contr le de type se fait la compilation ce qui conduit tr s t t la d tection d erreurs ajoute de la s curit et am liore les performances des programmes Encore nul besoin d indiquer les types dans le code un moteur d inf rence de types se charge de la d tection des types Il existe en Caml Light plusieurs types de donn es pr d finis e Types de base o int pour les entiers o float pour les r els o bool pour les bool ens o char pour les caract res o string pour les cha nes de caract res o unit pour le type vide avec comme unique valeur l quivalent de void en C e Types compos s o tup
29. d pit d une tentative de typage Arts98 et plus r cemment Sago08 JoCaml Lefe99 un langage exp rimental aussi est un syst me bas sur les agents mobiles d velopp l INRIA JoCaml est une extension du langage Objective Caml Lero07 par un calcul distribu le Join Calculus Four96 Un autre travail qui est troitement li notre extension est Distributed Haskell Huch99 avec un style ERLANG Distributed Haskell tend le langage purement fonctionnel et paresseux Haskell pour supporter la concurrence et la distribution Ce Distributed Haskell est un langage paresseux et utilise les monades pour l impl mentation de la distribution et de la mobilit Pour ce qui est des langages non fonctionnels plusieurs ont t tendus dans le sens de la mobilit Java vue sa popularit avec Internet tant le langage qui a subi le plus des exp riences sur des extensions mobiles malheureusement aucune d elles n a pu s duire la communaut des programmeurs Un des inconv nients de l impl mentation de Java est que l tat d ex cution ne peut ni tre captur ni tre restaur Un travail dans ce sens a t r alis par Bouchenak Bouc01 au niveau de la 64 Chapitre4 Vers un Caml Light mobile machine virtuelle mais il faudrait convaincre la soci t Sun pour tenir compte de cette modification Un autre inconv nient notre avis sont les m canismes relativement de bas niveau qu utilise
30. du code source du programme ni de la fa on dont il a t compil Dans les langages de programmation fortement typ s comme dans Caml light la s ret de l ex cution d un programme est garantie par les propri t s de typage du langage source Toutes les v rifications tant enti rement statiques les informations de type sont logiquement effac es la compilation car inutiles ensuite En revanche en pr sence de code mobile il est imp ratif de garantir la correction du programme lors de sa r ception car on ne dispose plus du code source dont la validit assurait la s ret 68 Chapitre4 Vers un Caml Light mobile Pour ce faire approche d Ailleret Aill02 consiste ajouter au bytecode quelques informations de type qui sans rien d voiler du code source du programme permettent de v rifier rapidement qu un code compil poss de les m mes garanties de s ret que le langage source 4 6 Conclusion Des trois propri t s indispensables deux sont support es savoir l h t rog n it et la performance Pour ce qui est de la manipulation du code c est l qu il faudrait faire une extension Les trois propri t s d sirables cit es auparavant sont aussi support es On peut dire d une mani re g n rale que le langage Caml Light tait vraiment pr dispos la mobilit comme nous l avons fait savoir d s le d but et peut tre un bon point de d part pour le d veloppement d un
31. dule ERLANG Arms96 module math math le nom du module export double 1 double fonction exporter avec un argument double X gt fois X 2 fois X N gt fois fonction locale X N Les appels aux fonctions peuvent tre qualifi s avec le nom du module en utilisant la syntaxe module fonction comme avec l valuation de math double 8 qui donnera 16 2 7 3 Le filtrage Le filtrage pattern matching ou l unification est un outil cl dans le langage ERLANG Le filtrage est utilis pour faire correspondre des motifs avec des termes Si la correspondance entre un motif et un terme se produit toute variable qui apparait dans le motif sera li e la structure de donn es qui apparait dans le terme la position correspondante Par exemple Il est utilis pour affecter des valeurs des variables par la primitive de filtrage motif terme Exemple gt N 12 Bananes 39 Chapitre2 Caml Light concurrent 12 Bananes gt A B N 12 Bananes gt A 12 gt B Bananes Le filtrage est aussi utilis lors de l appel d une fonction ou pour d terminer le flux de contr le dans un programme 2 74 La concurrence dans ERLANG ERLANG Arms07 est un langage o la concurrence fait partie du langage de programmation et non pas du syst me d exploitation Les m canismes de la programmation concurrente sont int gr s dans le langage m me Un pr
32. e 66 66 67 67 67 68 68 69 70 73 Introduction g n rale Introduction g n rale Introduction g n rale Le paradigme de la mobilit Les applications distribu es Internet se d mocratisent et la plupart des applications sont aujourd hui distribu es m me si la distribution se r duit des fois aux simples changes de fichiers Les quipements utilis s par ces applications se sont diversifi s que ce soit au niveau mat riel stations de travail ordinateurs portables ou au niveau syst mes L h t rog n it des architectures d ordinateurs et des syst mes informatiques ont d fi depuis les ann es 50 la communaut des chercheurs Plusieurs tentatives ont t faites afin de fournir un mod le de calcul homog ne parmi ces tentatives le langage universel UNCOL UNiversal Computer Language Conw58 Malheureusement l id e d un langage universel unifiant tous les langages et supportant toutes les architectures s est r v l e tr s peu pratique malgr les d veloppements ult rieurs dans ce domaine Mais il est utile de rappeler quand m me que bien avant l apparition du langage Java et son bytecode le P code de Pascal Nori81 code interm diaire destin e une machine virtuelle f t introduit pour diffuser sans Internet qui n existait pas encore bien s r avec un grand succ s le premier compilateur Pascal Gr ce ce P code repris par la suite par beaucoup l
33. e syst me concurrent sur une machine avec plusieurs processeurs syst me parall le G n ralement lorsque nous avons des l ments processus qui s ex cutent dans un m me espace de ressources comme dans les syst mes d exploitation multit ches actuels UNIX ou Microsoft Windows sur un PC il s agit de syst mes concurrents L existence des syst mes parall les est souvent due lorsqu il s agit de d couper un probl me de taille en plusieurs sous probl mes moins complexes et que chacun des sous probl mes soit trait par un processeur nous avons donc un syst me multiprocesseur super calculateurs Les processeurs fonctionnent simultan ment Pour ce qui est des syst mes distribu s et selon Tanenbaum Tane02 Un syst me distribu est une collection d ordinateurs ind pendants qui apparait comme un seul syst me pour ses utilisateurs Ce qui induit implicitement un environnement 44 Chapitre3 Caml Light distribu d l ments r partis dans l espace et communiquant les uns avec les autres mais qui apparait du point de vue de l utilisateur comme une entit unique par opposition un syst me centralis o tout est localis sur la m me machine 3 2 Int r ts des syst mes distribu s Les syst mes distribu s sont g n ralement utilis s s ils ne sont pas impos s pour des raisons de Partage de ressources distantes entre utilisateurs o Bases de don
34. e base dans la communication par change de messages sont envoyer un message et recevoir un message et sont toutes les deux utilis es pour la communication et la synchronisation Il existe deux grandes classes pour la s mantique de l change de messages l envoi de messages non bloquant ou change asynchrone de messages et l envoi de messages bloquant ou change synchrone de messages L change asynchrone de messages dans les syst mes distribu s est aussi le plus souvent asynchrone et la communication asynchrone maximise le parall lisme Repp92 Les communications asynchrones sont simples et plus primitives que celles synchrones m me si chacune peut simuler l autre L asynchronisme est le choix fait par plusieurs approches th oriques mais moins par des plateformes r elles par exemple le mod le client serveur utilise g n ralement les communications synchrones Aussi plusieurs syst mes ou langages poss dent des communications synchrones EJB CORBA RMI Emme01 Mais ces toutes derni res ann es des int r ts commencent se manifester par les communications asynchrones et c est le cas du langage ProActive Proa en cours d laboration l INRIA qui est un langage asynchrone et bas sur Java et surtout le cas du langage ERLANG Arms07 C est pourquoi nous avons opt pour l change asynchrone de messages c est dire envoyer ne pas attendre en Caml Light et d ici notre
35. e cas Dans notre extension de Caml Light les programmes sont crits pour tre ex cut s sur des r seaux de n uds On peut cr er et lancer un processus sur n importe quel n ud le m canisme d change asynchrone de messages employ pour la concurrence fonctionnera comme dans le cas d une seule machine ou d un seul n ud Toutes les primitives propos es pour la concurrence auront les m mes propri t s dans un syst me distribu que dans une seule machine Ce sera un grand avantage que de conserver la m me philosophie de conception d une part le programmeur ne se d paysera pas en allant depuis la concurrence vers la distribution afin d crire des applications distribu es et d autre part le langage gardera une certaine homog n it Ecrire un programme distribu dans le langage tendu est relativement facile il suffit de cr er et de lancer les processus sur les bonnes machines et le tout fonctionnera comme dans le cas de la concurrence C est une extension directe des primitives de concurrence vers la distribution en ajoutant le concept de n ud On aura besoin donc de savoir deux choses Comment lancer un n ud Et comment effectuer un appel distant de proc dure m canisme largement accept pour supporter la conception d applications distribu es 46 Chapitre3 Caml Light distribu 3 3 1 N uds et connexions Un n ud est un concept central dans notre extension Un n
36. e programme concurrent crit dans le langage Caml Light tendu Nous proposons ici une petite application concurrente client serveur Le serveur calcule la somme la n gation ou le produit de deux entiers fournis par un client Le client et le serveur sont des processus s par s et l change asynchrone de messages propos est utilis pour la communication entre eux Nous supposons que le client et le serveur fonctionnent sur la m me machine On d sire un client envoyer une requ te a un processus le serveur puis attendre une r ponse du serveur Pour envoyer une requ te un client doit inclure une adresse a laquelle le serveur peut r pondre Nous crivons une fonction appel e rpc pour remote procedure call appel de proc dure distance qui encapsule l envoi d une requ te un serveur et attend une r ponse de celui ci Nous allons mettre cela dans un module appel serveur_cal pour serveur de calculatrice et stocker le module dans le fichier appel serveur_cal ml L ensemble du module ressemble ceci 33 Chapitre2 Caml Light concurrent fichier serveur _cal ml let lancer spawn_process loop let evaluer PId expr rpc PId expr let rpc p requete send message self p requete receive_message with p reponse gt repons end let loop receive_message with de somme a b gt send message self de a b loop de moins a b g
37. ent est facilement d tect juste par la comparaison du pointeur de tas avec le pointeur de pile qu on peut garder dans des registres pour des raisons de performance Un inconv nient bien s r est qu une expansion du tas ou de la pile engage les deux zones Tout ceci doit tre pris en consid ration au niveau de l interpr teur du bytecode g n r par le compilateur Caml Light Une impl mentation est en cours afin de rendre Caml Light concurrent Le langage Caml Light est typiquement s quentiel 2 4 Cr ation de processus Un processus est une fonction valu e dans un thread fil d ex cution s par qui encapsule un calcul concurrent tout moment un nombre arbitraire de processus peuvent tre ex cut s simultan ment A chaque fois qu un thread est cr une nouvelle m moire priv e est cr e et associ e avec ce thread et il n y a aucun moyen qu un thread acc de la m moire priv e d un autre thread 27 Chapitre2 Caml Light concurrent Un processus n aura pas de notation sp ciale nous utilisons la m me notation pour les modules spawn_process est la nouvelle primitive propos e qui cr e et lance un processus concurrent spawn_process mod _func arg o _ sont deux caract res de soulignement e mod est le module qui contient la fonction func mod peut tre omis si func est locale e func est le nom d une fonction e arg est l argument de la fonction func L
38. er nom valeur put nom valeur send message self from true loop from rechercher nom gt send message self from get nom loop end 49 Chapitre3 Caml Light distribu fichier serveur _noms mli value lancer unit int value enregistrer string int gt bool value rechercher string int Au niveau du shell on fait un test local en lan ant l ex cution d une instance de la machine virtuelle de Caml Light tendu appel e cle en cours de d veloppement cle gt serveur _noms__lancer donne le Pld du serveur gt serveur_noms__enregistrer nom1 valeurl donne true gt serveur_noms__enregistrer nom2 valeur2 donne true gt serveur_noms__ rechercher nom2 donne valeur2 gt serveur_noms__rechercher nom3 donne ind fini Maintenant pour avoir un client sur une machine hotel et un serveur sur une machine s par e hote2 dans un r seau comme nternet nous avons cr er deux n uds ou machines virtuelles un pour le client noeud et un pour le serveur noeud2 sur les deux machines diff rentes avec l interpr teur Alors on peut envoyer quelques commandes de noeud sur hotel noeud2 sur hote2 Sur la machine hote2 on lance Vex cution d une instance de la machine virtuelle Cette instance aura pour nom noeud2 Sous le contr le de cette machine virtuelle on lance le serveur de noms hote
39. er un environnement multithread C est aussi dans cet axe que nous allons tendre le langage fonctionnel Caml Light mais avec un autre mod le de concurrence autre que celui de Java que nous pensons est relativement de bas niveau Les threads sont souvent appel s processus l gers Un thread est un chemin d ex cution dans le code d un programme et chaque thread poss de ses propres variables locales son compteur de programme PC et sa dur e de vie Les m mes concepts et les m mes m canismes ont t repris pour permettre un processus de comporter plus d un fil thread d ex cution en quelque sorte avoir plusieurs processus l gers au sein d un processus h te lourd Comme exemple concret l explorateur sous Windows utilise un thread pour chaque fen tre Le terme l ger provient du fait que dans un processus les threads se partagent le m me espace d adressage et qu il n y a pas de commutation de contexte Uniquement une pile pour les variables locales et les param tres des fonctions est recr e pour chaque thread Il ne faut pas donc se priver d avoir plusieurs threads si l application est naturellement constitu e d actions qui peuvent tre men es simultan ment On trouve souvent deux types de threads threads pris en charge par le syst me leurs cr ations et leurs gestions est la charge du syst me d exploitation threads inconnus du syst me c
40. ers un Caml Light mobile 4 1 Introduction 4 1 1 D finition viii 27 27 29 30 31 33 33 35 37 38 39 39 40 41 42 43 44 45 46 47 47 48 48 50 52 53 53 4 1 2 Motivations 4 2 Les diff rents mod les classiques d ex cution distribu e 4 2 1 42 2 4 2 3 4 2 4 Echange de message Appel de proc dure distante Evaluation distance Code la demande 4 3 Le mod le du code mobile 4 3 1 4 3 2 4 3 3 4 3 4 D finition du code mobile Mobilit faible et mobilit forte 4 3 2 1 Mobilit faible 4 3 2 2 Mobilit forte R sum des diff rents mod les Quelques probl mes du code mobile 4 4 Langages mobiles 4 4 1 4 4 2 4 4 3 Propri t s indispensables 4 4 1 1 Manipulation de code 4 4 1 2 H t rog n it 4 4 1 3 Performance Propri t s souhaitables 4 4 2 1 Typage fort 4 4 2 2 Gestion automatique de la m moire 4 4 2 3 S curit Quelques langages mobiles 4 5 Caml Light vers la mobilit 4 5 1 Caml Light et les propri t s indispensables ix 54 54 55 55 56 57 57 57 59 59 60 60 61 61 62 62 62 63 63 63 63 63 64 65 66 4 5 1 1 Manipulation de code 4 5 1 2 H t rog n it 4 5 1 3 Performance 4 5 2 Caml Light et les propri t s souhaitables 4 5 2 1 Typage fort 4 5 2 2 Gestion automatique de la m moire 4 5 2 3 S curit 4 6 Conclusion Conclusion Bibliographi
41. es d veloppeurs de Java aussi produit par le compilateur Pascal et la technique du bootstrapping Nori75 il tait facile et pratique d utiliser le langage Pascal sur n importe quelle machine Nous avons eu la chance un jour d utiliser ce compilateur et l interpr teur de cette machine virtuelle la machine P Ce sujet hiberna beaucoup jusqu l av nement de la programmation Internet oblig e Le d veloppement d Internet et du Web a chang ou plut t a impos ses conditions en proposant un environnement de connexion et un environnement dynamique o la mobilit du code peut convenir la conception d applications distribu es Ce d veloppement a donc donn un nouvel essor aux travaux sur la mobilit D autre part le langage Java a fourni un support et des outils pour crire des Introduction g n rale programmes qui peuvent se d placer travers des r seaux comme c est le cas tr s r pandu avec les applets La programmation Internet est bas e sur un calcul qui doit tre mobile et donc doit traiter l h t rog n it et tous les probl mes de s curit Un calcul mobile est une unit d ex cution qui d marre son ex cution sur un site et peut le cas ch ant se d placer vers un autre site pour continuer son ex cution Un tel transfert peut tre initi tout moment de l ex cution L tat courant de l ex cution est transf r avec le code de mani re que l ex c
42. essus ml let p ref 0 let start p spawn process run print_string Spawned print_int p print_newline flush std_out let run print_string Hello world n fichier processus mli value start unit gt unit Dans un autre module test par exemple on peut utiliser fichier test ml open processus start 2 5 Communication interprocessus Dans ce mod le propos chaque processus poss de une bo te messages et tous les messages qui sont envoy s au processus sont stock s dans la boite 4 messages dans l ordre de leur arriv e Cette boite messages sera impl ment e soit Par un buffer de taille limit e s il y a d bordement du buffer il sera difficile de d tecter l erreur d bordement ou autre Buffer de taille illimit e il faut pr voir une allocation dynamique Nous introduisons aussi un nouveau type appel messages comme un type de donn es alg brique pour d finir les messages que le processus peut recevoir 29 Chapitre2 Caml Light concurrent type messages Cons ti1 tini Cons2 ta1 tan2 ConSr Crt Cknk e e Les Cons sont des constructeurs de type til gt tig gt gt tini La primitive send_ message que nous verrons par la suite n envoie pas directement un message un processus mais d pose un message dans la bo te messages du processus La primitive receive_message aussi
43. est le processus qui h berge les threads qui se charge de la cr ation et de la gestion via une librairie ou un support natif par le langage de programmation Dans notre contexte d extension d un langage de programmation pour le support de la concurrence on va se restreindre uniquement aux concepts n cessaires 23 Chapitre2 Caml Light concurrent 2 3 Le mod le de concurrence propos Actuellement il y a beaucoup de langages de programmation qui supportent la concurrence Ce support est appel le mod le de concurrence Il d pend essentiellement de la mani re d changer de l information entre les diff rents composants d un programme Comme exemples de mod les de concurrence on trouve Les structures de donn es partag es et synchronis es comme en Java et en C L change synchrone de messages comme en Concurrent ML Matt97 et en Concurrent Haskell Jone96 La technique du rendez vous comme en Ada Ichb83 et en Concurrent C Geha92 L change asynchrone de messages comme en ERLANG Arms96 La technique la plus commune actuellement est la synchronisation a travers des structures de donn es partag es Cependant un certain nombre de techniques bas es sur l change de messages sont apparues ces derni res ann es apr s l av nement des r seaux de communication Et ce mod le de concurrence est devenu convenable pour ce type d applications C est cette tendance que nous
44. et chaque langage doit fournir un ensemble de primitives afin de supporter la mobilit Plusieurs syst mes ou langages mobiles ont t d velopp s durant ces derni res ann es comme Telescript Aglets AgentTcl La plupart d entre eux ont t Introduction g n rale impl ment s au dessus de Java cause de sa grande diffusion et de quelques avantages techniques ind pendance de la machine et le typage fort pour des raisons de s curit Cependant m me Java n apporte pas de r ponse compl te aux besoins de mobilit des applications une application Java avec son code ses donn es et l tat de son ex cution ne peut pas tre rendue mobile La prise en compte du contexte d ex cution des applications Java pour des besoins de mobilit a fait l objet de travaux de recherches Bouc01 Mais ses langages ou d autres souffrent de beaucoup d insuffisances comme Langage tr s priv donc peu connu alors tr s peu d utilisation Langage tendu pour la mobilit mais d s le d part non pr dispos Modifications majeurs dans le langage ce qui nie aux objectifs initiaux C est donc dans ce contexte que s inscrit notre travail afin de proposer la conception d un nouveau langage en r alit un langage au dessus d un langage existant visant le support de la mobilit Objectifs de la th se Nos objectifs sont donc de d marrer d un langage pr dispo
45. eut tre exploit e pour am liorer les performances et donc g n rer un code interm diaire compacte d une part efficace pour la transmission lors de la migration du code mobile et d autre part efficace l ex cution de ce code sur la machine cible Le langage Caml Light est all dans ce sens d s ses premi res impl mentations On peut dire que cette propri t est assez satisfaite mais nous l avons fait savoir pr c demment l valuation r elle des performances doit passer par les benchmarks 4 5 2 Caml Light et les propri t s souhaitables 4 5 2 1 Typage fort Le langage Caml Light supporte d j le typage fort Son avantage est certain la d tection des erreurs est faite d s la compilation Les programmes sont encore plus s rs En plus il n est pas n cessaire de d clarer les types le compilateur inf re tous les types c est dire il calcule automatiquement le type des objets Le traitement des exceptions qu offre Caml Light favorise encore la cr ation de programmes robustes Les langages typ s statiquement sont actuellement largement accept s comme n cessaires pour une ex cution s re des programmes surtout dans un contexte mobile v rifiant la compilation que les structures de donn es sont correctement utilis es et apportent de l information sur l utilisation des donn es afin de les repr senter d une mani re optimale Le langage Caml Light am liore la flexibilit du typage statique en ajout
46. extension sera un exemple de langage de programmation comme ERLANG bas sur l change asynchrone de messages dans la classe des langages m moire distribu e 25 Chapitre2 Caml Light concurrent Les communications asynchrones sont moins contraignantes d un point de vue concurrence mais l metteur ne sait pas si un message sera re u par un r cepteur Un autre fait important avec l asynchronisme c est l impossibilit de diff rencier un composant lent d un composant arr t et son impact sur la gestion des erreurs D un autre c t les communications synchrones consomment plus de temps ERLANG est un des rares langages de programmation ayant utilis l envoi asynchrone de messages et ayant prouv son efficacit dans beaucoup d applications Le langage ERLANG commence influencer la communaut de conception de langages de programmation surtout concurrente et distribu e Huch Huch99 a aussi propos un Haskell au style d ERLANG Nous avons aussi t dans notre cas influenc par le mod le de concurrence et de distribution d ERLANG c est pour cela que nous avons vu digne de notre part de pr senter ce langage m me partiellement par un bref survol dans la section 2 7 Avec cette d cision d change asynchrone de messages les probl mes de programmation seront r solus en envoyant et en recevant des messages au lieu d crire et de lire dans des variables partag es prot g es p
47. ge n ud PID Message Elle envoie le message Message au processus PID sur le n ud n ud e register process nom p Permet de publier le PId p d un processus connu sous le nom nom afin de permettre d autres processus de communiquer avec celui ci 3 4 Un exemple de serveur de noms Voici un exemple d un serveur de noms crit dans cette extension distribu e de Caml Light Ce serveur de noms appel serveur_noms est un programme qui partir d un nom 48 Chapitre3 Caml Light distribu Retourne une valeur associ e ce nom Ou stocke une valeur associ e ce nom Nous supposons l existence d un dictionnaire global qui peut tre manipul par deux fonctions put et get La fonction put ajoute une nouvelle valeur un entier diff rent de 0 au dictionnaire et associe cette valeur nom une cha ne de caract res et retourne la valeur true La fonction get retourne la valeur associ e nom dans le dictionnaire autrement elle retourne 0 si aucune valeur n est associ e nom fichier serveur _noms mi let p ref 0 let lancer p spawn_process loop register_ process serveur_noms p let enregistrer nom valeur rpc enregistrer nom valeur let rechercher nom rpc rechercher nom let rpc arg send message self p arg receive message with p reponse gt repons end let loop receive_message with from enregistr
48. ght Distribu Conf rence Internationale sur Informatique et ses Applications Sa da Alg rie 03 04 Mai 2009 77 Bibliographie Mera09b Mera09c Nori75 Nori81 OMG95 Proa Raja02 Repp92 Sago08 Elkamel Merah Allaoua Chaoui Towards Mobility For Caml Light First International Conference on Networked Digital Technologies NDT 2009 Technical co sponsored by IEEE VSB Technical University of Ostrava Czech Republic July 28 31 2009 Elkamel Merah Allaoua Chaoui Design of A Concurrent Caml Light ACCL To appear in Second International Conference on the Applications of Digital Information and Web Technologies ICADIWT 2009 Technical co sponsorship by IEEE UK amp RI Selection London Metropolitan University United Kingdom August 4 6 2009 Nori K V Ammann U Jensen K Nageli H 1975 The Pascal P Compiler Implementation Notes Zurich Eidgen Tech Hochschule Nori K V Ammann U Jensen K Nageli H and Jacobi C Pascal The language and its implementation ch Pascal P Implementation Notes pp 113 214 Wiley 1981 Object Management Group Corba Architecture and specification August 1995 ProActive http www sop inria fr oasis ProActive S K Rajamani J Rehof Conformance checking for models of asynchronous message passing software Lecture Notes in Computer Science 2404 166 179 2002 J Reppy Higher order Conc
49. ight language which aims to encompass functional imperative concurrent and distributed programming paradigms in a single programming language This extension is tailored for distributed memory systems It is also aimed towards mobility In contrast to other solutions we chose to have an asynchronous system like in ERLANG where sending and receiving do not to have to occur simultaneously For the concurrent extension of Caml Light we propose a set of primitives with very simple semantics Supports for dynamic process creation and inter process asynchronous communication are the two of the essential extensions to Caml Light language Writing distributed programs in Distributed Caml Light is made by the adaptation of primitives used for concurrency The use of these constructions added to Caml Light is illustrated through some examples Vers Un Nouveau Langage Mobile Elkamel MERAH R sum Dans cette th se nous proposons une extension du langage Caml Light qui vise rassembler les paradigmes de programmation fonctionnelle imp rative concurrente et distribu e dans un seul langage de programmation Cette extension est adapt e aux syst mes m moires distribu es Elle est aussi destin e au support de la mobilit A l oppos de beaucoup d autres solutions nous avons opt pour un syst me asynchrone comme dans le langage ERLANG o l envoi et la r ception de messages n ont pas se produire simultan ment Pour l
50. ion des applications distribu es sont e Echange de messages 54 Chapitre4 Vers un Caml Light mobile e Appel de proc dure distante e Evaluation a distance e Code la demande 4 2 1 Echange de message MS pour Message Sending C est le paradigme le plus ancien Il permet diff rents processus de communiquer explicitement par envoi de messages Des concepts ont t propos s pour une communication synchrone ou asynchrone Les aspects communication et synchronisation sont la charge du programmeur C est un paradigme non mobile avec un degr de mobilit nulle Il n y a aucune migration de code sauf un transport de donn es les messages 4 2 2 Appel de proc dure distante RPC pour Remote Procedure Call Afin de communiquer les processus appellent des proc dures distantes Ce mod le tr s familier la communaut des programmeurs est souvent appel mod le Client serveur le site source client transmet les donn es d entr e au site de destination le serveur qui d tient le savoir faire code proc dure en plus des ressources n cessaires l ex cution de ce savoir faire Les services les proc dures disponibles sur le site de destination sont fix s d avance La communication est synchrone C est aussi un paradigme non mobile avec un degr de mobilit nulle Aucun code n est transmis Proc dure ad quate 55 Chapitre4 Vers un Caml Light mobile
51. ique le langage Caml Light tendu permet un metteur d inclure son propre PId dans le message qui peut tre obtenu avec la primitive self value self unit gt int Cela peut tre fait par send_message self PId Message 2 5 2 La Primitive receive message Les messages sont re us dans le mailbox du r cepteur et lus de mani re asynchrone par le r cepteur La primitive receive _ message poss de la signature value receive message a mailbox gt e est utilis e pour recevoir ou accepter des messages La syntaxe et la s mantique de la primitive receive message est receive message with pattern gt expression pattern gt expression pattern gt expressiony end 31 Chapitre2 Caml Light concurrent Le caract re _ la fin de la primitive receive message s il est utilis doit tre lu autre comme en Caml Light Quand un programme value une primitive receive message sa bo te messages est examin e et le premier message dans la bo te messages est compar avec les motifs pattern jusqu patternp Si la correspondance de pattern r ussit l expression associ e expression est valu e et sa valeur devient la valeur de la primitive receive message Si aucun des motifs ne correspond ce premier message dans la bo te messages il est enregistr pour traitement ult rieur Si la correspondance r ussit ou choue ce premier message est supprim
52. langage mobile Malgr ceci cette extension propos e de Caml Light concurrent et distribu pour la mobilit ne repr sente pas un langage complet un travail assez important reste r aliser 69 Conclusion Conclusion 70 Conclusion La mobilit est un d fi Elle pose des probl mes tr s pineux pour disposer d applications mobiles Ce qui a pouss r cemment m me Giovanni Vigna Vign04 l un des fondateurs de ce mod le distribu crire Agents Mobiles Dix Raisons Pour L chec Parmi ces raisons la raison n 9 et une qui nous int resse particuli rement est que la mobilit ne dispose pas encore d un langage mobile acceptable pour la diffusion d applications mobiles sur les r seaux C est aussi pour nous une d claration qui nous a pouss travailler sur ce th me malgr sa diversit sa port e et son ampleur non pas bien s r pour contredire cette raison n 9 de Giovanni Vigna mais de donner une petite lueur la mobilit Cette th se s efforce de montrer que le chemin emprunt pour la conception d un nouveau langage mobile en particulier le choix d un langage candidat la mobilit est tr s important Nous avons d crit la conception d un langage concurrent et distribu et qui se pr te la mobilit base d un langage existant Caml light qui prend de l ampleur que ce soit dans le milieu de la recherche ou dans celui de l industrie
53. le langage Java pour r aliser la concurrence et la distribution L INRIA propose une autre extension au dessus de Java mais cette fois ci avec d autres m canismes pour la concurrence et la distribution et il ne s agit que de l envoi asynchrone de messages Proa Le langage Telescript de General Magic Whit96 est un langage sp cialement con u d s le d part pour la programmation d applications mobiles Il est orient objet et interpr t donc portable malgr que sa machine virtuelle est un peu exigeante en m moire Telescript poss de des constructions incorpor es pour manipuler et transmettre du code mobile La primitive go permet un code mobile de se d placer de mani re autonome go se charge de tout le transfert du code mobile et l instruction qui suit le go sera ex cut e sur le site h te Mais le langage Telescript est d une utilisation tr s limit e il est rest longtemps une propri t priv e 4 5 Caml Light vers la mobilit Cette extension de Caml Light la concurrence et la distribution fournit un bon point de d part pour d velopper un langage mobile Au lieu de concevoir et d impl menter un langage mobile partir de z ro nous avons choisi pour quelques raisons que nous avons d j voqu s le langage Caml Light qui r pond m me partiellement aux exigences des propri t s indispensables et d sirables de la mobilit et que nous allons maintenant discuter et situer par r
54. les 1 true ab est un tuple de type int bool string Les l ments sont de types diff rents mais leur arit est fixe o listes 1 2 3 les l ments doivent tre de m me type O 10 Chapitrel Le langage Caml Light En plus de ces types pr d finis le langage propose de puissants moyens pour construire de nouveaux types ou types utilisateurs e Types produit produit math matique de plusieurs types enregistrements e Types somme union disjointe de plusieurs types 1 4 Valeurs et d clarations Il y a deux types de d clarations Les d clarations globales connues par toutes les expressions qui suivent la d claration en utilisant la construction let name expr Les d clarations locales connues par une seule expression avec la construction let name exprl in expr2 Le mot cl let ne fait pas une affectation il permet d introduire un identificateur dans un environnement 1 5 Fonctions Caml Light est un langage fonctionnel les fonctions sont des valeurs de premi re classe au m me titre que les entiers les cha nes etc elles peuvent tre retourn es en r sultats et pass es en arguments d autres fonctions Elles se manipulent comme en math matiques Une valeur de type fonction encore appel e valeur fonctionnelle est une r gle de correspondance qui associe a chaque valeur d un type fl une valeur d un type 72 Une telle valeur exprime donc la
55. les n uds dans le cas d applications r parties ou distribu es Ilest gratuit et distribu par l INRIA INRIA 19 Chapitre2 Caml Light concurrent Chapitre 2 Caml Light concurrent 20 Chapitre2 Caml Light concurrent Nous allons d crire dans ce chapitre une extension du langage Caml Light par des primitives de cr ation de processus et des primitives de communication inter processus Cette extension se basera sur un mod le de concurrence change asynchrone de messages inspir du langage ERLANG que nous pr senterons de mani re tr s br ve N Pour illustrer la capacit a notre extension de Caml light d exprimer des programmes concurrents quelques solutions des probl mes concurrents simples et utilisant les primitives ajout es seront expos es 2 1 Introduction L informatique a d but avec une programmation compl tement s quentielle qui repose sur l ind pendance des programmes Des domaines sont apparus par la suite o les programmes deviennent d pendants et d sirent coop rer D autre part la technologie actuelle des semi conducteurs approche ses limites physiques par rapport la vitesse de transfert du signal lectrique et des solutions sont recherch es pour atteindre un maximum de performance Parmi ces solutions l exploitation de la concurrence pour prendre avantage d un parall lisme potentiel dans les programmes m me dans un co
56. mobile Ce chapitre pr sente une vue d ensemble de la technologie du code mobile en situant ce mod le d ex cution distribu e par rapport d autres mod les classiques comme l valuation distance tout en pr sentant leurs caract ristiques Le mod le du code mobile est pr sent d une mani re assez d taill e Quelques langages mobiles seront aussi voqu s ainsi que les propri t s minimales et souhaitables qu un langage mobile devra avoir Une tude et une proposition est faite pour se rapprocher d un Caml Light mobile 4 1 Introduction 4 1 1 D finition Gr ce l arriv e des ordinateurs il a t possible de construire un nouveau type d applications les applications distribu es Ces applications reposent sur diff rents mod les appel s mod les d ex cution distribu e passage de messages ex cution distance Parmi ces mod les il en est un relativement nouveau le code mobile ou des fois appel Agent mobile Calcul mobile Composant mobile Application mobile dont une d finition Un code mobile CM est une entit logicielle qui a la capacit de migrer a partir d une machine site source vers une autre machine site de destination pour acc der a des donn es ou a des ressources Une fois arriv e cette entit peut devenir autonome elle peut encore migrer en cours d ex cution sur un autre site Le moment de migration et le site cible sont d cid
57. n es syst me de r servation a rienne o Serveur de fichiers utiliser ses fichiers partir de n importe quelle machine o P riph riques imprimante laser couleur Performance puissance de calcul et de stockage Fiabilit la d faillance d une machine n affecte pas la disponibilit des autres Distribution naturelle de certaines applications On peut trouver comme exemples de syst mes distribu s Calcul distribu Serveur Web World Wide Web Un serveur Web auquel se connecte un nombre quelconque de navigateurs Web clients Syst me de r servation de place d avions Syst me de gestion d agences bancaires Applications Clients Serveur Les probl mes qu on peut rencontrer dans les syst mes distribu s D signation et communication 45 Chapitre3 Caml Light distribu H t rog n it des r seaux des machines des syst mes d exploitation et des logiciels S curit authentification cryptographie Logiciels moins de logiciels disponibles et peu d exp rience R seaux saturations d lais pertes de messages 3 3 Le mod le de distribution Le langage Caml Light a t tendu pour servir la conception de programmes ou syst mes distribu s Les programmes distribu s sont les programmes con us pour tre ex cut s sur des r seaux d ordinateurs et qui peuvent coordonner leurs activit s par change asynchrone de messages dans notr
58. n de haut niveau essentiellement fonctionnel et usage g n ral Il poss de aussi quelques traits imp ratifs Caml Light adopte le typage statique qui assure l criture d applications s res et poss de un syst me d inf rence de types Sa strat gie d valuation est stricte et il est polymorphe Il offre une gestion automatique de la m moire Caml Light dispose d un syst me de gestion des exceptions pour la signalisation et la manipulation des conditions exceptionnelles Il permet le filtrage Son syst me de modules puissant et tr s expressif permet l criture d applications importantes Caml Light est l ger et portable Il fonctionne en deux modes interpr t et compil Le langage est mature et son compilateur produit du code efficace pour diff rentes architectures Caml Light est actuellement en open source et est disponible gratuitement INRIA Chapitrel Le langage Caml Light 1 2 Une petite histoire de Caml Caml Ch t03 est l origine un acronyme pour Categorical Abstract Machine Language qui est un jeu de mots sur e CAM Machine Abstraite Cat gorique une machine virtuelle bas e sur la th orie des cat gories et sur le lambda calcul e ML Meta language la famille de langages de programmation laquelle Caml appartient l origine de cette famille est Robin Milner de l Universit d Edinburgh avec sa proposition du langage ML dans les ann es 70
59. nctions PhD Thesis UK 2001 Frederick Knabe An Overview of Mobile Agent Programming P Universidad Catolica de Chile Casilla 306 Santiago 22 Chile 76 Bibliographie Lefe99 Lero07 Lero97 Marz07 Matt97 Mera08a Mera08b Mera09a F LeFessant JoCaml Distributed programming and mobile Agents Premi re Conf rence Fran aise sur les Syst mes d exploitation Rennes 8 juin 11 juin 1990 Xavier Leroy The Objective Caml system release 3 10 Institut National de Recherche en Informatique et en Automatique May 16 2007 Xavier Leroy The Caml Light system release 0 74 Institut National de Recherche en Informatique et en Automatique 1997 S Marzouk M Ben Jemaa M Jmaiel Serialisation based approach for processes strong mobility ICTA 07 April 12 14 2007 Hammamet Tunisia D Matthews ML with Concurrency Design Analysis Implementation and Application Chapter3 pages 31 58 Springer 1997 Elkamel Merah Allaoua Chaoui Distributed Caml Light International Review On Computers and Software IRECOS ISSN 1828 6003 Vol 3 N 5 IRECOS Journal Italia September 2008 Elkamel Merah Allaoua Chaoui TOWARDS A MOBILE CAML LIGHT mCamllight Ubiquitous UBICC Special issue on New Technologies Mobility and Security NTMS ISSN Online 1992 8424 ISSN Print 1994 4608 UBICC Journal South Korea October 2008 Elkamel Merah Allaoua Chaoui Un Caml Li
60. notion math matique de fonction En math matique on crira par exemple successeur N gt N ns nm pL et on dira successeur est la fonction qui tout nombre entier d sign par n fait correspondre le nombre entier calcul par l expression n 1 La valeur de cette 11 Chapitrel Le langage Caml Light fonction est donc la r gle de correspondance exprim e par l criture n gt n 1 L identificateur successeur constitue le nom de cette fonction En CAML la d finition d une fonction est compos e d un nom identificateur suivi d un ou de plusieurs arguments param tres formels et d une expression de d finition On utilise pour cela la construction Let comme pour la d finition des autres valeurs let successeur n n 1 notation la plus simplifi e successeur est donc le nom d une fonction avec l argument n entier et qui retourne n 1 comme valeur Pour appliquer cette fonction il suffit de faire successeur 2009 qui produira 2010 La fonction suivante est une fonction r cursive let rec fact n if n 0 then 1 else n fact n 1 Comme les fonctions sont des valeurs d ordre sup rieur alors gt Une fonction peut avoir un argument de type fonctionnel let accroissement_un f f 1 0 La fonction accroissement_un fait correspondre a une fonction d entiers vers entiers la diff rence entre les deux valeurs f 1 et f 0 On peut l appliquer avec
61. ntexte monoprocesseur La concurrence est au moins souhaitable pour ne pas dire n cessaire dans au moins deux cas d une part certaines applications sont implicitement concurrentes et d autre part l utilisation croissante de machines avec plusieurs processeurs pour augmenter les performances des programmes ce qui exige le d coupage d un programme en plusieurs parties qui peuvent s ex cuter de mani re concurrente Un programme dans un langage de programmation est qualifi de concurrent lorsqu il contient des s quences d instructions qui peuvent tre ex cut es de mani re parall le comme les deux simples s quences suivantes X A B C et Y D E 21 Chapitre2 Caml Light concurrent La programmation concurrente engage donc d une part des notations pour exprimer un parall lisme potentiel de sorte que des op rations peuvent tre ex cut es en parall le et d autre part des techniques pour r soudre les probl mes de synchronisation et de communication Il est noter qu on s int resse ici un parall lisme potentiel dans un programme qui lui peut tout fait s ex cuter de mani re s quentielle sur une machine monoprocesseur l oppos du vrai parall lisme physique qui ne fait pas partie du cadre de notre travail Il s agit d apporter un support langage la progr ammation concurrente Le langage Caml light inclue toutes les caract ristiques requises
62. ogramme ERLANG est constitu de beaucoup de processus qui fonctionnent de fa on ind pendante Ils communiquent les uns avec les autres en changent des messages par l change asynchrone de messages la seule m thode par laquelle les processus peuvent changer des donn es Un processus est initi l aide d une fonction dont le r le est de d terminer la nature et le comportement du processus il est cr lors de l appel de cette fonction et disparait lorsque l ex cution de la fonction se termine Un processus dispose d une boite de messages m moire dans laquelle il peut r cup rer ou attendre un message v rifiant certaines propri t s Le syst me en utilisant la technique du filtrage tente de faire correspondre les messages dans la bo te de messages avec les motifs l aide de l instruction receive 40 Chapitre2 Caml Light concurrent Un processus peut bien entendu envoyer des messages un autre processus l aide de l op rateur d envoi de message Pour r pondre ce besoin chaque processus est identifi par un pid process identifier Dans l exemple qui suit un processus attend des messages et leur r ception il affiche leur contenu module exemple export processus 1 processus Compteur gt receive stop gt io format Le processus se termine apr s avoir re u p messages n Compteur Message gt io format Message n
63. ookie et ce cookie doit tre identique aux cookies des n uds avec lesquels ce n ud communique Donc tous les n uds dans un syst me Caml Light distribu qui veulent communiquer entre eux doivent tre lanc s avec le m me cookie L ensemble des n uds connect s poss dant le m me cookie est appel cluster Pour initialiser un m me cookie pour deux n uds qui veulent communiquer on utilise la m thode d impl mentation suivante 47 Chapitre3 Caml Light distribu gt Enregistrement d un m me cookie dans le fichier HOME camllight cookie Ce fichier peut tre copi par son propri taire sur les diff rentes machines qui vont entrer en communication Il peut tre cr avec les commandes Unix suivantes o cd o cat gt camllight cookie o TYRU75654476YHG o chmod 400 camllight cookie La derni re commande permet de prot ger le fichier acc s exclusif au propri taire 3 3 3 Les primitives de distribution Les primitives ajout es Caml Light pour l criture de programmes distribu s sont comme suit e La primitive rspawn_process r pour remote distance un spawn tendue est rspawn_process n ud mod_ func arg Elle engendre un nouveau processus sur n ud en appliquant la fonction func localis e dans le module mod avec comme argument arg rspawn_process retourne l identificateur du processus cr e Envoyer un message un processus distant rsend messa
64. pal 73 Bibliographie Aill02 Arms07 Arms96 Arts98 Balt07 Bark99 Bouc01 Carz97 Ch t03 Conw58 Sebastien Aijlleret Typage de bytecode Caml Congr s JFLA 2002 journ es francophones des langages applicatifs Anglet 28 29 janvier 2002 J Armstrong Programming ERLANG ISBN 13 978 1 934356 00 5 The Pragmatic Bookshelf Raleigh North Carolina Dallas Texas 2007 J Armstrong R Virding C Wikstr m and M Williams Concurrent programming in ERLANG ISBN 0 13 508301 X London Prentice Hall Europe 1996 T Arts and J Armstrong A practical type system for ERLANG Technical Report ERLANG User Conference September 1998 R Balter A Freyssinet Joram un intergiciel de communication asynchrone Licence Creative Commons 8 janvier 2007 http creativecommons org licenses by nc nd 2 0 fr deed fr J Barklund R Virding ERLANG 4 7 3 Reference Manual February 9 1999 Sara Bouchenak Mobilit et Persistance des Applications dans l environnement Java Th se de Doctorat Institut National Polytechnique de Grenoble 2001 A Carzaniga G Picco and G Vigna Designing Distributed Applications with Mobile Code Paradigms In Proceedings of the 19 International Conference on Software Engineering ICSE 97 Boston MA April 1997 Pierre Chatel et Carine Pivoteau Caml Historique Concepts et Etude Comparative Caml Rapport de T E 2003
65. quent entre elles par change asynchrone de messages La cr ation et la suppression de processus exigent peu de m moire et de temps de calcul En ERLANG la m moire est allou e dynamiquement Un gestionnaire de m moire lib re la m moire qui n est plus r f renc e Le partage m moire n existe pas les processus sont oblig s d changer les donn es par envoi de messages Un m canisme de gestion des erreurs une fonctionnalit phare du langage permet un processus de traiter des exceptions cr es par l valuation d expressions incorrectes Un autre aspect important du langage ERLANG est son m canisme de distribution bas sur TCP IP Les processus peuvent inter agir entre eux sur plusieurs machines physiques ou sur la m me machine en ex cutant diff rents syst mes ERLANG Le syst me ERLANG offre plusieurs fonctions pr d finies appel es les BIF Built In Functions qui permettent d tendre le langage pour des op rations non disponibles directement dans le langage 37 Chapitre2 Caml Light concurrent Dans un environnement de d veloppement et la mani re du langage LISP ou PROLOG les fonctions sont valu es dans le shell du syst me ERLANG C est un interpr teur de commandes interactif qui permet un utilisateur de charger compiler et valuer des expressions Il permet aussi d inspecter l tat du syst me Les programmes peuvent aussi tre compil s pour obteni
66. r ces deux paradigmes ou mod les n cessaires la mobilit et qui sont la concurrence et la distribution Le langage Caml light tant typiquement s quentiel Tous nos efforts seront donc consacr s 3 points le choix du bon langage le choix du bon mod le de concurrence et le choix du bon mod le de distribution tout en ayant l esprit la mobilit comme objectif ultime La d marche que nous avons adopt e pour aborder le probl me de la mobilit du code est compos e de cinq parties 1 L tude des travaux ant rieurs concernant la mobilit du code 2 Choix du langage et donc aussi d un paradigme adapt et tendre vers une mobilit Proposition d un mod le de concurrence et donc d un Caml Light concurrent 4 Proposition d un mod le de distribution proche de celui de la concurrence pour garder une certaine homog n it dans le langage et donc d un Caml Light distribu 5 Sp cification de m canismes pour la migration de processus pour aller vers une mobilit dans Caml light C est dire nous allons op rer par phases successives Il faut quand m me dire que ceci n est qu une tape pr liminaire car l impl mentation r elle de tous ces m canismes justifiera les d cisions prises Le r sultat de notre contribution se pr sente donc sous la forme d extensions du langage Caml light travers de nouvelles primitives primitives de haut niveau c est a dire un support di
67. r des ex cutables qui peuvent tre lanc s sur des environnements depuis les PC jusqu aux syst mes embarqu s 2 7 1 Types de donn es Les variables ERLANG sont dynamiquement typ es et n ont pas besoin d tre d clar es Une variable est initialis e lors de sa cr ation et ne peut plus tre modifi e c est un langage affectation unique ERLANG poss de les types de donn es suivants e Les constantes o Num riques entiers et r els o Atomes abc bonjour_tout le monde e Les types de donn es compos s o Les tuples similaires aux enregistrements et structures dans d autres langages conventionnels a 12 b 1 2 3 o Les listes a 12 b 1 2 0 3 comme les listes de LISP Une valeur peut tre stock e dans une variable X livre pr face remerciements contenu chapitres Chapitre 1 introduction Chapitre 2 1 38 Chapitre2 Caml Light concurrent 2 7 2 Les fonctions et les modules Un programme ERLANG consiste en un ensemble de modules o chaque module d fini un certain nombre de fonctions Un module est identifi par son nom atome alors qu une fonction dans un module est identifi e par son nom atome et son arit Pour chaque module seulement les fonctions explicitement d clar es exportables peuvent tre accessibles depuis d autres modules les autres sont implicitement locales Voici un exemple d un mo
68. ra ces deux termes vont donner naissance a deux types de mobilit qu on discutera par la suite Une fois sur le site de destination ce code mobile peut accomplir quelques taches prescrites Le mod le du code mobile est proche de celui de REV dans le sens ot l initiateur d tient le code des op rations effectuer et l envoie pour ex cution sur un site distant La diff rence r side dans l asynchronisme des interactions entre les deux sites Une fois migr sur un site distant un code mobile devient une entit autonome qui peut suivant l ex cution du code se d placer encore vers un autre site accumuler des r sultats communiquer avec d autres codes mobiles signaler un v nement sans qu aucune connexion permanente soit maintenue avec le site initial Donc la diff rence fondamentale avec les autres types de migration comme avec le cas de REV est L objectif de d placement L information d plac e L initiateur du d placement Dans les autres types de migration l objectif tait surtout d optimiser l utilisation des ressources r parties en cachant la distribution aux applications La d cision initiateur est prise par le syst me d exploitation la migration est ainsi transparente c est le syst me qui d cide du processus migrer et de sa destination Alors que dans le code mobile l objectif est de naviguer en fonction de l application d tendre des fonctionnali
69. rammation concurrente A cette fin quelques primitives simples de concurrence ont t ajout es Caml Light en utilisant le style de ERLANG qui supporte la concurrence et l change de messages asynchrone Quelques exemples sont donn s pour montrer l utilisation des primitives que nous avons ajout es Caml Light Ce mod le que nous pensons tr s naturel sera aussi utilis pour la distribution 42 Chapitre3 Caml Light distribu Chapitre 3 Caml Light distribu 43 Chapitre3 Caml Light distribu Dans ce chapitre nous allons introduire les primitives propos es pour une extension du langage Caml Light pour la distribution que nous allons utiliser pour crire des programmes distribu s D abord il est n cessaire de d finir ce que c est qu un syst me distribu Nous ne donnerons ici qu une vue globale de la distribution le lecteur int ress par ce sujet pourra consulter Tane92 3 1 D finitions On parle souvent de e syst mes concurrents e syst mes parall les e syst mes distribu s Nous allons tenter d expliquer tr s bri vement chacun des termes suivants malgr l inexistence d un v ritable consensus N anmoins il y a quelques points communs entre ces diff rents syst mes qui se partagent aussi souvent le m me genre de probl mes partage de ressources coordination Des fois ils peuvent m me tre entrem l s comme avoir une programmation concurrent
70. rect au niveau langage d abord pour la concurrence et la distribution C est aussi une contribution au d veloppement hors INRIA INRIA du langage Caml choisi pour l extension cit e et qui devient de plus en plus populaire dans Introduction g n rale les milieux universitaires et commence attirer de mani re s rieuse la communaut industrielle en Europe et aussi aux Etats Unis Structure de la th se Le reste de la th se est organis comme suit Le chapitre 1 est consacr la description du langage Caml Light Il ne s agit pas d un manuel de langage bien s r mais il s agit juste de pr senter les caract ristiques essentielles et importantes et qui serviront la justification d une extension de ce langage Le chapitre 2 d crit le mod le choisi pour la concurrence et montre comment les op rations asynchrones peuvent tre utilis es pour impl menter les m canismes de communication entre processus Un Caml Light concurrent sera alors propos Mera09c Dans ce chapitre aussi nous pr sentons de mani re br ve les caract ristiques essentielles du langage ERLANG duquel nous avons emprunt quelques concepts Nous avons vu n cessaire de lui donner de l importance par cette pr sentation Le chapitre 3 est d di la distribution o nous allons montrer que le choix du mod le de concurrence peut tre tendu et largi pour avoir un langage Caml Light distribu Mera09
71. s pour la mobilit c est dire qui poss de des propri t s que nous jugeons favorables pour la mobilit L id al serait de recommencer z ro c est dire tablir un cahier de charges de mobilit tr s complet et d finir un nouveau langage de programmation qui supporte entre autres la mobilit Mais les inconv nients de cette d marche ne manquent pas Le temps n cessaire la conception d un nouveau langage et comment assurer son utilisation par la communaut des programmeurs Il n existe pas de d finition pr cise ou du moins une d finition de la mobilit accept e partout Est ce que la mobilit est une n cessit absolue pour lui consacrer tout cet effort et tout ce temps surtout si l on consulte le fameux article de Giovanni Vigna Vign04 un des fondateurs de la mobilit o il avance dix raisons pour l chec des agents mobiles Introduction g n rale Nous avons pens apr s un bout de temps assez important qu il serait judicieux de supporter la mobilit au dessus d un langage existant et qui va faciliter le support de la mobilit bien s r ce langage doit b n ficier d une large utilisation Nous avons choisi le langage Caml Light une version l g re et portable du langage Caml pour les raisons qui seront justifi es tout au long de cette th se Caml Light est donc notre candidat pour une extension vers la mobilit Alors notre extension devra d abord supporte
72. t fichier auto _ etats _ finis ml let lancer _aef spawn_ process etatli let etatl receive message with a gt etat2 Cc etat3 end let etat2 receive_message with e gt tat3 g gt etat4 end let etat3 receive_message with b gt etatl etat2 end let etat4 receive_message with d etat3 end fichier auto_etats_finis mli value lancer_aef unit int Une utilisation fichier utilisation ml open auto_etats_finis let p ref 0 p lancer_aef send_message p a send_message p f 36 Chapitre2 Caml Light concurrent 2 7 ERLANG ERLANG du nom d un math maticien Danois Agner Krarup Erlang 1878 1929 est un langage de programmation fonctionnelle d velopp par Joe Armstrong Robert Virding Claes Wikstr m et Mike Williams dans le laboratoire d informatique d Ericsson Bark99 Le langage ERLANG est d di la programmation d applications industrielles surtout dans le domaine des t l communications d pendantes de caract ristiques comme la tol rance aux pannes la concurrence la distribution et le temps r el Arms07 ERLANG est d abord un langage de programmation fonctionnelle o un programme est compos de plusieurs fonctions stock es dans des modules Les fonctions peuvent s ex cuter de mani re concurrente dans des processus l gers threads et communi
73. t n gt fib n 1 fib n 2 Pour la suite de Fibonacci Ou bien dans 13 Chapitrel Le langage Caml Light let implique v match v with true true true true false false false true true false false l true Pour d finir la fonction d implication logique implique avec v comme argument deux bool ens et retournant un bool en 1 7 Les programmes Un programme est une expression Son ex cution est l valuation de cette expression En Caml Light on n crit pas une suite d instructions mais on nomme des expressions avec Let comme avec let rec fact n if n 0 then 1 else n fact n 1 Un programme est donc une suite de phrases d finition de valeur let x e d finition de fonction let f x1 xn e d finition de fonctions let rec f1 xl el mutuellement r cursives and fn xn en d finition de type s type q1 tl and qn tn expression e Les phrases se terminent par qui sont optionnels entre des d clarations mais obligatoires sinon 14 Chapitrel Le langage Caml Light 1 8 Les modules Les modules permettent de d couper un programme en parties compilables s par ment de structurer un programme pour le rendre compr hensible de sp cifier des liens interfaces entre les modules pour la maintenance Dans ce contexte Caml Light offre un syst me de modules tr s riche q
74. t s ou de supporter des op rations d connect es La d cision est prise par l application elle m me c est dire l agent ou le code mobile 58 Chapitre4 Vers un Caml Light mobile d cide du moment et du lieu de destination C est un m canisme puissant mais de mise en uvre tr s complexe en raison des probl mes d h t rog n it mat rielle et logicielle et de difficult de capture de l tat d ex cution lorsqu il s agit surtout d une mobilit forte plus loin Enfin on peut dire qu un code mobile est constitu d un code ex cutable l algorithme ou le savoir faire et d un tat Cet tat est lui aussi divis en deux parties un tat des donn es donn es initiales variables globales qui accompagnent le code mobile sp cifi es par le programmeur et un tat ou contexte d ex cution contenu des variables locales des entit s actives En plus l tat d ex cution renferme des informations de contr le en particulier o la valeur du pointeur d instruction o la valeur des points de retour aux proc dures appelantes On distingue deux types de mobilit Code faiblement mobile Code fortement mobile selon la nature de l information d plac e 4 3 2 Mobilit faible et mobilit forte 4 3 2 1 Mobilit faible Lorsqu il y a migration du code de l unit d ex cution de l tat des donn es Simulation de la migration
75. t send message self de a b loop de produit a b gt send message self de a b loop de _ gt send_message self de erreur_ loop end fichier serveur_cal mli value lancer unit int value evaluer int int int Les fonctions rpc et loop sont cach es l int rieur du module serveur_cal Un module client n a besoin que de deux fonctions la fonction lancer pour cr er le serveur et la fonction evaluer pour effectuer ses calculs Ce module se pr sente comme suit 34 Chapitre2 Caml Light concurrent fichier un_client ml open serveur_cal let p ref 0 p lancer evaluer p somme 5 3 evaluer p produit 4 9 2 6 2 Un automate tats finis Dans cet exemple on veut montrer comment les primitives de concurrence peuvent tre exploit es d autres fins comme la primitive receive _ message La figure suivante montre un automate tats finis EAF avec quatre tats tat1 tat2 tat3 tat4 et plusieurs transitions et les v nements qui les produisent a b c d e f g On va repr senter chaque tat par une fonction Caml Light et chaque v nement par un message La primitive receive message sera utilis e pour accepter les v nements ou les messages Le code en Caml Light tendu qui simule le comportement d un automate tats finis est le suivant 35 Chapitre2 Caml Light concurren
76. te et int ressante Marz07 appliqu e Java pourra tre utilis e dans le cas de Caml Light et qui consiste en la transformation d un code mobile en un objet s rialisable Cette approche a t con ue pour tre totalement transparente au programmeur et ind pendante de toute plateforme 4 5 1 2 H t rog n it Une approche interpr t e peut supporter l ex cution dans un environnement de machines h t rog nes en fournissant un interpr teur au niveau de chaque plateforme engag e Caml Light tait con u d s le d part avec cette notion de portabilit Son compilateur partir de programmes sources crite en Caml Light g n re un code interm diaire bytecode avec une bonne utilisation m moire ind pendant de toute plateforme et destin une machine virtuelle machine pile Donc il est possible de diffuser l interpr teur crit en langage C de cette machine virtuelle pour chaque type de 66 Chapitre4 Vers un Caml Light mobile plateforme disponible dans le r seau On peut consid rer que cette propri t indispensable Vh t rog n it est satisfaite avant m me de r fl chir l id e de rendre Caml light mobile Certes l interpr teur de la machine virtuelle devra subir des modifications pour accepter des codes mobiles 4 5 1 3 Performance L approche pr c dente c est dire le code source de haut niveau est compil en code source interm diaire de bas niveau p
77. ter les codes mobiles re us 4 4 1 2 H t rog n it Les syst mes distribu s sont caract ris s par l h t rog n it des architectures des machines et des syst mes d exploitation Il est relativement facile d ex cuter des codes mobiles sur des plateformes homog nes mais ils ne seront ni g n rales ni r alistes pour des applications distribu es Aussi il n est pas pratique de cr er une version sp cifique du code pour chaque type d architecture L ex cution du code mobile doit donc tre possible sur diff rentes plateformes avec diff rents syst mes d exploitation et diff rentes architectures 62 Chapitre4 Vers un Caml Light mobile 4 4 1 3 Performance L impl mentation d un langage mobile doit prendre en consid ration la taille du code mobile son temps de migration le temps de sa conversion en une forme pour la migration tous ces co ts doivent tre r duits au minimum Mais ces exigences d pendent du type d application et il n est pas possible de juger la performance juste par la technique employ e par l impl mentation Il faut donc des codes mobiles benchmarks programmes de tests pour valuer r ellement les performances d un langage mobile 44 2 Propri t s souhaitables 4 4 2 1 Typage fort Rappelons que le typage fort indique que tous les types sont connus a la compilation afin d viter la majorit des erreurs ayant traits aux types Les avantages du typ
78. tion un langage mobile doit avoir les propri t s indispensables Knab96 a la r alisation de la mobilit En plus de ces propri t s indispensables un langage mobile peut avoir supporter d autres propri t s dites souhaitables ou d sirables Knab96 D autres propri t s plus ou moins proches de celles tudi es par Knabe sont pr sent es dans Thor97 et Cugo98 Nous allons d abord discuter les propri t s indispensables et qui sont 61 Chapitre4 Vers un Caml Light mobile Support pour la manipulation de code Support de l h t rog n it des architectures des ordinateurs Une performance acceptable Puis nous allons aussi discuter quelques propri t s souhaitables dans les langages mobiles et qui sont Typage fort Gestion automatique de la m moire S curit Par la suite dans la section suivante on va essayer de satisfaire ces exigences indispensables et souhaitables dans le langage Caml Light afin de montrer que ce langage peut tre un bon point de d part pour le support du paradigme de mobilit 44 1 Propri t s indispensables 4 4 1 1 Manipulation de code Le langage mobile doit offrir un support de base pour la manipulation de code c est dire il doit offrir des primitives ou des fonctions de la librairie avec les quelles le programmeur exprime la transmission ou la migration d un code L environnement ex cutif du langage doit tre capable d ex cu
79. u code des programmes crits dans les langages fonctionnels Les avantages de la programmation fonctionnelle sont de plus en plus vidents surtout dans le domaine de la validation des programmes Gilm97 encore lorsque les programmes sont ex cut s dans d autres environnements comme c est le cas des sites de destination du code mobile Caml Light est statiquement typ donc tr s s r de nombreuses erreurs de programmation deviennent ainsi impossibles Il offre une gestion automatique de la m moire on obtient ainsi une programmation bien plus s re puisqu il n y a jamais de corruption inattendue des structures de donn es manipul es Caml Light est portable son compilateur produit du bytecode ind pendant de toute plateforme une propri t essentielle et n cessaire a la distribution et la mobilit a cause de l h t rog n it des plateformes Dans ce sens Caml Light est dot d une machine virtuelle qui ex cute les programmes g n r s par le compilateur L interpr teur de la machine virtuelle est crit en langage C 18 Chapitrel Le langage Caml Light Caml Light est l ger le code bytecode g n r par le compilateur est tr s compact ce qui est tr s important pour la migration du code et qui permet de r duire le temps de chargement Aussi sa machine virtuelle occupe tr s peu d espace 200 Ko pour un interpr teur minimal ce qui permet de lancer plusieurs machines virtuel
80. ud repr sente une instance d une machine virtuelle Caml Light avec son propre espace d adressage et son propre jeu de processus On peut consid rer un n ud comme un microsyst me d exploitation pour les processus dans le langage Caml light tendu Chaque processus s ex cute dans un n ud particulier et une fois qu il est cr il reste sur ce n ud Plusieurs n uds peuvent tre situ s sur un m me ordinateur ou sur plusieurs ordinateurs dans un r seau Le nom d un n ud est de la forme Name host un nom Name et un h te host c est dire le nom de la machine sur laquelle s ex cute le n ud typiquement un nom de domaine Internet s par s par le caract re La fonction node permet de retourner le nom d un n ud Supposons que le n ud nd est en cours d ex cution sur la machine kamel univ khenchela dz le nom complet du n ud nd sera ndl kamel univ khenchela dz sera retourn par node Le programmeur n a pas initialiser les connexions entre les n uds Elles sont faites par le syst me ex cutif quand un n ud pour la premi re fois est r f renc par un autre n ud 3 3 2 Authentication indication d impl mentation La cr ation de n uds engage quelques aspects de s curit qui ne sont que partiellement g r s par l environnement d ex cution L acc s un n ud ou un ensemble de n uds est s curis par un syst me de cookies Yang06 Chaque n ud poss de un seul c
81. ui permet de controler la visibilit des champs en cachant certaines d finitions de valeurs ou de types Un module M se compose de deux fichiers un fichier d impl mentation code m ml une suite de phrases un fichier d interface optionnel m mli une suite de sp cifications valeurs types Un autre module N peut faire r f rence M en utilisant la notation M x notation point e Module Composante ou bien en faisant open M Les modules peuvent aussi tre param tr s g n ricit 1 9 Aspects imp ratifs dans Caml Light 1 9 1 R f rences Avec Caml light une variable li e une valeur est condamn e garder cette valeur le long de sa vie C est le cas bien s r des variables math matiques Une possibilit est quand m me offerte par ce langage pour modifier les valeurs c est le cas des r f rences Une r f rence est vue comme un pointeur vers une valeur quelconque On construit une r f rence une valeur en utilisant la fonction ref L op rateur d r f rencement permet d atteindre la valeur r f renc e et affectation permet la modification de la valeur de la r f rence comme dans l exemple suivant 15 Chapitrel Le langage Caml Light let x ref 0O x LE Oe 1 9 2 Les structures de contr le for nom expr to expr do expr done for nom expr downto expr do expr done while expr do expr done 1 9 3 Les entr es sorties
82. uipe pluridisciplinaire depuis les langages jusqu la mobilit en passant par les paradigmes de concurrence et de distribution Et pour conclure on peut avancer que les codes mobiles vont certainement donner une autre importance aux applications distribu es et nous croyons que le potentiel de cette technologie est en cours de reconnaissance et que ces codes mobiles seront de plus en plus disponibles sur Internet dans les ann es venir D autre part aussi Les langages utilisant les communications asynchrones commencent prendre aussi de l ampleur et connaissent aujourd hui un regain d int r t dans le contexte des applications r parties sur Internet En effet on s accorde penser que les mod les de communication asynchrones sont mieux adapt s que les mod les synchrones de type client serveur pour g rer les interactions entre syst mes faiblement coupl s M me les langages orient s objet ne font pas exception comme c est le cas de Proactive Proa et de Joram Java Open Reliable Asynchronous Messaging Balt07 tous les deux base de Java Nous pensons que cette utilisation va augmenter avec l mergence croissante d applications distribu es La contribution de cette th se s efforce aussi pour une compr hension de ce th me 72 Bibliographie Bibliographie Les r f rences bibliographiques sont ordonn es par ordre alphab tique des quatre premiers caract res du nom de l auteur princi
83. um ro p p n Compteurtl Message processus Compteur t1 end Dans le module exemple la fonction processus utilise l instruction receive avec deux clauses pour recevoir ou accepter des messages Si le message re u est stop le processus affiche le message le processus se termine et s arr te Si le message re u n est pas stop alors il est affect la variable Message et le contenu et le num ro de ce message sont affich s Dans ce cas la fonction processus se r appelle en incr mentant le compteur pour se mettre en attente d autres messages provenant d autres processus 2 7 5 Conclusion sur ERLANG On peut dire que le langage ERLANG a t d velopp d s le d part comme tant langage orient e concurrence Les primitives de concurrence font partie int grante du langage Il a t con u pour g rer un nombre important de processus simultan s Actuellement ERLANG on peut se permettre aussi de dire ERicsson LANGuage est 41 Chapitre2 Caml Light concurrent utilis dans plusieurs types d applications comme les t l communications et les applications temps r el ERLANG est en open source depuis quelque temps il fonctionne sur UNIX Microsoft Windows et sur les syst mes embarqu s Il peut tre utilis en mode interpr t ou en mode natif 2 8 Conclusion Nous avons d crit la conception d une extension du langage Caml Light avec le support de la prog
84. urrency PhD Thesis Department of Computer Science Cornell University Ithaca NY 14853 1992 K Sagonas D Luna Gradual Typing of Erlang Programs A Wrangler Experience in Seventh ACM SIGPLAN Erlang Workshop Victoria British Colombia Canada September 27 2008 78 Bibliographie Scho95 Stam90 Sun95 Tane02 Thor97 Vign04 Whit96 Yang06 E Scholz Four Concurrency Primitives for Haskell Haskell Workshop June 25 1995 La Jolla California J W Stamos and D K Gifford Remote Evaluation ACM Transactions on Programming Languages and Systems 12 4 537 565 October 1990 Sun Microsystems The Java Language Specification October 1995 Andrew S Tanenbaum and Marten van Steen Distributed Systems Principles and Paradigms Prentice Hall 2002 Tommy Thorn Programming languages for mobile code ACM Computing Surveys 29 3 213 239 Sept 1997 Giovanni Vigna Mobile Agents Ten Reasons For Failure Proceedings of the 2004 IEEE International Conference on Mobile Data Management MDM 04 J White Telescript Technology Mobile Agents In J Bradshaw editor Software Agents AAAI Press MIT Press 1996 J Yang K H Rhee A New Design for a Practical Secure Cookies System Journal Of Information Science And Engineering 22 559 571 2006 79
85. ution puisse reprendre au point o elle a t arr t e Les codes mobiles ou agents mobiles comme on les appelle des fois sont essentiellement utilis s dans les applications distribu es dans des r seaux car ils permettent de minimiser les co ts de communication en se d pla ant vers les sites disposant des ressources n cessaires La mobilit est aussi exploit e dans un contexte de calcul important des fins d quilibrage de charge ou de tol rance aux pannes Actuellement le paradigme le plus populaire pour concevoir des applications distribu es est le mod le client serveur Il est notamment utilis comme base dans les environnements CORBA OMG95 et Java Sun95 travers un m canisme d invocation d objet distance Mais il ne suffit pas simplement de d placer des objets comme dans RMI ou CORBA ou de d placer uniquement du code comme avec les applets Java La mobilit qui consiste d placer le code d une application et son contexte d ex cution d une machine une autre afin d effectuer ses t ches est difficile implanter Elle pose des probl mes d licats d h t rog n it de plateformes de captures et de restaurations de l tat d ex cution et des probl mes de s curit Par exemple il est tr s difficile de contr ler le comportement des codes mobiles cause de leur migration une fois sur les sites de destination Les langages du code mobile utilisent la programmation distante
Download Pdf Manuals
Related Search
Related Contents
II RB5 Detection - Annar Diagnóstica Import Cobra Electronics 200GTL DX Portable Radio User Manual Husqvarna 55C21HV Lawn Mower User Manual User Manual HT Rugasol®-200 Adding Rich Text Using The Editor - Mo 09IP12566 GMT180SAAL IB mech.indd 2014年9月号(Vol.246) PDF形式 9.1Mbyte Copyright © All rights reserved.
Failed to retrieve file