Thèse Année : 2024

Automatic verification of tasks schedulers

Vérification automatique d’ordonnanceurs de tâches

Résumé

The aim of this thesis is the verification of task schedulers for operating systems through static analysis based on abstract interpretation. Operating systems are collections of software present on almost every computer. Their purpose is to allow other programs to run without having to manage low-level problems such as memory. Due to this central role, operating systems have become critical components of IT infrastructures: any error in the operating system can have consequences on other programs, potentially causing the entire computer to crash. One component at the core of an operating system is the task scheduler. This component is responsible for determining, according to a predefined policy, which task can execute at what time. These components use unbounded dynamic data structures to store the necessary elements for their operation. These data structures allow elements to be easily moved between them. Verifying a task scheduler requires designing an analysis capable of accurately representing these data structures and their contents. The first part of this thesis describes a toy imperative language that explicitly manipulates memory. We then provide the concrete semantics of this language, followed by a presentation of a numerical static analysis to determine the range of numerical variables and a shape analysis capable of reasoning about unbounded inductive data structures. The second part is devoted to presenting a relational abstract domain capable of reasoning about symbolic sequences. This domain expresses constraints on the contents of these sequences, such as their lengths, extreme values, and sorted characteristics. The third part presents the combination of the shape analysis described in the first part with the sequence domain. This combination enhances the expressiveness of the analysis. It is now capable of proving the partial functional correctness of complex algorithms, such as sorting algorithms on lists or binary trees, as well as list libraries drawn from real applications. The final part of this thesis presents the application of the analysis to an instance of the FreeRTOS task scheduler. The first step in the verification process is formalizing the properties we seek to establish on the scheduler’s functions. The second step aims to show that the specified properties are verified by the instance’s functions using the analysis.
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 conséquences 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 concret 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.
Fichier principal
Vignette du fichier
these.pdf (2.53 Mo) Télécharger le fichier
Origine Fichiers produits par l'(les) auteur(s)
licence

Dates et versions

tel-04904166 , version 1 (21-01-2025)

Licence

Identifiants

  • HAL Id : tel-04904166 , version 1

Citer

Josselin Giet. Automatic verification of tasks schedulers. Computer Science [cs]. École normale supérieure - PSL, 2024. English. ⟨NNT : ⟩. ⟨tel-04904166v1⟩
0 Consultations
0 Téléchargements

Partager

More