Thèse soutenue

Contributions for improving debugging of kernel-level services in a monolithic operating system

FR  |  
EN
Auteur / Autrice : Tegawende Bissyande
Direction : Laurent Réveillère
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance le 12/03/2013
Etablissement(s) : Bordeaux 1
Ecole(s) doctorale(s) : École doctorale de mathématiques et informatique (Talence, Gironde ; 1991-....)
Partenaire(s) de recherche : Laboratoire : Laboratoire bordelais de recherche en informatique - Labri
Jury : Président / Présidente : Xavier Blanc
Examinateurs / Examinatrices : Gilles Muller, Julia Lawall, David Lo
Rapporteurs / Rapporteuses : Yves Ledru, Olaf Spinczyk

Résumé

FR  |  
EN

Alors que la recherche sur la qualité du code des systèmes a connu un formidable engouement, les systèmes d’exploitation sont encore aux prises avec des problèmes de fiabilité notamment dus aux bogues de programmation au niveau des services noyaux tels que les pilotes de périphériques et l’implémentation des systèmes de fichiers. Des études ont en effet montré que chaque version du noyau Linux contient entre 600 et 700 fautes, et que la propension des pilotes de périphériques à contenir des erreurs est jusqu’à sept fois plus élevée que toute autre partie du noyau. Ces chiffres suggèrent que le code des services noyau n’est pas suffisamment testé et que de nombreux défauts passent inaperçus ou sont difficiles à réparer par des programmeurs non-experts, ces derniers formant pourtant la majorité des développeurs de services. Cette thèse propose une nouvelle approche pour le débogage et le test des services noyau. Notre approche est focalisée sur l’interaction entre les services noyau et le noyau central en abordant la question des “trous de sûreté” dans le code de définition des fonctions de l’API du noyau. Dans le contexte du noyau Linux, nous avons mis en place une approche automatique, dénommée Diagnosys, qui repose sur l’analyse statique du code du noyau afin d’identifier, classer et exposer les différents trous de sûreté de l’API qui pourraient donner lieu à des fautes d’exécution lorsque les fonctions sont utilisées dans du code de service écrit par des développeurs ayant une connaissance limitée des subtilités du noyau. Pour illustrer notre approche, nous avons implémenté Diagnosys pour la version 2.6.32 du noyau Linux. Nous avons montré ses avantages à soutenir les développeurs dans leurs activités de tests et de débogage.