
Execution support for multi-threaded active objects : design and implementation Justine Rochas To cite this version: Justine Rochas. Execution support for multi-threaded active objects : design and implementation. Other [cs.OH]. Université Côte d’Azur, 2016. English. NNT : 2016AZUR4062. tel-01441662 HAL Id: tel-01441662 https://tel.archives-ouvertes.fr/tel-01441662 Submitted on 20 Jan 2017 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. UNIVERSITE´ DE NICE SOPHIA ANTIPOLIS Ecole´ Doctorale STIC Sciences et Technologies de l’Information et de la Communication THESE` pour l’obtention du titre de Docteur en Sciences Mention Informatique pr´esent´eeet soutenue par Justine Rochas Execution Support for Multi-threaded Active Objects: Design and Implementation Th`esedirig´eepar Ludovic Henrio Soutenue le 22 Septembre 2016 Jury Rapporteurs Einar Broch Johnsen University of Oslo Lionel Seinturier Universit´ede Lille Examinateurs Florian Kammuller¨ Middlesex University London Johan Montagnat CNRS Fabrice Huet Universit´ede Nice Sophia Antipolis Directeur de th`ese Ludovic Henrio CNRS ii iii R´esum´e Pour aborder le d´eveloppement d’applications concurrentes et distribu´ees, le mod`ele de programmation `aobjets actifs procure une abstraction de haut niveau pour pro- grammer de fa¸con concurrente. Les objets actifs sont des entit´es ind´ependantes qui communiquent par messages asynchrones. Peu de syst`emes `aobjets actifs consid`erent actuellement une ex´ecution multi-thread´ee. Cependant, introduire un parall´elisme contrˆol´epermet d’´eviter les coˆuts induits par des appels de m´ethodes distants. Dans cette th`ese, nous nous int´eressons aux enjeux que pr´esentent les objets actifs multi-thread´es, et `ala coordination des threads pour ex´ecuter de fa¸con sˆure les tˆaches d’un objet actif en parall`ele. Nous enrichissons dans un premier temps le mod`ele de programmation, afin de contrˆoler l’ordonnancement interne des tˆaches. Puis nous exhibons son expressivit´ede deux fa¸cons diff´erentes: d’abord en d´eveloppant et en analysant les performances de plusieurs applications, puis en compilant un autre langage `aobjets actifs avec des primitives de synchroni- sation diff´erentes dans notre mod`ele de programmation. Aussi, nous rendons nos objets actifs multi-thread´es r´esilients dans un contexte distribu´een utilisant les paradigmes de programmation que nous avons d´evelopp´e. Enfin, nous d´eveloppons une application pair-`a-pair qui met en sc`ene des objets actifs multi-thread´es. Glob- alement, nous concevons un cadre de d´eveloppement et d’ex´ecution complet pour les applications hautes performances distribu´ees. Nous renfor¸cons notre mod`ele de programmation en formalisant nos contributions et les propri´et´es du mod`ele. Cela munit le programmeur de garanties fortes sur le comportement du mod`ele de programmation. iv Abstract In order to tackle the development of concurrent and distributed systems, the active object programming model provides a high-level abstraction to program concurrent behaviours. Active objects are independent entities that communicate by the mean of asynchronous messages. Compared to thread-based concurrent programming, active objects provide a better execution safety by preventing data races. There exists already a variety of active object frameworks targeted at a large range of application domains: modelling, verification, efficient execution. However, among these frameworks, very few of them consider a multi-threaded execution of active objects. Introducing a controlled parallelism within active objects enables overcoming some of their well-known limitations, like the impossibility of commu- nicating efficiently through shared-memory. In this thesis, we take interest in the challenges of having multiple threads inside an active object, and how to safely coordinate them for executing the tasks in parallel. We enhance this programming model by adding language constructs that control the internal scheduling of tasks. We then show its expressivity in two ways: first in a classical approach by developing and analysing the perfor- mance of several applications, and secondly, by compiling another active object programming language with different synchronisation primitives into our program- ming model. Also, we make multi-threaded active objects resilient in a distributed context through generic engineering constructs, and by using our programming abstractions. Finally, we develop a peer-to-peer application that shows multi- threaded active objects and their features in action. Overall, we design a flexible programming model and framework for the development of distributed and highly concurrent applications, and we provide it with a thorough support for efficient distributed execution. We reinforce our programming model by formalising our work and the model’s properties. This provides the programmer with guarantees on the behaviour of the programming model. Remerciements Merci `ames deux rapporteurs pour le temps qu’ils ont accord´e`ala compr´ehension de mes travaux, ainsi qu’aux membres de mon jury de soutenance. Merci `amon directeur de th`ese Ludo avec qui j’ai eu la chance de travailler en collaboration et qui a fait bien plus qu’une mission d’encadrement. Merci `aFabrice qui m’a pr´esent´ee `al’´equipe et qui a toujours su me conseiller dans toutes les facettes que cette th`ese a pu avoir. Merci `aOleksandra pour son support quotidien et son enthousiasme d´ebordant. Merci aux autres membres de l’´equipe, tout particuli`erement `aFabien, Fran¸coise et Eric´ avec qui j’ai pu passer d’agr´eables moments de tous les jours. Merci `ama collaboratrice Sophie et `aLaurent pour son aide pr´ecieuse `amon arriv´ee dans l’´equipe. Merci `aLudwig, mon plus fid`ele auditeur, avec qui j’ai la chance de partager mes int´erˆets professionnels et extra-professionnels. Merci `ames parents qui m’ont fait confiance pour en arriver l`aet `amon fr`ere toujours pr´esent pour nos sorties sportives et comp´etitives. Merci `amon maˆıtre de Taekwondo Pierre grˆace `aqui j’ai pu ponctuer mes semaines d’une ´evasion indispensable. Enfin, merci `atous mes professeurs de l’universit´ede Nice Sophia Antipolis qui m’ont donn´ele goˆut de l’informatique sous tous ses aspects. v vi Table of Contents List of Figures xi List of Listings xv List of Tables xvii 1 Introduction 1 1.1 Motivation................................... 1 1.2 Objectives................................... 3 1.3 Contributions................................. 4 1.4 Outline..................................... 6 2 Background and Related Works 9 2.1 The Active Object Programming Model: Origins and Context .... 10 2.2 A Classification of Active Object Languages . .. 13 2.2.1 ObjectModels ............................ 13 2.2.2 SchedulingModels.......................... 16 2.2.3 Transparency............................. 18 2.3 OverviewofActiveObjectLanguages . 21 2.3.1 Creol.................................. 22 2.3.2 JCoBox ................................ 23 2.3.3 ABS .................................. 25 2.3.4 ASPandProActive......................... 28 2.3.5 AmbientTalk ............................. 31 2.3.6 Encore................................. 33 2.3.7 ActorLanguagesandFrameworks . 35 vii viii TABLE OF CONTENTS 2.4 FocusonMulti-threadedActiveObjects . .. 39 2.4.1 MultiactiveObjectModel . 39 2.4.2 ImplementationinProActive . 41 2.4.3 MultiASP............................... 46 2.5 Determinism in Active Object Executions . .. 47 2.6 PositioningofthisThesis . 52 3 Request Scheduling for Multiactive Objects 57 3.1 Motivation................................... 58 3.2 ThreadingPolicy............................... 60 3.2.1 ThreadLimitperMultiactiveObject . 60 3.2.2 ThreadLimitperGroup . 63 3.3 RequestPriority ............................... 65 3.3.1 Principle ............................... 65 3.3.2 ProgrammingModel ........................ 66 3.3.3 Properties............................... 70 3.3.4 ImplementationandOptimisation . 73 3.4 SoftwareArchitecture ............................ 74 3.5 Evaluation................................... 77 3.5.1 ExperimentalEnvironmentandSetup . 77 3.5.2 HighPriorityRequestSpeedUp . 78 3.5.3 OverheadofPrioritisedExecution . 80 3.6 Conclusion................................... 85 4 From Modelling to Deployment of Active Objects 89 4.1 MotivationandChallenges . 90 4.2 Systematic Deployment of Cooperative Active Objects . ..... 92 4.2.1 AProActiveBackendforABS . 93 4.2.2 Evaluation ..............................105 4.3 Formalisation and Translation Correctness . .110 4.3.1 Recall ofABSand MultiASPSemantics. 110 4.3.2 Semantics of MultiASP Request Scheduling . 119 4.3.3 Translational Semantics and Restrictions . 122 TABLE OF CONTENTS ix 4.3.4 FormalisationofEquivalence . .126 4.4 TranslationFeedbackandInsights . 133 5 Execution Support for Multiactive Objects 139 5.1 Context: ProActive Technical Services . 140 5.2 ADebuggerforMultiactiveObjects . 142 5.2.1 Visualisation of Multiactive Object Notions . 143 5.2.2 IllustrativeUseCases. .148 5.3 A Fault Tolerance Protocol for
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages278 Page
-
File Size-