Thèse en cours

Vérification automatique d'ordonnanceur de tâches

FR  |  
EN

Accès à la thèse

AttentionLa soutenance a eu lieu le 26/09/2024. Le document qui a justifié du diplôme est en cours de traitement par l'établissement de soutenance.
Auteur / Autrice : Josselin Giet
Direction : Xavier Rival
Type : Projet de thèse
Discipline(s) : Informatique
Date : Inscription en doctorat le
Soutenance le 26/09/2024
Etablissement(s) : Université Paris sciences et lettres
Ecole(s) doctorale(s) : École doctorale Sciences mathématiques de Paris centre
Partenaire(s) de recherche : Laboratoire : DIENS - Département d'informatique de l'École normale supérieure
Equipe de recherche : ANTIQUE
établissement opérateur d'inscription : Ecole normale supérieure
Jury : Président / Présidente : Marc Pouzet
Examinateurs / Examinatrices : Xavier Rival, Jean-Christophe Filliâtre, Arthur Charguéraud, Julia Lawall, Matthieu Lemerre
Rapporteurs / Rapporteuses : Jean-Christophe Filliâtre, Arthur Charguéraud

Résumé

FR  |  
EN

Le but de cette thèse est la vérification d'ordonnanceurs de tâches de systèmes d'exploitation par analyse statique basée sur l'interprétation abstraite. Les systèmes d'exploitation sont des ensembles de logiciels présents sur presque tout ordinateur. Leur but est de permettre aux autres programmes de s'exécuter sans avoir à gérer des spécificités bas niveau comme la mémoire. En conséquence de ce rôle central, les systèmes sont devenus des composants critiques des infrastructures informatiques : toute erreur au niveau du système d'exploitation peut avoir des répercussions sur les autres programmes allant jusqu'au plantage de l'ordinateur. Un des composants au cœur d'un système d'exploitation est l'ordonnanceur de tâches. Ce dernier est chargé de déterminer quelle tâche peut s'exécuter à quel moment en suivant une politique préétablie. Les ordonnanceurs de tâches utilisent des structures de données dynamiques non bornées afin de stocker les éléments nécessaires à leur fonctionnement. Ces structures de données permettent de déplacer facilement les éléments d'une structure vers l'autre. Par conséquent, la vérification d'un ordonnanceur de tâche nécessite de concevoir une analyse capable de représenter correctement ces structures de données et leur contenu. La première partie de cette thèse décrit un langage impératif jouet semblable au C manipulant explicitement la mémoire. On donne ensuite la sémantique concrète de ce langage, puis on présente une analyse statique numérique afin de déterminer la plage de valeur des variables ainsi qu'une analyse de forme capable de raisonner sur des structures de données inductives non bornées. La seconde partie est consacrée à la présentation d'un domaine abstrait relationnel capable de raisonner sur des séquences symboliques. Ce domaine exprime des contraintes sur le contenu de ces séquences comme leurs longueurs, leurs valeurs extrémales et leurs caractères triés. La troisième partie présente la combinaison de l'analyse de forme présentée dans la première partie avec le domaine de séquences. Cette combinaison augmente l'expressivité de l'analyse. Cette dernière est maintenant capable de prouver la correction fonctionnelle partielle d'algorithmes complexes comme des algorithmes de tris sur les listes ou les arbres binaires, ainsi que sur des bibliothèques de listes provenant d'applications réelles. La dernière partie de cette thèse présente le travail d'application de l'analyse sur une instance de l'ordonnanceur de tâches de FreeRTOS. La première étape de la vérification est la formalisation des propriétés que nous cherchons à établir sur les fonctions de l'ordonnanceur. Cela inclut les invariants globaux de l'ordonnanceur. La seconde étape concerne le travail de validation pour montrer que ces propriétés spécifiées sont vérifiées par les fonctions de l'instance au moyen de l'analyse.