Projet :
SOLIDOR

Précédent : Architectures logicielles pour
systèmes distribués Remonter : Résultats nouveaux
Suivant : Systèmes d'information spontanés
Sous-sections
Environnement pour le développement et l'exécution d'applications
distribuées à contraintes temps réel dur
Participants : Emmanuelle Anceaume, Michel Banâtre,
Gilbert Cabillic, Pascal Chevochot, Antoine Colin, David
Decotigny, Mathias Herberts, Isabelle Puaut.
Nos travaux sur la définition d'un environnement de
développement et d'exécution visent à fournir une plate-forme
exploitable pour une large gamme d'applications distribuées
temps-réel à sûreté critique, à partir de composants logiciels et
matériels standard. Les objectifs visés dans la conception de cet
environnement sont multiples: (i) fournir des mécanismes
de tolérance aux fautes compatibles avec des échéances temps-réel
dur et transparentes pour le concepteur d'application ;
(ii) fournir des mécanismes permettant de récupérer
en-ligne les ressources inutilisées ; (iii) s'adapter à
des demandes de qualité de service variées (en particulier par
rapport au caractère critique des échéances temporelles et par
rapport aux besoins en terme de tolérance aux fautes). Pour
atteindre ces objectifs, la structure logicielle de
l'environnement HADES (Highly Available
Distributed Embedded System) [[7]] a été conçue comme suit:
- un ensemble d'outils exécutés hors-ligne (i.e., avant
exécution de l'application), permettant notamment de fiabiliser
automatiquement les applications de façon transparente au
concepteur d'applications et de garantir via des tests de
faisabilité le respect des échéances temporelles de ces
applications;
- des services exécutés en ligne fournis par un support
d'exécution. Ce support d'exécution a été conçu dans l'objectif
d'être flexible, c'est-à-dire d'être capable de s'adapter aux
exigences spécifiques des applications distribuées temps-réel
(e.g., caractère critique des échéances, besoins en tolérance
aux fautes ou en consommation de ressources différents).
Nous précisons ci-après les résultats obtenus dans chacun de
ces domaines.
Deux catégories d'outils hors-ligne ont été isolées. La
première relève de la tolérance aux fautes dans les applications
temps-réel, alors que la deuxième relève de l'analyse de
programmes afin de garantir avant exécution le respect de leurs
échéances temporelles.
La gestion des fautes
dans les applications temps-réel est très souvent à la charge du
concepteur d'application, ce qui présuppose de sa part une
connaissance pointue des mécanismes de tolérance aux fautes.
Notre objectif est de rendre transparente cette gestion
de la tolérance aux fautes au concepteur d'applications.
L'approche retenue [[30],[36]] consiste à
intégrer les mécanismes de tolérance aux fautes dans un outil de
réplication automatique exécuté hors-ligne. Cet outil prend en
entrée une tâche non tolérante aux fautes et la transforme
automatiquement en une tâche tolérante aux fautes, selon le
modèle de fautes spécifié dans le cahier des charges.
L'utilisateur de cet outil peut spécifier les portions de tâches
à répliquer, la technique de réplication à utiliser (réplication
active, passive, semi-active ou temporelle), le nombre de
répliques à utiliser et leur localisation. Ceci permet
d'appliquer des techniques de tolérance aux fautes adaptées aux
besoins des applications (en termes de consommation en ressources
et de temps de réponse).
Nous nous intéressons
ici à l'analyse de programmes temps-réel dans l'objectif de
garantir avant exécution le respect de leur échéances
temporelles.
En l'état actuel de nos travaux, nous nous sommes
principalement concentrés sur l'analyse des temps d'exécution au
pire-cas de programmes temps-réel dur. Une des difficultés dans
ce domaine est d'éviter l'obtention de temps pire-cas qui soient
une estimation trop pessimiste des temps d'exécution effectifs
des programmes, ce qui entraîne une surestimation des ressources
matérielles nécessaires à l'exécution des programmes, et donc une
sous-utilisation de ces ressources lors de l'exécution. La prise
en compte de certains éléments de l'architecture comme la
présence de caches ou de pipelines permet de réduire cette
sous-utilisation des ressources. Nous avons montré qu'il est
possible d'analyser hors-ligne le mécanisme de prédiction de
branchement d'un processeur Pentium et ainsi de réduire le
pessimisme dans la détermination du temps d'exécution au pire-cas
de programmes s'exécutant sur ce type d'architecture. L'objectif
est à terme d'utiliser ce type d'outil pour analyser le
comportement temporel d'un système d'exploitation temps-réel.
La flexibilité du support d'exécution
HADES a été obtenue grâce à la séparation des
services en-ligne en deux catégories [[7]]: (i) les services
offrant des propriétés partagées par un large éventail
d'applications; (ii) les services dédiés à un domaine
d'application propre, c'est-à-dire dépendants des
caractéristiques exhibées par les applications distribuées
temps-réel à sûreté critique. La première catégorie regroupe tous
les services indispensables à l'exécution de tous types de tâches
temps-réel. Ces services recouvrent notamment le contrôle de
l'éligibilité des tâches, l'attribution de la ressource
processeur aux tâches, la surveillance de leur exécution
(dépassement d'échéance, détection d'interblocage) ou encore la
détection de fautes. La deuxième catégorie regroupe un ensemble
de services, d'interface prédéfinie, dont les propriétés sont
dépendantes des besoins spécifiques des applications et de
l'architecture matérielle utilisée. L'extensibilité de ces
services (i.e., l'évolution de leurs fonctionnalités et donc de
leurs propriétés est facilement intégrable) permet de
personnaliser le support d'exécution HADES en
fonction des spécificités des applications ou du matériel. Des
exemples de tels services relèvent:
- de l'ordonnancement des processus (service d'
ordonnancement). Ce service est chargé de déterminer
dans quel ordre les tâches doivent être exécutées. Différentes
politiques d'ordonnancement, qui diffèrent selon les besoins
des applications (e.g., besoin de garanties de respect des
contraintes temporelles hors-ligne, présence de tâches
sporadiques, accès à des ressources partagées) peuvent ainsi
être définies;
- de la communication entre processus (service de
diffusion, couplé à un service de gestion de
groupe). Différentes propriétés concernant l'ordre de
remise des messages, le type de synchronisation entre les
diffusions et les changements de groupe (i.e., synchronisation
virtuelle ou non) peuvent être garanties par ces services. Par
ailleurs, différentes implantations de ces propriétés peuvent
être réalisées en fonction du modèle de fautes considéré;
- de la gestion des exécutions distribuées (service de
lancement et de détection de terminaison des tâches
distribuées), dont les propriétés garanties peuvent différer
selon le modèle de fautes considéré;
- de la gestion des cartes réseau, dont les propriétés
diffèrent selon le matériel utilisé.
Nos travaux ont plus particulièrement porté sur:
- 1.
- la construction de politiques d'ordonnancement des
processus. En particulier, nous avons conçu et implanté un
service d'ordonnancement distribué adapté à des tâches
périodiques ayant des contraintes de précédence et de partage
de ressources. Le test de faisabilité associé a été développé
sous la forme d'un outil exécuté hors-ligne;
- 2.
- la construction de politiques de communication. Dans ce
cadre, nous avons conçu un service de diffusion garantissant
différentes qualités de service, suivant les besoins de
l'application. A titre d'exemple, la diffusion de base garantit
les propriétés de validité, d'intégrité,
d'accord, et de temps-réel. La diffusion
causale totalement ordonnée garantit quant à elle les trois
propriétés de la diffusion de base auxquelles est ajoutée la
propriété d'ordre causal totalement ordonné. Ce service de
diffusion est couplé à un service de gestion de groupe dont le
but est de garantir que tout changement de configuration du
système, suite à des défaillances ou réinsertion de composants,
est perçue de façon cohérente dans le système. Ce service
garantit les propriétés de vivacité,
d'unicité, de terminaison, de
cohérence et de temps-réel.

Précédent : Architectures logicielles pour
systèmes distribués Remonter : Résultats nouveaux
Suivant : Systèmes d'information spontanés