Implantation de protocoles d'ordonnancement dynamiques pour applications embarquées synchrones
De Ensiwiki.
Sommaire |
Implantation de protocoles d'ordonnancement dynamiques pour applications embarquées synchrones
| Labo | Vérimag |
| Equipe | Synchrone |
| Encadrants | Karine.Altisen@grenoble-inp.fr,Christophe.Rippert@grenoble-inp.fr
|
Thème général
- systèmes critiques embarqués,
- langages synchrones,
- ordonnancement,
- système d'exploitation temps-réel
Compétences attendues
- programmation impérative + bases d'algorithmique (algo 1A)
- notions de base en système (2A)
- logiciel de base et projet C (1A) pour la partie implantation finale
Contexte du travail
Le développement de systèmes critiques (centrales nucléaires, avionique, etc.) nécessite l'utilisation de méthodes de conception fiables basées sur des modèles rigoureux permettant l'utilisation d'outils de validation automatique des programmes. C'est dans cette optique qu'a été conçu le langage synchrone Lustre [1], un langage a flot de données (i.e. on ne décrit pas le flot de contrôle a l'aide de loop, if then else, etc., mais plutôt la façon dont les variables dépendent les unes des autres a chaque instant), facilitant la construction et la vérification de programmes réactifs pour systèmes critiques. La caractéristique principale du langage est de proposer une programmation concurrente parfaitement déterministe grâce a un calcul statique de l'ordonnancement des taches.
Traditionnellement, les applications développées en Lustre s'exécutent directement sur la machine cible, sans se baser sur des services systèmes classiques tel que l'ordonnancement dynamique, afin de ne pas introduire d'indéterminisme. Cependant, l'évolution récente du domaine plaide en faveur de l'introduction d'un minimum de services systèmes pour faciliter l'implantation de fonctions supplémentaires, telle que l'introduction d'une dose limitée d'ordonnancement dynamique pour permettre la gestion de taches urgentes (e.g. interruptions) survenant de façon imprévisibles et devant être traitées de façon prioritaire. Ces additions ne doivent évidemment pas remettre en cause l'intérêt principal de la programmation synchrone, a savoir la prévisibilité de l'exécution.
Préserver la sémantique de l'ordonnancement statique d'applications synchrones lorsqu'elles s'exécutent dans un système temps-réel équipé d'un ordonnanceur préemptif est un problème complexe. Un travail de formalisation de ce problème a été publie dans Caspi08, et des solutions ont été proposées sous la forme de protocoles de gestion de buffers de communication, en fonction des priorités des taches communicantes.
Sujet
Le but de ce stage est de réaliser une implantation des différents protocoles détaillés dans Caspi08 sur un système embarque réaliste. Le stagiaire devra tout d'abord s'immerger dans le domaine des systèmes critiques et des langages synchrones, puis comprendre la problématique de la préservation de la sémantique de l'ordonnancement statique via un ordonnanceur dynamique.
L'implantation se fera sur l'architecture Lego Mindstorm NXT en utilisant le système temps-réel open-source nxtOSEK. Le stagiaire devra donc comprendre le fonctionnement de ce système et implanter les trois protocoles détaillés dans Caspi08 en choisissant des exemples pertinents de taches communicantes.
Ce stage propose donc une démarche complète, partant de la compréhension d'un problème théorique avance, jusqu'à l'implantation d'une solution sur un système embarque réaliste.
Résultats attendus
- Une implantation (même partielle) des protocoles décrits dans Caspi08
- Une démonstration pertinente s'exécutant sur la brique Lego

