CEG4566/CSI4541 – Conception de systèmes temps réel

Transcription

CEG4566/CSI4541 – Conception de systèmes temps réel
CEG4566/CSI4541 – Conception de systèmes temps réel
Chapitre 6 – Vivacité, sécurité (Safety), fiabilité et tolérance aux fautes dans les systèmes
en temps réel
6.1 Introduction générale aux notions de sécurité et de vivacité
• Une propriété de sécurité indique que rien de mauvais ne peut arriver.
• Une propriété de vivacité indique qu’une bonne chose peut éventuellement arriver.
• En pratique ses notions sont implémentées par l’utilisation des threads et des moniteurs.
Notre objectif : Est de s’assurer que les deux propriétés ci-dessus sont satisfaites dans notre
système en temps réel.
6.2 Vivacité
6.2.1 Définition
Il est possible que deux processus n'arrivent jamais à se synchroniser pour une raison ou pour une
autre. Ceci peut conduire à l'absence de réalisation d'un objectif fixé sans pour autant qu'il y ait
interblocage.
Exemple: Pour réparer un chauffe-eau électrique, le plombier peut demander que l’alimentation
électrique soit correctement installée: il faut donc l'intervention préalable de l'électricien;
l'électricien peut lui exiger de ne faire les travaux que lorsque il n’y ai plus de risques et que les
problèmes de fuites d'eau seront résolus : il faut au préalable l'intervention du plombier
Les deux processus sont actifs (ils viennent régulièrement) mais ils ne font pas progresser les
choses : on est face à une activité non constructive et donc un problème de vivacité
6.2.2 Propriétés de la vivacité
Soit l’exemple suivant (d’après Jeff Magee). Un passage sur un pont à sens unique ne peut laisser
passer les voitures que sur une seule voie.
Les voitures ne peuvent avancer concurremment que ci elles vont dans la même direction.
Chapitre VI - CEG4566/CSI4541 – RNM – SIGE – UOttawa – Hiver 2013
1
On a un problème si deux voitures avançant dans deux directions différentes entrent sur le pont en
même temps.
Model :
-
Événements ou actions intéressantes ? Entrer et Sortir
-
Processus? Voitures et Pont
-
Propriétés? Sens unique
-
Définir chaque processus et les interactions entre processus (structure)
-
const N = 3
//nombre de chaque type de voiture
-
Range T = 0..N
//comptage de voiture
-
Range ID= 1..N
//Identité de la voiture
La question est : Est-ce chaque voiture a éventuellement une chance de traverser le pont? On dit
qu’elle progresse.
La propriété de progression indique qu’il est toujours possible qu’une action va éventuellement
s’exécuter.
La progression est le contraire de la famine (nom donné à une situation où une action n’a aucune
de s’exécuter).
Choix équitable : Si un ensemble de transitions est exécuté indéfiniment souvent, alors chaque
transition de cet ensemble doit être exécutée indéfiniment souvent. Exemple : Jeter indéfiniment
une pièce en l’air, les deux faces de la pièce (pile, face) vont sortir indéfiniment souvent.
Si on applique le principe du choix équitable à notre exemple de pont, il y aura toujours
progression.
progress BLUECROSS = {blue[ID].enter}
progress REDCROSS = {red[ID].enter}
Aucune violation de la progression détectée.
Pour détecter des violations de la règle de progression, il faut soumettre le système à des
situations où le choix équitable n’est plus possible. Par exemple, une congestion du pont. Dans ce
cas on impose une règle d’ordonnancement adaptée pour éviter la famine et assurer la
progression.
Chapitre VI - CEG4566/CSI4541 – RNM – SIGE – UOttawa – Hiver 2013
2
Exemple d’algorithme (d’après Jeff Magee) :
Le problème est qu’il se peut que des voitures attendent aux deux extrémités du pont et que le
pont n’autorisent ni les voitures bleues ni rouges à le traverser. Si on suppose qu’on a 3 voitures
rouges et 3 bleues qui attendent, on aura le cas suivant :
red.1.request
red.2.request
red.3.request
blue.1.request
blue.2.request
blue.3.request
Solution?
Introduire une certaine asymétrie dans le problème sous la forme d’une variable booléenne (bt)
qui casse le blocage en indiquant si c’est le tour des bleues ou des rouges de traverser.
Arbitrairement on initialise bt à ‘1’ ce qui donne la priorité au bleues.
Chapitre VI - CEG4566/CSI4541 – RNM – SIGE – UOttawa – Hiver 2013
3
6.3 Sécurité (safety)
6.3.1 Définitions
Aptitude d’une entité à maintenir un niveau d’acceptabilité d’événement à priori redoutés pouvant
mettre en cause immédiatement ou à terme la vie de l’homme, l’intégrité de ses biens, son
environnement (c’est la probabilité que le système puisse faire apparaitre des événements définis
comme redoutés avec un niveau de risque inacceptable).
Par contre, la sureté de fonctionnement :
Caractérise l’aptitude pour un système, un produit ou une activité de satisfaire l’ensemble des
performances opérationnelles requise pour une mission donnée.
Quand on dit que la sécurité indique que rien de mauvais ne peut arriver, on sous-entend que :
-
Pas d’ARRET ou de BLOCAGE (aucune transition possible)
-
Pas d’ERREUR dans la détection d’un comportement erroné du système.
-
Aucun état ERREUR/ARRET qui soit un état puits du système (voir RdP, chapitre II).
6.3.2 Exemple
Dans l’exemple précédent du pont à sens unique, une erreur dans la détection du comportement
erroné du système peut provoquer des conséquences catastrophiques.
Des solutions s’imposent :
-
Synchronisation
-
Priorité
-
Exclusion mutuelle
Les conditions d’erreur indiquent ce qui n’est par requis par le système (ex : les exceptions)
Dans les systèmes complexes et critiques, on préfère spécifier clairement toutes les exigences de
sécurité on indiquant ce qui est requis par le système.
Souvent on fait ce qu’on appelle une analyse de sécurité.
Remarque :
En plus d’assurer la sécurité on doit assurer aussi la vivacité du système et une certaine sureté de
fonctionnement.
Chapitre VI - CEG4566/CSI4541 – RNM – SIGE – UOttawa – Hiver 2013
4
6.4 Fiabilité et tolérance aux fautes
6.4.1 Mise en situation
Dans les systèmes à grande présence de logiciel (des millions de ligne de code):
-
Pour chaque million de lignes de code → 20000 erreurs (bugs)
-
90% des erreurs sont détectées lors des tests logiciels
-
200 erreurs vont apparaitre lors de la première année d’utilisation.
-
1800 erreurs vont rester non détectées.
-
Et le pire c’est les erreurs dormantes !
6.4.2 Définitions
Fiabilité du logiciel :
-
On ne peut pas vraiment parler de fiabilité quand in s’agit de logiciel, la fiabilité est
plutôt réserver au matériel.
-
Certain la définissent comme une mesure du succès qu’a un système à se conformer à
certaines exigences de son comportement.
Défaillance du logiciel :
-
C’est une déviation du système par rapport aux exigences pour lesquelles il a été
développé.
-
Les défaillances résultent de problèmes internes au système qui se manifestent dans le
comportement externe du système.
-
Ces problèmes sont appelés erreurs et les algorithmes qui les causent sont appelés fautes.
-
4 Sources de fautes qui peuvent conduire à la défaillance du système :
o
Spécification (exigences) incorrectes.
o
Erreurs de conception du logiciel.
o
Erreurs matériel (processeur)
o
Erreurs de communication entre sous-systèmes.
Classification des fautes :
-
Transitoire : Elle apparait une fois puis disparait.
-
Intermittente : Elle est transitoire et apparait périodiquement.
-
Permanente : Continue d’exister jusqu’au moment où on répare la composante fautive.
Types de défaillance :
-
Crash : Un serveur s’arrête de fonctionner mais jusque là il fonctionne correctement.
-
Omission : Un serveur omet de répondre à une demande.
-
Timing : La réponse est en dehors des limites temporelles imposées par le système en
temps réel.
-
Réponse incorrect.
Chapitre VI - CEG4566/CSI4541 – RNM – SIGE – UOttawa – Hiver 2013
5
-
Défaillance arbitraire (Byzantine) : Des réponses arbitraires sont produites à des temps
arbitraires.
Classification des modes de défaillance
Mode défaillance
Domaine valeur
Domaine temps
En avance Omission
Erreur de
contrainte
Aléatoire
(Incontrollable)
En retard
Erreur
de
valeur
Défaillance sourde
Arrêt
Défaillance contrôlée
6.4.3 Risques et sécurité
-
dans le cadre des systèmes informatiques, la sécurité doit couvrir aussi bien les nuisances
de nature aléatoire (les dangers) que les nuisances de nature volontaire (les menaces).
-
Pour bien marquer cette distinction, les spécialistes de gestion des risques informatiques
utilisent les termes de :
o
Sécurité-innocuité dans le premier cas (Safety)
o
Sécurité-confidentialité dans le second cas (Security)
La sécurité-innocuité :
-
Elle concerne l’aptitude du système à ne pas connaitre d’événements catastrophiques.
-
Les dangers sont des défaillances du matériel, les défaillances du logiciel et les erreurs
humaines non intentionnelles (non malicieuses).
-
Ces aspects sont traités dans le cadre de la sureté de fonctionnement.
La sécurité-confidentialité :
-
Elle concerne l’aptitude du système à se prémunir de la manipulation non-autorisée de
l’information à des fins malveillantes.
-
Ces aspects sont traités dans le cadre de la sécurité des systèmes informatiques.
Note : Dans notre cours de système en temps réel, on ne regarde que les aspects de sureté de
fonctionnement (safety)
Chapitre VI - CEG4566/CSI4541 – RNM – SIGE – UOttawa – Hiver 2013
6
Exercice :
Cocher la bonne case : Sécurité-innocuité? ou –confidentialité?
6.4.4 Tolérance aux fautes
• Les systèmes embarqués, critiques et en temps réel sont toujours conçus comme étant des
systèmes ‘tolérants aux fautes’.
• La tolérance aux fautes est fortement liée aux notions suivantes : Disponibilité, fiabilité,
sécurité, sureté, maintenabilité. C’est ce qu’on appelle la ‘dépendabilité’.
Dépendabilité
Prêt à
l’usage
Disponible
Continuité
de
délivrance
du service
Fiable
Pas de
Pas
Aptitude à
conséquences Pas d’accès
être
catastrophiques non autorisé d’altération de
à
l’information
réparé
l’information
Sécuritaire
Confidentiel
Chapitre VI - CEG4566/CSI4541 – RNM – SIGE – UOttawa – Hiver 2013
Intègre
Maintenable
7
Exemple : Une attaque cybernétique :
6.4.5 Comment construire un système en temps réel tolérant aux fautes?
Réponse 1 : Il faut construire un système sûr de sa conception à sa validation.
Un système sûr de sa conception
à sa validation
Évitement
des fautes
Tolérance
aux fautes
Chapitre VI - CEG4566/CSI4541 – RNM – SIGE – UOttawa – Hiver 2013
Élimination
des fautes
Prévision
des fautes
8
Réponse 2 : Il faut prévoir des dispositions à la sécurité
Réponse 3 : Il faut intervenir à différentes étapes de la conception pour démontrer une assurance
de la conception et une assurance qualité.
Chapitre VI - CEG4566/CSI4541 – RNM – SIGE – UOttawa – Hiver 2013
9
6.5 Étude de cas, Pompe à insuline pour personnes diabétiques
(D’après Ian Sommerville, Software Engineering 8th edition)
6.5.1 Introduction
• Les systèmes médicaux intègrent de plus en plus des systèmes informatiques qui sont souvent
critiques. La défaillance de ces systèmes peut causer un danger pour la santé ou la vie des
patients.
• La sécurité des patients dépend du bon fonctionnement de ces équipements ainsi que de leur
exacte réponse dans le temps.
• Contrairement aux systèmes industriels, ces instrumentations biomédicales sont souvent
fortement intégrées et nécessitent une très grande précision.
6.5.2 Mise en situation
Les personnes soufrant de diabète ne sécrètent plus d’hormones naturelles pour le métabolisme
du glucose. La fonction du pancréas est remplacée par une insuline artificielle. D’où dans certains
cas la nécessité d’utiliser des pompes à insuline.
La pompe utilise un capteur qui mesure la quantité de glucose dans le sang à des intervalles de
temps réguliers. L’insuline sera injectée à des quantités qui ramènent le taux de glucose au taux
‘normal’. On observe donc, qu’on a des contraintes de temps et de précision.
Les attributs de ce type de système sont nécessairement :
-
La disponibilité.
-
La fiabilité
-
La sécurité
-
La vivacité
Question : Justifier ces trois attributs.
Chapitre VI - CEG4566/CSI4541 – RNM – SIGE – UOttawa – Hiver 2013
10
6.5.3 Architecture du système
Insulin reservoir
Needle
assembly
Pump
Clock
Sensor
Controller
Alarm
Display1
Display2
Power supply
Le flux de données pour un tel système peut se représenté comme suit :
Blood
Blood
parameters
Blood sugar
sensor
Blood sugar
analysis
Blood sugar
level
Insulin
requirement
computation
Insulin
Pump control
commands
Insulin
pump
Insulin
delivery
controller
Insulin
requirement
6.5.4 Algorithme
- Mesurer le taux de glucose dans le sang
- Comparer des mesures successives.
- Si le niveau de glucose augmente, alors injecter de l’insuline
- Maintenir un niveau stable de glucose
- Répéter.
Chapitre VI - CEG4566/CSI4541 – RNM – SIGE – UOttawa – Hiver 2013
11
Note : L’injection de l’insuline ne dépend pas seulement de la quantité de glucose dans le sang
mais aussi des injections précédentes car l’action de l’insuline n’est pas instantanée. L’algorithme
de décision d’injecter de l’insuline et sa quantité est assez complexe.
6.5.5 Scénarios d’injection d’insuline
Niveau
De glucose
Injecter
Région indésirable
Injecter
Ne pas injecter
Ne pas injecter
Région sécuritaire
Ne pas injecter
Région non sécuritaire
t1
t2
t3
Temps
6.5.6 Travail personnel
Étudier et analyser en détail cette pompe à insuline. Décrire des architectures logicielles et
matérielles qui respectent les attributs de ce système en temps réel, embarqué et critique.
Chapitre VI - CEG4566/CSI4541 – RNM – SIGE – UOttawa – Hiver 2013
12