Externalisation des pilotes sur les processeurs embarqués dans les périphériques

par Thomas Baumela

Projet de thèse en Informatique

Sous la direction de Frédéric Pétrot et de Olivier Gruber.

Thèses en préparation à Grenoble Alpes , dans le cadre de École doctorale mathématiques, sciences et technologies de l'information, informatique (Grenoble) , en partenariat avec Techniques de l'Informatique et de la Microélectronique pour l'Architecture des systèmes intégrés (laboratoire) depuis le 01-03-2017 .


  • Résumé

    Des études récentes sur les systèmes d'exploitation montrent que les bogues dans les pilotes de périphériques sont responsables de 70% des crashs systèmes. Plusieurs facteurs contribuent à cette situation. Tout d'abord les pilotes font partie intégrante du noyau, et fournissent des services s'exécutant généralement avec des privilèges élevés aussi bien au noyau lui même qu'aux applications. Ainsi, un bug dans un pilote risque de faire planter complètement une machine. Un bug dans un pilote est moins critique dans le cas des micro-noyaux, pour lesquels les pilotes s'exécutent en mode utilisateur, mais les conséquences sur le reste du système peuvent tout de même être importantes. Ensuite, l'écriture des pilotes nécessite une compréhension fine des mécanismes de l'OS et des propriétés du matériel piloté, ce que la formation des développeurs ne fournit généralement pas. Finalement, le test des pilotes est délicat à cause de l'indéterminisme des très nombreuses possibilités d'entrelacement des évènements matériels et logiciels (du également à l'existence d'autres périphériques dont on ne connaît même pas l'existence lors du test). Partant du principe qu'aujourd'hui tous les périphériques un peu complexe intègrent au moins un processeur, l'objectif de cette thèse est de faire monter en abstraction l'interface matériel/logiciel des périphériques. En effet, aujourd'hui les drivers voient les périphériques comme un ensemble de registres avec une sémantique bien précise, complexe, dépendante des différentes version du matériel, qu'il faut configurer et monitorer de manière précise.

  • Titre traduit

    Externalisation of device drivers from embedded processors to devices


  • Résumé

    Recent studies on operating systems show that bugs in devices drivers lead to 70% of system crashes. This situation is caused by several factors. Device drivers are parts of the kernel, running in high privileged modes, and give services to the kernel and user applications. It means a bug in such drivers often lead to a complete crash of the system when it happens. In micro-kernel, bugs are less critical as they executes in user mode, but consequences on the system can still be critical. Writing a device driver requires a very detailed understanding of the operating system and the driven hardware device. These two expertise aren't generally mastered by one developer. Finally, testing a driver is delicate because of the indeterminism of the software and hardware events interleaving (caused also by the existence of hardware devices that were not present during the test). Assuming that every hardware device a little bit sophisticated has at least one processor, the main objective of the thesis is to raise the abstraction of the hardware/software interface of devices. Today, drivers show their devices as a bank of registers with very precise and complex semantic, depending on the product version, evolving at a very fast rate (new versions of chips can be on the market every three months), and that requires a precise configuration to make the device works properly.