Conception et implémentation d'un langage de programmation concurrente modulaire
Auteur / Autrice : | Johan Grande |
Direction : | Manuel Serrano, Gérard Boudol |
Type : | Thèse de doctorat |
Discipline(s) : | Informatique |
Date : | Soutenance le 28/09/2015 |
Etablissement(s) : | Nice |
Ecole(s) doctorale(s) : | École doctorale Sciences et technologies de l'information et de la communication (Sophia Antipolis, Alpes-Maritimes) |
Partenaire(s) de recherche : | Laboratoire : Institut national de recherche en informatique et en automatique (France). Unité de recherche (Sophia Antipolis, Alpes-Maritimes) - Secure Diffuse Programming |
Jury : | Président / Présidente : Denis Caromel |
Examinateurs / Examinatrices : Manuel Serrano, Gérard Boudol, Denis Caromel, Emmanuel Chailloux, Theo D'Hondt, Jérôme Vouillon | |
Rapporteurs / Rapporteuses : Emmanuel Chailloux, Theo D'Hondt |
Résumé
La programmation concurrente à mémoire partagée est un modèle classique de concurrence qui permet notamment de tirer parti des processeurs multicoeurs aujourd'hui très répandus dans les ordinateurs personnels. Les programmes concurrents sont sujets au problème des interblocages, notoirement difficiles à prévoir et à éliminer, en particulier dans le cas de l'utilisation du mécanisme de synchronisation très populaire que sont les mutex. Dans cette thèse nous avons travaillé à rendre plus aisée la programmation avec des mutex en étudiant des méthodes d'évitement des interblocages. Nous avons d'abord étudié une méthode utilisant une analyse statique par un système de types et d'effets, puis une variante de cette méthode dans un langage à typage dynamique. La seconde méthode est celle que nous avons le plus développée. Elle combine prévention et évitement des interblocages pour fournir une fonction de verrouillage sans interblocages expressive et utilisable. Nous l'avons implémentée sous forme d'une bibliothèque Hop (dialecte de Scheme). Ce faisant, nous avons développé un algorithme sans famine pour l'acquisition simultanée d'un nombre arbitraire de mutex, et identifié le concept d'interblocage asymptotique. Nous avons également été amenés à proposer une optimisation des exceptions (blocs finally). Nos tests de performances semblent indiquer un impact négligeable de l'utilisation de notre bibliothèque sur des applications concurrentes réelles. La majeure partie de notre recherche pourrait être appliquée à d'autres langages de programmation structurée tels que Java.