• Aucun résultat trouvé

Surcharge et faute temporelle

2.2.1

Notion de surcharge

Considérons une architecture monoprocesseur qui doit supporter l’exécution d’un ensemble de tâches pério- diques. Celle-ci inflige au processeur une charge de traitement définie par le pourcentage de temps pendant lequel le processeur travaille. Dans un système dit sous-chargé, ce taux appelé aussi facteur d’utilisation est inférieur ou égal à un. Nous avons vu dans les paragraphes précédents les principaux ordonnanceurs reconnus pour leur haute performance.

Toutefois, nous devons noter que ces ordonnanceurs ont un comportement satisfaisant et détermi- niste uniquement lorsque les tests d’ordonnançabilité ont été effectués et s’avèrent satisfaits. Dans le cas contraire, ces ordonnanceurs peuvent avoir un comportement complètement indéterministe ce qui est le cas de EDF. En effet, si sur un intervalle de temps, la charge infligée au processeur est supérieure à sa capacité de traitement, l’identité des tâches qui violeront leur échéance est difficilement prévisible. Les algorithmes classiques tel que RM et EDF doivent donc être remplacés par des ordonnanceurs plus adéquats en cas de surcharge.

38 CHAPITRE 2. GESTION CONTRÔLÉE DES FAUTES TEMPORELLES

Surcharge : On dit qu’un processeur est en surcharge si la capacité de traitement du processeur est inférieure à la charge de traitement qu’on lui inflige.

Surcharge temporaire : On dit qu’un processeur est en surcharge temporaire sur un intervalle de temps donné si sa capacité de traitement est inférieure à la charge qu’on lui afflige sur cet intervalle.

L’origine de la surcharge d’un processeur peut avoir lieu dans plusieurs circonstances. Par exemple, il peut s’avérer très difficile d’estimer le WCET de certaines tâches. Si la valeur du WCET a été mal estimée ou si le test d’ordonnançabilité a été effectué sur la base de valeurs moyennes de la durée d’exécution, des surcharges de traitement intermittentes pourront avoir lieu. Il va de soi que ces surcharges ne sont tolérées que dans des systèmes temps réel souples ou fermes.

2.2.2

Notion de faute temporelle

La défaillance ou panne d’un système est la conséquence d’une erreur qui elle-même est la conséquence d’une faute activée.

La faute : La faute dans un système informatique peut correspondre à un défaut dans un composant matériel, ou dans un composant logiciel de ce système. Elle est le plus souvent de nature accidentelle à cause des phénomènes physiques ou de l’imperfection naturelle de l’homme. Une faute peut dormir jusqu’à ce qu’un événement provoque son activation (par exemple, une division par zéro).

Les fautes dans un système temps réel sont divisées en trois catégories selon leur persistance tempo- relle : fautes permanentes, fautes transitoires et fautes intermittentes. Beaucoup d’auteurs affirment que la fréquence d’apparition des fautes transitoires et intermittentes est très grande par rapport à celle de fautes permanentes [40]. On rapporte que les fautes transitoires surviennent 30 fois plus que les fautes perma- nentes dans un système temps réel [129].

Les fautes peuvent avoir une nature fonctionnelle ou temporelle :

• Faute fonctionnelle : La valeur délivrée par le système est fausse c’est à dire non conforme à sa spé- cification, ou en dehors d’une plage de valeurs attendues.

• Faute temporelle : L’instant auquel la valeur est délivrée se trouve en dehors de l’intervalle de temps spécifié. Dans le cas d’un système temps réel, une faute temporelle correspond à la non délivrance du résultat à l’échéance spécifiée.

Dans la suite de cette thèse, nous nous focalisons sur les fautes intermittentes de nature tempo- relle.

2.2. SURCHARGE ET FAUTE TEMPORELLE 39

2.2.3

Origine des fautes temporelles

La tolérance aux fautes temporelles représente la propriété d’un système à pouvoir délivrer un service conforme à sa spécification en présence de fautes temporelles.

Dans un système temps réel, chaque instance de tâche périodique doit idéalement produire un résultat final exact c’est à dire se terminer, avant son échéance. Un système temps réel idéal serait donc celui qui, sur toute la durée de vie de l’application, ne présente aucune faute temporelle. En d’autres termes, c’est un système où chaque échéance de tâche produit un résultat exact avant son échéance.

Les causes de l’occurrence de fautes temporelles sont multiples :

• défaillance du processeur : par exemple, un des circuits subit des perturbations électromagnétiques temporaires,

• défaillance du lien de communication : la tâche attend indéfiniment une donnée en provenance d’un autre processeur pour pouvoir continuer son traitement,

• idem que précédemment, la tâche attend indéfiniment une mesure à partir d’un capteur défaillant,

• le processeur se trouve en surcharge de traitement. Il ne peut satisfaire toutes les échéances des tâches étant donné sa capacité de traitement limitée,

• le code exécuté par une tâche boucle indéfiniment pour certaines données d’entrée.

• etc.

En résumé, nous devons donc distinguer deux origines distinctes à la faute temporelle : • la surcharge de traitement,

• et la défaillance d’origine logicielle ou matérielle.

La plupart des méthodes présentées dans la littérature pour la conception des systèmes tolérants aux fautes se concentrent sur la défaillance du matériel (processeurs et liens de communications) qui engendrent des fautes fonctionnelles et non des fautes temporelles. Ces méthodes utilisent la réplication appelée aussi redondancepour concevoir des systèmes sûrs de fonctionnement en toutes circonstances.

2.2.4

Redondances logicielles

La redondance logicielle consiste à répliquer les tâches en plusieurs versions de code, identiques ou non. Si une version est l’objet d’une faute temporelle, au moins une autre version de la même tâche doit être exempte de faute temporelle.

40 CHAPITRE 2. GESTION CONTRÔLÉE DES FAUTES TEMPORELLES

1. La redondance active impose que toutes les versions d’une même tâche soient systématiquement exé- cutées.

2. La redondance passive suppose qu’une seule des versions de chaque composant logiciel, appelée version primaire, est exécutée à la fois. Les autres versions sont appelées versions de sauvegarde ou versions secondaires (en anglais back-up). Le nombre de versions secondaires dépend du nombre maximum de fautes pouvant survenir. Une version secondaire n’est exécutée que consécutivement à l’arrivée d’une faute concernant une autre version de la même tâche. C’est pourquoi, on parle de redondance dynamique passive.

L’inconvénient majeur de la redondance active réside dans le supplément de charge de traitement qu’elle engendre. De ce fait, cela augmente la probabilité d’engendrer des fautes temporelles sur une architecture matérielle monoprocesseur car les versions ne peuvent pas s’exécuter en parallèle.