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...
Main Author: | |
---|---|
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 |