• Nenhum resultado encontrado

de pilotes défaillants

N/A
N/A
Protected

Academic year: 2023

Share "de pilotes défaillants"

Copied!
146
0
0

Texto

À l'avenir, il est clair que l'amélioration de la fiabilité du système d'exploitation dépendra de la fiabilité des pilotes, puisque le noyau n'est plus la principale source d'erreurs. Dans ce chapitre, nous justifions d’abord notre intérêt pour les problèmes liés aux pilotes de périphériques dans l’étude de la sécurité des systèmes d’exploitation.

Source importante d’erreurs

Nous motivons ensuite les techniques de sécurité opérationnelle mises en œuvre pour surmonter les problèmes présentés par les pilotes. La combinaison de ces deux facteurs aggrave considérablement l’influence des pilotes sur la fiabilité opérationnelle des systèmes.

Figure 1-1 Répartition des lignes de codes dans le noyau Linux 2.6
Figure 1-1 Répartition des lignes de codes dans le noyau Linux 2.6

Origines des fautes liées aux pilotes ou aux matériels

Les fautes logicielles

Une part importante des performances du système provient en réalité du logiciel de contrôle. Surcharger ces programmes en effectuant des contrôles lors de leur exécution entraîne une dégradation importante des performances.

Les fautes physiques

Les techniques actuelles de conception de pilotes de périphériques présentent des lacunes majeures en termes de qualité de conception logicielle. Actuellement faible, sa part pourrait augmenter avec l’avènement d’améliorations dans la prévention des erreurs logicielles.

Les pilotes de périphériques dans les systèmes d’exploitationd’exploitation

Rôle

Organisation fonctionnelle

Le processeur passe en mode superviseur et exécute le code du pilote pour l'opération appropriée. Enregistrement et enregistrement du pilote : vous permet d'insérer et de supprimer un code de pilote dans le système d'exploitation.

Commentaires

Par exemple, dans le cas d'un driver de type polling, une application effectue une requête via un appel au noyau (ouverture, lecture, etc.) pour accéder aux données d'un périphérique (par exemple une clé USB). En fin de chapitre, nous présenterons le travail effectué sur différents systèmes pour prévenir et tolérer les pannes provenant du pilote de périphérique.

Les systèmes d’explo itatio n

Architectures et concepts

Certains systèmes d'exploitation utilisent un espace d'adressage partagé pour tous les processus, c'est-à-dire non protégé, comme dans le cas du système d'exploitation Dos. Cependant, dans les deux cas, leur rôle est de fournir une abstraction d'un périphérique pour le système d'exploitation.

Exemples de systèmes d’exploitation

Dans la suite, le terme noyau sera utilisé pour désigner la partie du système d'exploitation qui supervise la machine. Un noyau monolithique de type Unix fournit tout ce dont un système d'exploitation a besoin en termes de services (voir [Bach 1987]) : gestion des processus, gestion de la mémoire, communication interprocessus, accès aux périphériques, système de fichiers, protocoles réseau, etc.

Architecture des pilotes de périphériques

  • Linux
  • Windows XP
  • MacOS X
  • Remarques

L'insertion et la suppression d'un pilote de gestion de périphériques se font dynamiquement sous Linux en utilisant le concept de module. L'ajout et la suppression d'un logiciel de gestion de périphériques s'effectuent de manière dynamique dans Windows XP.

Figure 1-4Architecture des pilotes sous Linux
Figure 1-4Architecture des pilotes sous Linux

Amélioration de la sûreté de fonctionnement

  • Amélioration de l’architecture du système
  • Amélioration de la phase de conception
  • Amélioration par recouvrement du noyau
  • Amélioration matérielle
  • Amélioration du logiciel
  • Remarques

Les auteurs dans [Bershad et al 1995] et [Réveillère & Muller 2001] proposent d'utiliser des langages sécurisés lors de la conception du noyau ou d'un driver pour éviter les erreurs. Lorsque le pilote effectue ces tâches, il appelle les fonctions du noyau.

Figure 1-8Différentes approches d’architecture système
Figure 1-8Différentes approches d’architecture système

Conclusion

Enfin, l'efficacité représente le gain par rapport aux besoins réels en matière de sécurité opérationnelle des systèmes d'exploitation. Cela fait des pilotes le problème actuel le plus important en matière de sécurité opérationnelle des systèmes d’exploitation.

Étalon de performances

Unixbench [Smith 1995] est un micro-benchmark dédié à l'évaluation des performances des systèmes Unix. Le but de cet outil est d'identifier et d'évaluer les goulots d'étranglement des performances d'un système d'exploitation.

Évaluation de la sûreté de fonctionnement

Méthode analytique

Les mesures de sécurité opérationnelle sont évaluées en attribuant des valeurs aux paramètres de processus stochastiques du modèle. La modélisation analytique peut être divisée en trois phases étroitement liées : - Le choix des mesures de sécurité opérationnelle à évaluer.

Techniques d’injection de fautes

Il existe de multiples méthodes d'injection de fautes, allant de la simulation de fautes sur un modèle du système (cette observation a par exemple été le point de départ du développement des techniques d'injection de fautes par logiciel).

Étalon de sûreté de fonctionnement pour les systèmes d’exploitationd’exploitation

Dimensions de catégorisation

Mais l’utilisation d’une description détaillée du système peut réduire les chances que la norme soit transférée vers d’autres systèmes. Le cœur du système d’exploitation constitue la base du bon fonctionnement des applications.

Mesures

Sensibiliser aux mécanismes de base du système d’exploitation pris en compte lors de l’enregistrement des mesures de sécurité opérationnelles. Dans la suite de ce paragraphe, nous présentons les différentes mesures qui permettent de caractériser la sécurité opérationnelle d'un système d'exploitation donné.

Dimensions d’expérimentation

Les observations permettent de caractériser le comportement du système cible après l'exécution de l'activité, en présence de la séquence d'erreurs. Certains systèmes dits réflexifs fournissent des mécanismes visant à surveiller et à observer le comportement du système.

Caractérisation des systèmes par injection de fautes

Caractérisation par rapport aux fautes internes et matérielles

Les modèles de propagation des défauts sont construits à la fois pour les défauts matériels et les défauts logiciels. Les erreurs injectées lors de l'exécution du code du noyau provoquent l'arrêt du noyau ou ne produisent aucune sortie visible.

Caractérisation par rapport aux fautes externes

Les résultats obtenus grâce à la technique d'injection MAFALDA dans le noyau Chorus révèlent qu'une bonne partie des erreurs introduites dans le composant fonctionnel de communication sont détectées par les mécanismes de détection d'erreurs du micronoyau. Des expériences d'injection de fautes ont été réalisées après introduction de ces mécanismes d'isolation dans le micronoyau et ont montré l'efficacité de ces mécanismes.

Caractérisation de systèmes vis-à-vis des extensions

Pour caractériser le comportement du système en présence de pilotes de périphériques défectueux, les auteurs présentent une technique d'injection de fautes pour introduire des bogues logiciels. La technique d’injection de fautes utilisée dans cette méthode permet une grande portabilité du standard.

Figure 2-3 Prototype de la technique d’analyse d’état
Figure 2-3 Prototype de la technique d’analyse d’état

Conclusion

Dans ce chapitre, nous présentons une technique pour évaluer le noyau d'un système d'exploitation par rapport à des pilotes défectueux. C'est pour répondre à cette problématique que nous avons cherché à identifier et décrire cette interface entre les pilotes et le noyau présente dans tous les systèmes d'exploitation actuels [Zaatar & Ouis 2002].

Interface entre les pilotes et le noyau

Introduction à la DPI

Un autre rôle principal d'un pilote de périphérique est de répondre aux demandes des composants matériels. Il est constitué d'un ensemble de symboles (fonctions, structures, variables) disponibles uniquement pour le système d'exploitation : le noyau et les pilotes.

Interface générique aux systèmes d’exploitation

Ce dernier fonctionne directement sur l'appareil ou via les fonctions DPI de plus bas niveau, permettant de gérer des bus ou de la mémoire par exemple. Ils consistent principalement à gérer les minuteries, les interruptions, la mémoire et l'enregistrement des pilotes dans le système.

Tableau 3-2 Classification des services de la DPI
Tableau 3-2 Classification des services de la DPI

Le paramétrage des fonctions privilégiées

Critères pour l’évaluation de l’impact des pilotes défaillantsdéfaillants

  • Fautes visées
  • Portabilité de la méthode
  • Des mesures appropriées
  • Compléter les étalons existants : DBench

Nous avons souhaité évaluer le comportement du système en termes de sécurité de fonctionnement vis-à-vis de ces erreurs. En revanche, nous considérons que l’utilisateur du standard diffère du développeur du système d’exploitation cible.

Évaluation de la robustesse de la DPI

Technique d’injection de fautes par logiciel

  • Tests de robustesse
  • Corruption de paramètres
  • Représentativité de l’injection de fautes
  • Charge de faute

L’utilisation de l’injection d’erreur nécessite au préalable de répondre aux questions suivantes [Arlat et al. Ce travail met en évidence la représentativité des techniques d'injection de fautes logicielles par rapport aux fautes physiques [Czeck 1993] [Kanawati et al.

Figure 3-3 Principe de corruption des paramètres d’une fonction
Figure 3-3 Principe de corruption des paramètres d’une fonction

Charge de travail

Lors de l'évaluation de la robustesse d'un système, chaque paramètre est testé avec différentes valeurs possibles. La charge de travail va donc indirectement déclencher l'utilisation des fonctions d'interface entre les pilotes et le noyau.

Figure 3-5 Profil d’exécution
Figure 3-5 Profil d’exécution

Observations

La deuxième exécution de la charge de travail permet, pour chaque expérience, d'évaluer les capacités du système à revenir à un état stable. La chronologie en bas montre le cas où la charge de travail ne se termine pas.

Tableau 3-4 Niveaux d’observations du système et événements observés
Tableau 3-4 Niveaux d’observations du système et événements observés

Points de vue et interprétation

  • Caractérisation des fautes
  • Application à MAFALDA-RT
  • Application à notre méthode
  • Prise en compte du point de vue

RK1 O1-O3 Un message d'erreur est émis avant que la charge de travail ne soit terminée avec succès. AK1 O1-O3 Un message d'erreur est émis avant que la charge de travail ne soit terminée avec succès.

Figure 3-7 Manifestations de fautes
Figure 3-7 Manifestations de fautes

Conclusion

Par conséquent, nous avons volontairement exclu cette catégorie d’observations de l’analyse des résultats, compte tenu des perspectives de sécurité opérationnelle. La méthode présentée dans le chapitre précédent permet d'évaluer la stabilité de l'interface d'un noyau de système d'exploitation vis-à-vis d'un driver défaillant.

L’interface pilote noyau de Linux

  • Les symboles de Linux
  • Les types dans Linux
  • Intervalles de validité des classes de paramètres
  • Les types dans Windows

Les autres classes de types sont courantes et se trouvent généralement dans le code des systèmes d'exploitation modernes. La particularité des classes de types présentées dans le paragraphe précédent réside dans leur intervalle de validité.

Tableau 4-1 Symboles composant les services fournis à travers la DPI Linux
Tableau 4-1 Symboles composant les services fournis à travers la DPI Linux

Plate-forme expérimentale

  • Description générale
  • Spécifications du profil d’exécution
    • Charge de fautes
    • Charge de travail
  • Injection de fautes
  • Observations et mesures
  • Application à Windows XP

Il s'agit d'un résultat reproductible de l'exécution de la charge de travail sur la machine évaluée dans un environnement sans erreur. La machine enregistre le début et la fin de chaque exécution de charge de travail.

Figure 4-1 Vue d’ensemble du banc d’essais (une seule machine cible est représentée) La machine cible soutient deux versions du noyau Linux : la 2.2.20 et la 2.4.18
Figure 4-1 Vue d’ensemble du banc d’essais (une seule machine cible est représentée) La machine cible soutient deux versions du noyau Linux : la 2.2.20 et la 2.4.18

Déroulement d’une campagne d’expériences

Détermination des symboles ciblés

Nous pouvons alors comparer la robustesse de fonctions de service d’interface similaires entre deux versions du noyau. Lorsque nous examinons les signatures de fonctions, les fonctions sont en fait classées dans un service du noyau.

Conduite de la campagne d’injection de fautes

Le temporisateur (n) est initialisé pour signaler un redémarrage correct de la machine pour l'expérience en cours. Une deuxième interruption est déclenchée pour permettre la lecture du code retour, puis l'exécution de la charge de travail reprend (tWContinue).

Stockage des données

En effet, des redémarrages brusques et répétés peuvent provoquer des erreurs dans le système de fichiers et provoquer un état instable permanent de la machine. En pratique, sa valeur vaut quatre fois le temps d'exécution de la charge de travail utilisée pour conserver une « marge de sécurité » importante.

Résultats et Analyses

Analyse préliminaire

  • Les limites de l’observation
  • Premières analyses

Un rapide coup d’œil à ces résultats montre un taux d’interruption de charge de travail très faible pour toutes les expériences réalisées. Généralement, il s'agit du seul événement collecté au cours de l'expérience, à moins qu'un blocage du cœur ne soit observé après la fin de la charge de travail (de tels cas sont rares).

Figure 4-6 Distribution des premiers événements observés
Figure 4-6 Distribution des premiers événements observés

Points de vue et interprétation

  • Notifications d’événements
  • Sûreté de la charge de travail
  • Disponibilité du noyau
  • Synthèse

Cette baisse correspond au signalement des erreurs qui précèdent la terminaison du noyau ou des événements inappropriés de terminaison de charge de travail. L'analyse du point de vue de la sécurité des charges de travail révèle un comportement similaire à celui effectué du point de vue de la notification des événements du noyau : à 53 %.

Analyse détaillée

  • Répartition des défaillances par fonctions
  • Critères de sûreté de fonctionnement et de performance
  • Choix des critères de sûreté de fonctionnement
  • Amélioration de la sûreté de fonctionnement : le symbole iget4

La fonction eth_copy_and_sum présente dans le DPI de Linux version 2.2.20 provoque de nombreux crashs du noyau. Les résultats des expérimentations réalisées sur la version 2.4 de la fonction iget4 montrent un meilleur comportement du point de vue de la disponibilité du noyau.

Conclusion

Experimental Evaluation of a COTS system for space applications”, v Proceedings International Conference on Dependable Systems and Networks (DSN-2002), (Whasington DC, USA), str. Robustness Testing and Hardening of CORBA ORB Implementations”, v Proceedings International Conference on Zanesljivi sistemi in omrežja (DSN-2001), (Göteborg, Švedska), str. 141-150, IEEE CS Press, 2001.

Imagem

Figure 1-1 Répartition des lignes de codes dans le noyau Linux 2.6
Figure 1-4Architecture des pilotes sous Linux
Figure 1-5 Architecture des pilotes sous Windows XP
Figure 1-6 Architecture des pilotes sous MacOS X
+7

Referências

Documentos relacionados

A hipótese levantada para a solução do problema apresentado consiste em afirmar que sim, caberia a aplicação da teoria da imputação objetiva aos casos de responsabilidade civil por erro