Continuation-Passing C: Program Transformations for Compiling Concurrency in an Imperative Language

Résumé : La plupart des programmes informatiques sont concurrents : ils doivent effectuer plusieurs tâches en même temps. Les threads et les événements sont deux techniques usuelles d'implémentation de la concurrence. Les événements sont généralement plus légers et efficaces que les threads, mais aussi plus difficiles à utiliser. De plus, ils sont souvent trop limités ; il est alors nécessaire d'écrire du code hybride, encore plus complexe, utilisant à la fois des threads ordonnancés préemptivement et des événements ordonnancés coopérativement. Nous montrons dans cette thèse que des programmes concurrents écrits dans un style à threads sont traduisibles automatiquement en programmes à événements équivalents et efficaces par une suite de transformations source-source prouvées. Nous proposons d'abord Continuation-Passing C, une extension du langage C pour l'écriture de systèmes concurrents qui offre des threads très légers et unifiés (coopératifs et préemptifs). Les programmes CPC sont transformés par le traducteur CPC pour produire du code à événements séquentialisé efficace, utilisant des threads natifs pour les parties préemptives. Nous définissons et prouvons ensuite la correction de ces transformations, en particulier le lambda lifting et la conversion CPS, pour un langage impératif. Enfin, nous validons la conception et l'implémentation de CPC en le comparant à d'autres bibliothèques de threads et en exhibant notre seeder BitTorrent Hekate. Nous justifions aussi notre choix du lambda lifting en implémentant eCPC, une variante de CPC utilisant les environnements, et en comparant ses performances à celles de CPC.
Type de document :
Thèse
Programming Languages [cs.PL]. Université Paris-Diderot - Paris VII, 2012. English
Liste complète des métadonnées

https://tel.archives-ouvertes.fr/tel-00751444
Contributeur : Gabriel Kerneis <>
Soumis le : mardi 13 novembre 2012 - 14:32:49
Dernière modification le : vendredi 4 janvier 2019 - 17:32:59
Document(s) archivé(s) le : samedi 17 décembre 2016 - 10:09:38

Identifiants

  • HAL Id : tel-00751444, version 1

Collections

Citation

Gabriel Kerneis. Continuation-Passing C: Program Transformations for Compiling Concurrency in an Imperative Language. Programming Languages [cs.PL]. Université Paris-Diderot - Paris VII, 2012. English. 〈tel-00751444〉

Partager

Métriques

Consultations de la notice

325

Téléchargements de fichiers

543