Projet : COMPOSE

previous up next contents
Précédent : Langages dédiés et architectures logicielles Remonter : Résultats nouveaux Suivant : Contrats industriels (nationaux, européens et


   
Spécialisation de systèmes d'exploitation



Participants : Gilles Muller, Charles Consel, Laurent Bercot, Philippe Boinot, Rémi Douence, Scott Thibault.

Mots clés : optimisation de systèmes d'exploitation, systèmes distribués, RPC .

Glossaire :

Micro-noyau noyau de système minimal qui offre uniquement les notions d'espace d'adressage, de fil de contrôle et d'objet mémoire. Dans un système reposant sur un micro-noyau, la plupart des fonctions complexes (gestion réseau, système de fichiers, processus utilisateur Unix/NT) sont exportées hors du micro-noyau et sont implémentées par des processus spéciaux appelés serveurs.

Communication inter-processus (IPC) mécanisme permettant à différents processus de s'échanger de l'information. L'IPC est un des principaux goulots d'étranglement d'un système reposant sur un micro-noyau, puisque l'éclatement des fonctionnalités du système entre les serveurs multiplie le nombre des communications par rapport à un système monolithique traditionnel.

Appel de procédure à distance (RPC) mécanisme de communication dans les systèmes distribués qui permet à un processus d'appeler une procédure résidant sur une machine éventuellement différente de la sienne.

Résumé :

Les systèmes d'exploitation et de télécommunication sont particulièrement représentatifs du conflit entre performance et flexibilité. À ce titre, ils représentent un domaine d'application privilégié de nos techniques de spécialisation [[18]]. Plusieurs expérimentations systèmes ont été effectuées : la spécialisation de l'appel de procédure à distance, l'optimisation de la communication inter-processus au sein du micro-noyau Chorus, l'utilisation de langages dédiés pour la conception et l'adaptation de systèmes.

L'appel de procédure à distance (RPC) est l'un des paradigmes sur lesquels reposent les systèmes distribués. De ce fait, l'optimisation du RPC a fait l'objet de nombreuses études. Nous nous sommes plus particulièrement attachés à l'optimisation de la mise en oeuvre de l'appel de procédure à distance développé par Sun en 1984. L'architecture du RPC implémenté par Sun est constituée de multiples micro-protocoles modulaires. Toutefois, chaque utilisation du RPC repose sur une instance bien précise de ces protocoles, ce qui en fait un très bon candidat pour la spécialisation. Nous obtenons un gain de performance allant jusqu'à 1,5 sur un appel complet (réseau inclus). Sur l'encodage des données au sein du talon, le facteur d'optimisation va jusqu'à 3,7 [[11],[22],[17]]. Les retombées de cette étude sont multiples : (i) la mise en évidence de nouveaux besoins d'analyses, (ii) la validation de Tempo sur du code existant, non écrit spécifiquement pour notre système, (iii) l'illustration du potentiel d'optimisation d'un outil tel que Tempo sur des programmes reposant sur une architecture logicielle du type de celle du RPC de Sun.

Dans le cadre d'un projet CNET (voir module 7.1), nous avons étudié l'optimisation de la communication inter-processus (IPC) au sein du micro-noyau Chorus. Il est à noter que Chorus a déjà été largement optimisé au moyen de techniques manuelles. En conséquence, les opportunités de spécialisation restantes relèvent soit d'invariants valides à certains moments de l'exécution, soit d'invariants valides à la compilation mais inexploitables sans outil automatique. Pour exploiter ces invariants, nous avons conçu une technique de spécialisation incrémentale reposant sur deux étapes : (i) une spécialisation à la compilation ``traditionnelle'', (ii) une spécialisation à l'exécution du code obtenu précédemment. En associant ces deux techniques de spécialisation, nous avons obtenu un gain de performance de 1,5 sur un IPC local [[11]].

Les langages dédiés (voir module 6.2) ouvrent des perspectives intéressantes pour la conception de systèmes d'exploitation en permettant d'effectuer des vérification formelles sur les programmes (vérification de propriétés liées au domaine) et en améliorant la productivité. Nous avons expérimenté l'utilisation des langages dédiés dans le cadre de deux exemples système : la programmation de réseaux actifs avec PLAN-P (voir module 5.5) et la programmation de drivers graphiques X11 avec GAL (voir module 5.4). Dans le cadre d'un contrat avec le CNET (voir module 7.3), nous étudions l'utilisation des langages dédiés pour réaliser le processus d'adaptation au sein de systèmes d'exploitation réflexifs.



previous up next contents
Précédent : Langages dédiés et architectures logicielles Remonter : Résultats nouveaux Suivant : Contrats industriels (nationaux, européens et