Continuation-Passing C : Transformations de programmes pour compiler la concurrence dans un langage impératif

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...

Full description

Bibliographic Details
Main Author: Kerneis, Gabriel
Language:ENG
Published: Université Paris-Diderot - Paris VII 2012
Subjects:
Online Access:http://tel.archives-ouvertes.fr/tel-00751444
http://tel.archives-ouvertes.fr/docs/00/75/14/44/PDF/kerneis-phd-thesis.pdf
http://tel.archives-ouvertes.fr/docs/00/75/14/44/ANNEX/slides-kerneis.pdf
id ndltd-CCSD-oai-tel.archives-ouvertes.fr-tel-00751444
record_format oai_dc
spelling ndltd-CCSD-oai-tel.archives-ouvertes.fr-tel-007514442013-01-07T16:30:57Z http://tel.archives-ouvertes.fr/tel-00751444 http://tel.archives-ouvertes.fr/docs/00/75/14/44/PDF/kerneis-phd-thesis.pdf http://tel.archives-ouvertes.fr/docs/00/75/14/44/ANNEX/slides-kerneis.pdf Continuation-Passing C : Transformations de programmes pour compiler la concurrence dans un langage impératif Kerneis, Gabriel [INFO:INFO_PL] Computer Science/Programming Languages Programmation concurrente Threads Compilation Programmation à événements Conversion en style par passage à la continuation (CPS) Lambda lifting 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. 2012-11-09 ENG PhD thesis Université Paris-Diderot - Paris VII
collection NDLTD
language ENG
sources NDLTD
topic [INFO:INFO_PL] Computer Science/Programming Languages
Programmation concurrente
Threads
Compilation
Programmation à événements
Conversion en style par passage à la continuation (CPS)
Lambda lifting
spellingShingle [INFO:INFO_PL] Computer Science/Programming Languages
Programmation concurrente
Threads
Compilation
Programmation à événements
Conversion en style par passage à la continuation (CPS)
Lambda lifting
Kerneis, Gabriel
Continuation-Passing C : Transformations de programmes pour compiler la concurrence dans un langage impératif
description 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.
author Kerneis, Gabriel
author_facet Kerneis, Gabriel
author_sort Kerneis, Gabriel
title Continuation-Passing C : Transformations de programmes pour compiler la concurrence dans un langage impératif
title_short Continuation-Passing C : Transformations de programmes pour compiler la concurrence dans un langage impératif
title_full Continuation-Passing C : Transformations de programmes pour compiler la concurrence dans un langage impératif
title_fullStr Continuation-Passing C : Transformations de programmes pour compiler la concurrence dans un langage impératif
title_full_unstemmed Continuation-Passing C : Transformations de programmes pour compiler la concurrence dans un langage impératif
title_sort continuation-passing c : transformations de programmes pour compiler la concurrence dans un langage impératif
publisher Université Paris-Diderot - Paris VII
publishDate 2012
url http://tel.archives-ouvertes.fr/tel-00751444
http://tel.archives-ouvertes.fr/docs/00/75/14/44/PDF/kerneis-phd-thesis.pdf
http://tel.archives-ouvertes.fr/docs/00/75/14/44/ANNEX/slides-kerneis.pdf
work_keys_str_mv AT kerneisgabriel continuationpassingctransformationsdeprogrammespourcompilerlaconcurrencedansunlangageimperatif
_version_ 1716394709893513216