Titre original :

Conception, implémentation et preuve d'un service de transfert de flôt d'exécution au sein d'un noyau de système d'exploitation

Titre traduit :

Conception, implementation and proof of an execution flow transfer service in an operating system's kernel

Mots-clés en français :
  • Flot d'exécution
  • Preuve formelle

  • Threads (logiciels)
  • Systèmes d'exploitation (ordinateurs)
  • Ordonnancement dynamique
  • Systèmes embarqués (informatique)
  • Assistants de preuve
Mots-clés en anglais :
  • Execution flow
  • Operating system
  • Scheduling
  • Embedded
  • Formal proof

  • Langue : Français
  • Discipline : Informatique et applications
  • Identifiant : 2023ULILB006
  • Type de thèse : Doctorat
  • Date de soutenance : 02/03/2023

Résumé en langue originale

Le travail présenté dans ce document de thèse est lié à la vérification formelle de propriétés sur des systèmes d'exploitation.Les premiers travaux piliers de ce domaine sont ceux du projet SeL4 ; qui démontrent que la vérification de propriétés formelles sur un micro noyau est tout à fait réalisable, bien que très coûteux. Pour réduire le coût de la preuve, le projet CertikOS a produit une preuve plus étagée et plus modulaire, en tirant à l'extrême la méthode de preuve par raffinement. L'équipe du noyau Pip a pris le contrepied des travaux de CertikOS et SeL4, en utilisant une méthodologie reposant sur un shallow embedding et en prouvant directement les propriétés plutôt qu'en utilisant la méthode par raffinement.Les travaux présentés dans cette thèse sont plus spécifiquement liés au noyau Pip.Les travaux précédents sur le noyau Pip ont portés sur une preuve de préservation de l'isolation des services fournis par Pip manipulant la mémoire. Cependant, un aspect critique du noyau devait encore être conçu : le transfert de flôt d'exécution d'une partition de mémoire à une autre.La première contribution de cette thèse présente un nouveau service de Pip conçu pour supporter tous les transferts de flôts d'exécution possible au sein d'un système -- les interruptions, les fautes, et les appels explicites. Ce service est minimaliste -- les différentes portions de code sont réutilisées pour réduire davantage l'effort de preuve. Une implémentation est proposée pour le noyau Pip. Nous défendons l'idée que le concept derrière ce service est assez général pour être implémenté dans n'importe quel noyau.La seconde contribution de cette thèse est la première implémentation au monde d'un ordonnanceur Earliest Deadline First pour jobs arbitraires muni d'une preuve formelle. La preuve garantit que la fonction d'élection respecte la politique EDF, qui garantit l'optimalité du planning sur les machines mono-processeur. La preuve a été conduite en suivant la méthodologie habituelle de Pip, utilisant un shallow embedding et une monade d'état. Elle a cependant été réalisée par raffinement. De plus, l'ordonnanceur présenté utilise le service décrit précédemment afin de transférer le flôt d'exécution, ce qui montre en prime sa polyvalence et son utilisabilité.La dernière contribution présentée dans cette thèse est une preuve de concept d'une monade d'état générique appliquée au noyau Pip. Cette monade générique permet de créer des modèles indépendants de la machine, permettant à priori de prouver plus simplement des propriétés spécifiques sur ces modèles. Cette contribution ouvre une nouvelle perspective de recherche sur la méthodologie de preuve, car elle devrait permettre de réduire considérablement le coût d'ajout de nouvelles propriétés au noyau. Néanmoins, utiliser cette technique ne permet à priori pas d'alléger la preuve de composition des propriétés des différents modèles.

Résumé traduit

The work described in this document is related to formal proofs on operating systems.The first breakthrough in the domain was the SeL4 project ; demonstrating that producing a complete proof on a microkernel was achievable, albeit very costly.In order to bring the proof's cost down, the CertikOS project showcased a more layered and modular approach, leveraging refinements.The Pip kernel team tackled the problem from the other side, by using a shallow embedding methodology and getting rid of refinement altogether. This thesis' contributions are more specifically tied to the Pip kernel.Previous work on the Pip protokernel focused on providing an isolation proof to Pip's services manipulating the system's memory. Yet, another critical aspect of the kernel -- handling the execution flow transfer from a partition to another -- remained to be designed.The first contribution of this thesis outlines the design of a single service able to handle all possible control flow transfers in a system ; namely interrupts, faults and explicit control flow transfers. The design focuses on minimalism and code factorization in order to reduce the overall proof effort. An implementation of the service is provided for the Pip kernel. We believe the idea behind the service is general enough to be implemented in other kernels and other architectures.The second contribution outlined in this thesis is the first formally proven correct userland implementation of an earliest deadline first scheduler for arbitrary jobs. The formal proof guarantees that the election function of the scheduler respects the earliest deadline first scheduling policy, and is guaranteed to be optimal on mono-processor systems. This proof was conducted using Pip's usual methodology, leveraging a shallow embedding of the scheduler's code in Coq and a state monad. Nonetheless, while the Pip kernel properties were proven directly, the presented scheduler proofs include three refinement levels ; from the scheduling policy to the actual implementation. Furthermore, the scheduler uses the previously described service in order to pass the control flow to partitions and regain the execution flow through interrupts, showcasing its usability and versatility.The last contribution presented in this thesis is a proof of concept of a generic monad applied to the Pip kernel. This generic monad allows to create independent models focusing on specific aspects of a single interface in order to prove specific properties on each model. This contribution opens a new research perspective on the proof methodology as it should greatly reduce the cost of proving new properties on the kernel. Nonetheless, using this technique has its own implications on the composition of those properties.

  • Directeur(s) de thèse : Grimaud, Gilles
  • Président de jury : Salvati, Sylvain
  • Membre(s) de jury : Nowak, David - Rieg, Lionel
  • Rapporteur(s) : Lawall, Julia L. - Baccelli, Emmanuel
  • Laboratoire : Centre de Recherche en Informatique, Signal et Automatique de Lille
  • École doctorale : MADIS Mathématiques, sciences du numérique et de leurs interactions

AUTEUR

  • Vanhems, Florian
Droits d'auteur : Ce document est protégé en vertu du Code de la Propriété Intellectuelle.
Accès libre