Team COMPOSE

Members
Overall Objectives
Scientific Foundations
Application Domains
Software
New Results
Contracts and Grants with Industry
Other Grants and Activities
Dissemination
Bibliography
Inria / Raweb 2002
Project: COMPOSE

Project : compose

Section: New Results


Keywords : langage dédié , pilote de périphériques , réseaux actifs .

Langages dédiés et leur application aux systèmes d'exploitation

Participants : Charles Consel, Laurent Réveillère, Patrice Kadionik, Benoit Escrig, Dan He, Yaiyan Yu, Luciano Porto Barreto.


Langage dédié

langage qui permet d'exprimer des variations à l'intérieur d'un domaine ou d'une famille d'applications.

Réseau actif

architecture de réseau ouverte permettant une adaptation du comportement du réseau par téléchargement dynamique de nouveaux protocoles au sein des routeurs.


Les langages dédiés sont des langages restreints à un domaine ou une famille d'applications. Ils offrent un haut niveau d'abstraction sur le domaine considéré. Leurs avantages sont une programmation simplifiée, plus concise et plus rapide. Par ailleurs, les langages dédiés permettent la vérification statique de propriétés spécifiques au domaine considéré. Les langages dédiés permettent ainsi d'augmenter la qualité des programmes et la productivité des développements. Pour ces différentes raisons, les langages dédiés ouvrent des perspectives intéressantes pour le développement de systèmes d'exploitation. Au travers de plusieurs expérimentations, nous évaluons le bénéfice des langages dédiés dans le développement de systèmes.

Le développement de systèmes d'exploitation est reconnu comme une tâche complexe et sujette aux erreurs. Ainsi, il est fréquent de rencontrer de nombreux bugs dans les systèmes d'utilisation générale. Par ailleurs, dans des domaines comme les systèmes embarqués grand public, un court temps de développement est un facteur essentiel de succès commercial. En conséquence, développer du logiciel système fiable rapidement sans pour autant sacrifier la performance est un enjeu majeur pour de nombreux industriels.

Les langages dédiés sont des langages restreints à un domaine ou une famille d'applications. Ils offrent un haut niveau d'abstraction sur le domaine considéré. Leurs avantages sont une programmation simplifiée, plus concise et plus rapide. Par ailleurs, les langages dédiés permettent la vérification statique de propriétés spécifiques au domaine considéré. Les langages dédiés permettent ainsi d'augmenter la qualité des programmes et la productivité des développements. Pour ces différentes raisons, les langages dédiés ouvrent des perspectives intéressantes pour le développement de systèmes d'exploitation.

Nous avons proposé une méthodologie pour la conception de langages dédiés reposant sur une approche à deux niveaux . Le premier niveau consiste à identifier les objets et opérations fondamentales du domaine d'applications, de manière à former une machine abstraite. Le second niveau consiste en la conception du langage même. Un programme dans ce langage dédié est implémenté via un interprète à l'aide des opérations de la machine abstraite définie au premier niveau. Cette structure en couche est très flexible, mais pose a priori des problèmes de performance. Grâce à l'utilisation systématique de l'évaluation partielle, il est possible de supprimer le surcoût de l'interprétation .

Notre méthodologie a été principalement validée sur PLAN-P , un langage dédié pour l'écriture de protocoles dans les réseaux actifs (voir module  5.3), et Devil , un langage dédié pour l'écriture de pilotes de périphériques  5.4. Ces deux langages nous ont permis de mettre en évidence les avantages que l'on attribue généralement aux langages dédiés : productivité accrue, programmation de haut niveau grâce à une plus grande abstraction, vérifications formelles facilitées. À titre d'exemple, jusqu'à 6 fois plus d'erreurs sont détectées dans un pilote reposant sur Devil que dans un pilote équivalent écrit en C . Enfin, les programmes écrits dans ces deux langages sont aussi performants que des programmes équivalents écrits en C.

Distribution de flux vidéo au moyen de réseaux actifs

La distribution de flux vidéo est une classe d'applications de plus en plus importante (vidéo à la demande, enseignement à distance, jeux...). Toutefois, son implémentation reste un challenge en raison du besoin en bande passante, associé aux contraintes temps réel. Les solutions actuelles reposent sur des approches adaptatives qui permettent de répondre aux variations en bande passante tout en limitant les pertes en qualité visuelle. Cependant, la plupart des techniques d'adaptation actuelles sont limitées en extensibilité et ne tiennent pas compte de l'hétérogénéité des réseaux qui composent actuellement l'Internet.

Dans une architecture réseau reposant sur des routeurs programmables, ces derniers peuvent prendre des décisions à partir de l'observation de l'environnement. Comme la décision est locale, les routeurs peuvent réagir très rapidement à un changement de bande passante. De plus, une décision d'adaptation peut être spécifique à un segment réseau. Enfin, il est possible d'optimiser la politique d'adaptation en fonction de la structure du flux MPEG ou des caractéristiques du routeur. De ce fait, cette architecture est extensible et peut prendre en compte l'hétérogénéité du réseau.

Nous avons implémenté une politique d'adaptation consistant à dégrader le flux MPEG en supprimant prioritairement les trames les moins importantes (c.à.d., les trames B et P). Par comparaison avec une architecture reposant sur des routeurs standard, nos expérimentations ont montré que pour un réseau sans fil IEE802.11 très chargé, notre politique d'adaptation permet aux clients de recevoir et décoder jusqu'à 9 fois plus de trames MPEG .

Spécification et implémentation de politiques d'ordonnancement de processus

L'apparition constante de nouvelles applications couplée à l'utilisation de l'ordinateur sur des domaines spécifiques requièrent l'utilisation de politiques d'ordonnancement spécialisées. Par exemple, les applications multimédia ou celles employées dans le domaine des systèmes embarqués possèdent des contraintes de temps d'exécution et ont des besoins très spécifiques en termes de performance, temps de réponse, extensibilité et disponibilité. Toutefois, le développement d'un ordonnanceur soulève encore de nombreux problèmes. D'abord, le soucis de performance se traduit par un code fortement optimisé, ce qui augmente le risque d'introduire une erreur dans l'implémentation d'une politique d'ordonnancement. Or une telle faute peut avoir de sévères conséquences sur le fonctionnement du système tout entier. En outre, le manque d'outils de mise au point rend le processus de développement difficile et décourage l'expérimentation de nouvelles politiques dans des systèmes réels.

Pour faciliter la spécification et l'implémentation de politiques d'ordonnancement dans le noyau d'un système d'exploitation, nous proposons un cadre de développement nommé Bossa . Ce dernier s'articule autour de deux principaux axes : (i) un système d'exécution extensible pour l'implémentation d'ordonnanceurs et leurs intégrations dans le noyau du système cible, (ii) un langage dédié permettant un développement aisé de politiques d'ordonnancement.

Le support d'exécution propose une plate-forme logiciel reposant sur un modèle à événements permettant la spécification d'un ordonnanceur comme un ensemble de traitants d'événement. Ceci rend le code d'ordonnancement modulaire en séparant la politique du reste du noyau. Le langage dédié a pour but de faciliter l'implémentation de politiques d'ordonnancement en fournissant d'une part des abstractions de haut niveau plus proches du programmeur du domaine et d'autre part en rendant possible la vérification des politiques .

Nous avons utilisé Bossa pour implémenter des politiques telles que EDF (Earliest Deadline First), la politique d'ordonnancement de Linux, Stride et des extensions basées sur la notion de progrès d'une application. Bossa est disponible via le web à l'adresse http://compose.labri.fr/prototypes/bossa.


previous
next