• Aucun résultat trouvé

Fautes temporelles et temps réel dur

2.4.1

Problématique

Pour une application temps réel dur, idéalement le concepteur doit anticiper toute possibilité de fautes tem- porelles et de surcharge. En d’autres termes, cent pour cent des instances de tâches doivent fournir leurs données de sortie avant échéance. La non réalisation de cet objectif est considéré comme inacceptable. Pour ce faire, il doit surdimensionner le système en sélectionnant un processeur de vitesse suffisamment élevée pour garantir un taux d’utilisation inférieur à un. Ce taux d’utilisation est celui qualifié de pire cas qui consiste à considérer le pire temps d’exécution d’une tâche.

Une surcharge ne pourra donc se produire que dans des situations marginales tel qu’une mauvaise esti- mation des durées d’exécution ou l’arrivée non anticipée d’événements demandant un traitement en urgence comme celui lié à une alarme. Des fautes temporelles pourront toutefois se produire non pas pour cause de surcharge mais comme résultant de fautes de programmation, de panne matérielle qui entraîne le blocage permanent d’une tâche sur un message qui n’arrive pas pour cause de défaillance du réseau, etc.

Comme nous nous intéressons à une machine monoprocesseur ne possédant aucune redondance maté- rielle, la seule façon de faire face à l’occurrence de fautes temporelles dans un système temps réel dur sera d’accepter un fonctionnement temporaire dit dégradé. Un tel fonctionnement se caractérise par une adapta- tion en ligne de la charge infligée au processeur de sorte que le processeur reste toujours sous-chargé.

Les principales techniques connues sont les suivantes :

• celles où la tâche produit toujours un résultat avant l’échéance mais avec un raccourcissement éven- tuel de sa durée d’exécution, le résultat étant alors approché mais toutefois acceptable et exploitable. C’est le cas du Calcul Imprécis.

• celles où la tâche produit toujours un résultat exact en évitant la surcharge par une modification en ligne de ses paramètres temporels. C’est le cas du modèle élastique.

• celles où la tâche produit toujours un résultat avant l’échéance mais avec une autre version de code, le résultat étant alors de qualité dégradée mais toutefois acceptable et exploitable. C’est le cas du Mécanisme à Échéance précisément décrit dans la suite du chapitre.

2.4. FAUTES TEMPORELLES ET TEMPS RÉEL DUR 43

2.4.2

Le Calcul Imprécis

On conçoit le code de la tâche en deux parties. Une dite obligatoire doit impérativement être exécutée en premier pour fournir un résultat de précision minimale. L’autre dite optionnelle s’exécute chaque fois que possible de façon à améliorer la précision du résultat calculé par la partie obligatoire. Il s’agit de la méthode du Calcul Imprécis (Imprecise Computation) largement étudiée dans [71] [66] [39] [67] [65].

Le calcul imprécis convient seulement aux tâches qui mettent en oeuvre des algorithmes itératifs où la pré- cision du résultat du calcul croit avec le nombre d’itérations effectuées.

A noter que le modèle classique de Liu et Layland peut être considéré comme un cas particulier du modèle du Calcul Imprécis, avec une partie optionnelle de durée nulle. Dans le modèle de calcul imprécis, chaque tâcheτiest caractérisée par le quadruplet suivant :τi(ri, di, mi, oi), où ri,di,mi, etoidésignent respective-

ment, la date de réveil, l’échéance, la durée d’exécution de la sous-tâche obligatoire et la durée d’exécution de la sous-tâche optionnelle [71] [65]. Supposons queei désigne la durée totale d’exécution de τi, alors,

ei = mi+ oi.

L’objectif d’un ordonnanceur appliqué à des tâches conformes au Calcul Imprécis, sera d’obtenir une erreur totale minimum pondérée tout en garantissant l’absence de fautes temporelles. Dans ce modèle, un ordonnancement est dit faisable, si le processeur est capable d’exécuter chaque sous-tâche obligatoire mi

avant son échéance. En d’autres termes, le système doit être sous-chargé en ne considérant que les sous- tâches obligatoires. Un ordonnancement est dit précis, si l’erreur moyenne sur l’ensemble de tâches est égal à zéro c’est à dire toutes les sous-tâches obligatoires et optionnelles sont achevées avec succès.

Illustration : Considérons un ensemble de trois tâches : une tâches classiqueτ3 et deux tâchesτ1 etτ2

comportant deux sous-tâches obligatoires et deux sous-tâches optionnelles des temps d’exécution respecti- vement respectivement1 et 3.

Task ri Ti ei mi oi

τ1 0 16 5 4 1

τ2 0 32 6 3 3

τ3 0 8 4 4 0

TABLE2.1 – Illustration du modèle de calcul imprécis.

RM ordonnance les trois tâchesτ3 et les deux sous-tâches obligatoires deτ1 etτ2. Les sous-tâches op-

tionnelles s’exécutent avec la plus basse priorité c’est à dire dans les périodes laissées libres du processeur. Nous constatons que :

Entre l’instant15 et l’instant 16, la tâche τ1trouve un temps disponible pour exécuter sa sous-tâche option-

nelle.

Entre l’instant28 et l’instant 29, la tâche τ1trouve un temps disponible pour exécuter sa sous-tâche option-

nelle pour sa deuxième instance.

C’est à l’instant29 que la tâche τ2trouve du temps disponible pour exécuter sa sous-tâche optionnelle.

La figure2.4montre la séquence produite.

2.4.3

Le modèle élastique

Le taux d’utilisation du processeur par une tâche périodique dépend d’une part de sa durée d’exécution et d’autre part de sa période. Diminuer en ligne la charge imposée au processeur pour retrouver un état

44 CHAPITRE 2. GESTION CONTRÔLÉE DES FAUTES TEMPORELLES 0 4 8 12 16 20 24 28 32 τ1 t τ2 t τ3 t Partie obligatoire Partie optionnelle

FIGURE2.4 – Illustration du Calcul Imprécis

sous-chargé peut donc se faire par une augmentation de l’échéance ou/et de la période.

Dans la littérature, il existe plusieurs approches pour traiter le problème de surcharge grâce l’adaptation des périodes des tâches. Nous présenterons ici la plus connue, le modèle élastique.

Le modèle élastique [9] [15] revient à considérer que chaque tâche est flexible, comme un ressort élas- tique avec un coefficient de rigidité et une longueur de contraintes spécifiées.

Cependant, toute variation fait l’objet d’une garantie élastique et n’est acceptée que s’il existe un ordonnan- cement faisable dans lequel toutes les autres périodes sont considérées.

Selon ce modèle, chaque tâcheτi est caractérisée par quatre paramètres :

• une durée d’exécution pire casCi,

• une période nominaleTi0 (considérée comme la période minimale),

• une période maximaleTimax,

• et un coefficient d’élasticitéEi ≥ 0.

Le coefficient d’élasticité détermine la possibilité de la tâche à faire varier son facteur d’utilisation. Plus grande est la valeurEi, de plus d’élasticité la tâcheτi dispose.

Soit Ti la période effective de la tâche τi, qui doit être comprise dans l’intervalle[Ti0, Timax]. Etant

donné un ensemble den tâches périodiques avec un facteur d’utilisation totale Up > Umax, l’objectif dans

le modèle élastique, est la garantie d’exécution des tâches en faisant compresser leurs facteurs d’utilisation de façon à réaliser une nouvelle utilisation souhaitéeUd≤ Umaxà condition que toutes les périodes restent

dans leur plage d’acceptabilité.

Chaque fois qu’une nouvelle tâche ne peut pas être garantie sans faute temporelle, au lieu de la rejeter, le système peut tenter de réduire les facteurs d’utilisation d’autres tâches (en augmentant leur période de manière contrôlée). La conséquence en sera une diminution de la charge totale.

Dès qu’une situation de surcharge temporaire se termine, les tâches compressées peuvent récupérer leur période nominale.

Autres modèles adaptatifs

Dans [150], Wang et Lin proposent un modèle adaptatif en ce sens que l’on fait changer dynamiquement les paramètres temporels de l’application que sont l’échéance et la date de réveil.