Sujet de Projet de Fin d'étude - Master 2 Informatique, année 2016-2017


Analyse de robustesse des systèmes temps-réel

Introduction

Un système temps réel est un un système embarqué qui interagit en permanence avec son environnement (cyber-physical system) tout en devant respecter des contraintes de temps. On peut par exemple citer les systèmes de contrôle dans les voitures (système de freinage, systèmes d'aide à la conduite, etc.) ou les systèmes de contrôle-commande d'avions.

La partie logiciel d'un système temps-réel est composée d'un ensemble de threads exécutés par un système d'exploitation adaptée. Pour garantir le respect des contraintes de temps, les développeurs font une analyse d'ordonnançabilité qui nécessite de 1) estimer le pire temps d'exécution (Worst-Case Execution Time – WCET en anglais) de chaque thread, en isolation, 2) calculer le pire temps de réponse de chaque thread, dans un contexte d'exécution concurrente avec les autres threads, et vérifier qu'il est inférieur à l'échéance imposée pour ce thread.

Problème

Le pire temps d'exécution est un élément très difficile à calculer. On calcule généralement une borne supérieure en utilisant des outils d'analyse du code source de la tâche. Le temps d'exécution dépend de plusieurs facteurs : les valeurs d'entrée du thread, le contenu du cache, etc. Bien souvent, la borne obtenue dans le pire cas est largement supérieure au temps moyen d'exécution.

Ceci pousse les développeur à :

  1. soit surdimensionner la plate-forme matérielle pour tenir compte du pire cas; mais dans le cas moyen le processeur est très sous-utilisé;
  2. soit utiliser des mécanismes de protection pour détecter un éventuel dépassement d'échéance au moment de l'exécution , et prendre des mesures adaptées (par exemple utiliser des résultats par défaut nécessitant moins de calcul, etc).

La deuxième solution est très attractive, mais elle nécessite d'estimer la probabilité de dépassement de l'échéance, afin de vérifier qu'elle est suffisamment faible pour ne pas compromettre le bon fonctionnement du système.

Pour mettre cette solution en oeuvre, on associe à chaque thread un temps d'exécution maximal (dit budget )qui ne doit jamais être dépassé. À l'exécution, le système d'exploitation détecte un éventuel dépassement de budget et appelle le cas échéant une fonction annexe qui utilise un résultat par défaut.

Travail à réaliser

L'objectif de ce projet est de réaliser un logiciel pour faire une analyse d'ordonnancement dite "Sensitivity analysis". Le but est de calculer, pour chaque thread, un budget optimal pour:

  1. garantir que toutes les échéances sont respectées en cas de fonctionnement normal;
  2. minimiser la probabilité d'utiliser les résultat par défaut.

L'outil prendra en entrée les temps d'exécution pire-cas produits par l'outil OTAWA ainsi que les traces obtenues à l'exécution des threads, et calculera le budget optimal à affecter à chaque tâche.

Les algorithmes de calcul sont déjà disponibles dans la littérature scientifique. Il est demandé de:

  • étudier des papiers scientifiques décrivant la procédure de calcul;
  • développer un logiciel qui implémente l'algorithme choisi.

L'outil devra fonctionner en ligne de commande pour être intégré dans un framework d'analyse des systèmes temps réel. Le langage de programmation peut être choisi par l'étudiant. Il faudra aussi définir le format des fichiers d'entrée et de sortie.

Contacts

Le travail sera réalisé dans l'équipe Émeraude, et il sera encadré par Giuseppe Lipari et Clément Ballabriga.

Suite

  • Il est prévu de produire une publication scientifique sur le résultat de ce travail;
  • Il y a la possibilité de continuer avec un stage pour étendre et améliorer les algorithmes existants.

Auteur: Giuseppe Lipari

Created: 2017-05-15 lun. 16:24

Validate