(These.cwk)
52 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
52 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

Chapitre 5JuniorLes SugarCubes ont donné naissance à d’autres implémentations de l’ Approche Réactive au-dessus de Java. Certaines de ces implémentations cherchent à améliorer les capacités de traitement des systèmes réactifs ainsi créés, gérant un grand nombre (plusieurs milliers) de composants parallèles, en particulier, lorsque ces composants communiquent entre eux en utilisant un grand nombre (plusieurs centaines) d’événements diffusés différents. Cependant, la complexité relative de ces implémentations nous a poussés à développer un certain nombre d’outils pour les étudier dans un cadre formel. Ce chapitre présente l’effort de formalisation qui a été mené pour donner une sémantique précise aux principales primitives de l’ Approche Réactive au-dessus de Java. Cette sémantique formalisée par un ensemble de règles de réécriture, constitue une référence, nous permettant d’analyser ces différentes implémentations.Afin de mener à bien cette étude formelle, nous avons dégagé un noyau de primitives caractéristiques de l’Approche Réactive. Cet ensemble de primitives constitue un nouveau formalisme, appelé Junior. Ce chapitre reprend et étend un rapport de recherche [BHS1]. La création de ce nouveau formalisme, directement inspiré des SugarCubes, a pour but de réduire le nombre de primitives à analyser et de former un socle commun à l’ensemble des implémentations de l’ Approche Réactive au-dessus de Java. Junior reprend donc les principes qui ont servi de base ...

Sujets

Informations

Publié par
Nombre de lectures 33
Langue Français

Extrait

Chapitre 5
Junior
Les SugarCubes ont donné naissance à d’autres implémentations de l’ Approche Réactive au-dessus de
Java. Certaines de ces implémentations cherchent à améliorer les capacités de traitement des systèmes
réactifs ainsi créés, gérant un grand nombre (plusieurs milliers) de composants parallèles, en particulier,
lorsque ces composants communiquent entre eux en utilisant un grand nombre (plusieurs centaines)
d’événements diffusés différents. Cependant, la complexité relative de ces implémentations nous a
poussés à développer un certain nombre d’outils pour les étudier dans un cadre formel. Ce chapitre
présente l’effort de formalisation qui a été mené pour donner une sémantique précise aux principales
primitives de l’ Approche Réactive au-dessus de Java. Cette sémantique formalisée par un ensemble de
règles de réécriture, constitue une référence, nous permettant d’analyser ces différentes implémentations.
Afin de mener à bien cette étude formelle, nous avons dégagé un noyau de primitives caractéristiques
de l’Approche Réactive. Cet ensemble de primitives constitue un nouveau formalisme, appelé Junior. Ce
chapitre reprend et étend un rapport de recherche [BHS1]. La création de ce nouveau formalisme,
directement inspiré des SugarCubes, a pour but de réduire le nombre de primitives à analyser et de former
un socle commun à l’ensemble des implémentations de l’ Approche Réactive au-dessus de Java. Junior
reprend donc les principes qui ont servi de base au développement de la première version des
SugarCubes. Ainsi, les deux formalismes sont très proches. En particulier, Junior offre un style de
programmation impératif où les primitives sont pour la plupart similaires à celles des SugarCubes. Cet
ensemble relativement réduit d’opérateurs réactifs nous a permis de proposer un système de règles de
sémantique formelle assez simple exprimé sous la forme de règles de sémantique opérationnelle
structurelle (SOS).
Nous allons présenter les motivations qui ont présidé à la définition du noyau Junior. Puis, nous
posons la définition de ce formalisme. Nous décrivons alors la sémantique des primitives réactives de ce
noyau sous la forme de règles de réécriture en dégageant un premier formalisme de référence que nous
appelons REWRITE. Nous discutons des problèmes d’efficacité soulevés par une implémentation directe
de ce formalisme. Ceci nous permet d’introduire un second formalisme appelé REPLACE, dont
l’implémentation directe s’avère plus efficace. Enfin, nous présentons les différentes implémentations que
nous avons réalisées, chacune de ces implémentations représentant une étape intermédiaire entre
l’idirecte de la sémantique de référence relativement peu efficace et l’implémentation la
plus efficace, appelée Simple et réalisée par L. Hazard de FT R&D.
5.1 Motivations
L’origine du développement du noyau Junior est à rechercher dans les limitations décrites au
chapitre 3, révélées par la première implémentation des SugarCubes. En particulier, le développement de
Junior vise à proposer une sémantique de référence de chaque primitive, afin d’analyser des
implémentations plus efficaces de l’ Approche Réactive. On peut donc ordonner les motivations à l’origine 102 Chapitre 5 : Junior
de Junior autour de 4 grands axes :
• Approche sémantique. Les travaux autour de Junior ont été menés afin de donner une
sémantique formelle à l’ Approche Réactive au-dessus de Java. Il s’agit plus précisément de définir
un ensemble de règles décrivant formellement les opérateurs primitifs. Ces règles et
l’implémentation qui en découle directement constituent une référence qui nous permet de discuter
la validité des autres formalismes et/ou implémentations.
• Gestion efficace des événements. Junior a également pour objectif d’analyser des
implémentations efficaces de la gestion des événements diffusés instantanément. Pour cela Junior
définit à partir de sa sémantique de référence, un certain nombre d’étapes intermédiaires permettant
d’augmenter la compréhension et le “ degré de confiance” que l’on peut avoir dans des
implémentations optimisées du réactif (en général très éloignées d’une implémentation directe des
règles). La formalisation de ces techniques d’implémentation efficaces n’est pas évidente et Junior
propose donc une évolution progressive vers les techniques les plus efficaces en essayant de
maximiser à chaque étape la compréhension que l’on peut avoir de ces implémentations.
• Étude du parallélisme réactif. L’implémentation Simple réalisée par L. Hazard s’avère
particulièrement efficace en termes de traitement d’un grand nombre de composants parallèles
communiquant par un grand nombre d’événements diffusés différents. Cependant, cette
implémentation que nous décrivons en 5.4.3, se révèle incompatible avec l’opérateur Merge utilisé
dans les SugarCubes. En fait, l’opérateur de parallélisme implémenté par Simple adopte un choix
différent de celui d’un opérateur Merge. Junior se propose d’unifier ces choix différents en
définissant un nouvel opérate ur Par.
• Prise en compte du parallélisme physique. L’approche sémantique a également pour but de
formaliser et d’unifier le parallélisme physique d’une architecture réactive distribuée et le
parallélisme réactif exprimé dans un programme. Le modèle des machines réactives
distribuées[BHS2], développé autour des SugarCubes, décrit des systèmes réactifs physiquement
distribués au moyen de machines réactives synchronisées à travers le réseau. Si le parallélisme au
sein d’une machine ne pose pas de problème particulier et peut être décrit simplement et sans
ambiguïtés à partir de l’opérateur Merge, il n’en va pas de même lorsqu’il s’agit de donner une
signification au parallélisme entre deux composants exécutés sur deux machines différentes : ce
parallélisme physique, non déterministe par nature n’étant, à l’évidence, pas compatible avec le
déterminisme de l’opérate ur Merge. C ette expérience est décrite au chapitre 7.
5.2 Définition
À l’image des SugarCubes dont il hérite ses principales caractéristiques, Junior est un ensemble de
classes Java permettant d’implémenter des systèmes réactifs. Les classes Junior définissent des
primitives réactives permettant d’écrire un programme réactif dans un style impératif “ à la” SugarCubes.
Ces instructions réactives sont exécutées par des machines d’exécution. Les machines d’exécution sont
des objets capables d’accepter dynamiquement de nouveaux comportements en parallèle.
Cependant, Junior se démarque des SugarCubes par un certain nombre de points :
• Utilisation de l’opérateur primitif de parallélisme Par au lieu de Merge. Junior introduit
l’opérateur non déterministe Par afin de prendre en compte une variété plus grande de parallélisme
primitif : (i)choix déterministes différents, (ii)choix non déterministe, (iii)parallélisme physique …
L’opérateur Merge se présente alors comme un descendant particulier de l’opérateur Par , dans
lequel le choix non déterministe de l’ordre d’exécution des branches est remplacé par un ordre
déterministe figé.
• Gel d’instruction. Junior propose un mécanisme de gel d’instruction différent de celui des
SugarCubes, en définissant une primitive avec une sémantique formelle ne nécessitant pas d’étape Chapitre 5 : Junior 103
supplémentaire inter-instants pour se réaliser. Ce mécanisme remplit néanmoins une fonction
similaire et peut donc être utilisé pour implémenter des mécanismes de migration de code à travers
le réseau sur des machines distantes ou de persistance par sauvegarde sur un support de stockage de
l’état d’avancement d’un programme.
• Absence des opérateurs Close/Suspend. Les opérateurs Close/Suspend hérités du langage
Reactive-C permettent un programmation fine de l’interleaving du parallélisme en contrôlant le
déroulement des micro-étapes d’exécution. Ces primitives de bas niveau peuvent s’avérer utiles
pour implémenter des strat

  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents