• Aucun résultat trouvé

Un programme tout simple (1/5)

N/A
N/A
Protected

Academic year: 2022

Partager "Un programme tout simple (1/5)"

Copied!
57
0
0

Texte intégral

(1)

Alias Ariane 501 Conclusion Débarras

Ariane 502 : analyse des variables partagées

(une application de la théorie de la concurrence?)

jeanjacqueslevy.net

INRIA Rocquencourt École polytechnique

(2)

Alias Ariane 501 Conclusion Débarras

Plan

Alias

Ariane 501

(3)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (1/5)

v i v e l ’ i n f o r m a t i q u e !

j ’ a i m e l ’ i n f o r m a t i q u e s

d

i

j

longueur

static void copie(char[ ] s, int i, char[ ] d, int j, int longueur) {

(4)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l ’ i n f o r m a t i q u e !

s longueur

(5)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l i n f o r m a t i q u e !

s longueur

(6)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l l i n f o r m a t i q u e !

s longueur

(7)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l l l n f o r m a t i q u e !

s longueur

(8)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l l l l f o r m a t i q u e !

s longueur

(9)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l l l l l o r m a t i q u e !

s longueur

(10)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l l l l l l r m a t i q u e !

s longueur

(11)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l l l l l l l m a t i q u e !

s longueur

(12)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l l l l l l l l a t i q u e !

s longueur

(13)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l l l l l l l l l t i q u e !

s longueur

(14)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l l l l l l l l l l i q u e !

s longueur

(15)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l l l l l l l l l l l q u e !

s longueur

(16)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l l l l l l l l l l l l u e !

s longueur

(17)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l l l l l l l l l l l l l e !

s longueur

(18)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l l l l l l l l l l l l l l !

s longueur

(19)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l l l l l l l l l l l l l l l !

s longueur

(20)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l ’ i n f o r m a t i q u e !

s longueur

(21)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l ’ i n f o r m a t i q u e !

s longueur

(22)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l ’ i n f o r m a t i q u e e !

s longueur

(23)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l ’ i n f o r m a t i q u u e !

s longueur

(24)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l ’ i n f o r m a t i q q u e !

s longueur

(25)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l ’ i n f o r m a t i i q u e !

s longueur

(26)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l ’ i n f o r m a t t i q u e !

s longueur

(27)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l ’ i n f o r m a a t i q u e !

s longueur

(28)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l ’ i n f o r m m a t i q u e !

s longueur

(29)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l ’ i n f o r r m a t i q u e !

s longueur

(30)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l ’ i n f o o r m a t i q u e !

s longueur

(31)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l ’ i n f f o r m a t i q u e !

s longueur

(32)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l ’ i n n f o r m a t i q u e !

s longueur

(33)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l ’ i i n f o r m a t i q u e !

s longueur

(34)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l ’ i n f o r m a t i q u e !

s longueur

(35)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l l ’ i n f o r m a t i q u e !

s longueur

(36)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (2/5)

Non, car bogue sis etd sont deuxalias(s==d)

v i v e l ’ i n f o r m a t i q u e !

s longueur

(37)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (3/5)

Le programme correct :

static void copie(char[ ] s, int i, char[ ] d, int j, int longueur) {

if (s != d || j <= i)

(38)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (4/5)

I aliasinoffensifssi donnéesnon modifiables.

(au contraire, ils améliorent l’occupation mémoire);

I langages fonctionnels (ML, Caml, Haskell) favorisent l’utilisation de données non modifiables.

I aliasdangereuxsi donnéesmodifiables;

I la recherche d’aliasdans un programme est un problème important (Ariane 5, Word 97, Windows XP, etc)

⇒Analyse statiquede programmes ;

(39)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (4/5)

I aliasinoffensifssi donnéesnon modifiables.

(au contraire, ils améliorent l’occupation mémoire);

I langages fonctionnels (ML, Caml, Haskell) favorisent l’utilisation de données non modifiables.

I aliasdangereuxsi donnéesmodifiables;

I la recherche d’aliasdans un programme est un problème important (Ariane 5, Word 97, Windows XP, etc)

⇒Analyse statiquede programmes ;

(40)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (4/5)

I aliasinoffensifssi donnéesnon modifiables.

(au contraire, ils améliorent l’occupation mémoire);

I langages fonctionnels (ML, Caml, Haskell) favorisent l’utilisation de données non modifiables.

I aliasdangereuxsi donnéesmodifiables;

I la recherche d’aliasdans un programme est un problème important (Ariane 5, Word 97, Windows XP, etc)

⇒Analyse statiquede programmes ;

(41)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (4/5)

I aliasinoffensifssi donnéesnon modifiables.

(au contraire, ils améliorent l’occupation mémoire);

I langages fonctionnels (ML, Caml, Haskell) favorisent l’utilisation de données non modifiables.

I aliasdangereuxsi donnéesmodifiables;

I la recherche d’aliasdans un programme est un problème important (Ariane 5, Word 97, Windows XP, etc)

⇒Analyse statiquede programmes ;

(42)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (4/5)

I aliasinoffensifssi donnéesnon modifiables.

(au contraire, ils améliorent l’occupation mémoire);

I langages fonctionnels (ML, Caml, Haskell) favorisent l’utilisation de données non modifiables.

I aliasdangereuxsi donnéesmodifiables;

I la recherche d’aliasdans un programme est un problème important (Ariane 5, Word 97, Windows XP, etc)

⇒Analyse statiquede programmes ;

(43)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (4/5)

I aliasinoffensifssi donnéesnon modifiables.

(au contraire, ils améliorent l’occupation mémoire);

I langages fonctionnels (ML, Caml, Haskell) favorisent l’utilisation de données non modifiables.

I aliasdangereuxsi donnéesmodifiables;

I la recherche d’aliasdans un programme est un problème important (Ariane 5, Word 97, Windows XP, etc)

⇒Analyse statiquede programmes ;

(44)

Alias Ariane 501 Conclusion Débarras

Un programme tout simple (5/5)

I méthodes flow-sensitive (CFA) sont impraticables sur gros programmes ;

I méthodes flow-insensitive[Andersen 94]traitent en quelques secondes plusieurs n×1000 locs ;

(45)

Alias Ariane 501 Conclusion Débarras

Ariane 501 (1/4)

Juin 1996

I Le lanceur a commencé à se désintégrer à environ H0 + 39 secondes sous l’effet de charges aérodynamiques dues à un angle d’attaque de plus de 20 degrés.

I cet angle d’attaque avait pour origine le braquage en butée des tuyères des moteurs à propergols solides et du moteur principal Vulcain ;

I le braquage des tuyères a été commandé par le logiciel du calculateur de bord (OBC) agissant sur la base des données transmises par le système de référence inertielle actif (SRI2). A cet instant, une partie de ces données ne contenait pas des données de vol proprement dites mais affichait un profil de bit spécifique de la panne du calculateur du SRI 2 qui a été interprété comme étant des données de vol ;

(46)

Alias Ariane 501 Conclusion Débarras

Ariane 501 (2/4)

Juin 1996

I l’exception logiciel interne du SRI s’est produite pendant une conversion de données de représentation flottante à 64 bits en valeurs entières à 16 bits. Le nombre en représentation flottante qui a été converti avait une valeur qui était supérieure à ce que pouvait exprimer un nombre entier à 16 bits. Il en est résulté une erreur d’opérande.Les instructions de conversion de données (en code

Ada ) n’étaient pas protégées contre le déclenchement d’une erreur d’opérande bien que d’autres conversions de variables comparables présentes à la même place dans le code aient été protégées;

I l’erreur s’est produite dans une partie du logiciel qui n’assure que l’alignement de la plate-forme inertielle à composants liés. Ce module de logiciel calcule des résultats significatifs avant le décollage seulement. Dès que le lanceur décolle,

(47)

Alias Ariane 501 Conclusion Débarras

Ariane 501 (3/4)

Juin 1996

I l’erreur d’opérande s’est produite sous l’effet d’une valeur élevée non prévue d’un résultat de la fonction d’alignement interne appelé BH (Biais Horizontal) et lié à la vitesse horizontale détectée par la plate-forme. Le calcul de cette valeur sert d’indicateur pour la précision de l’alignement en fonction du temps ; I la valeur BH était nettement plus élevée que la valeur escomptée car la première

partie de la trajectoire d’Ariane 5 diffère de celle d’Ariane 4, ce qui se traduit par des valeurs de vitesse horizontale considérablement supérieures.

(48)

Alias Ariane 501 Conclusion Débarras

Ariane 501 (4/5)

Novembre 1996 – Février 1997

I code embarqué=140000 locs dans un sous-ensemble de Ada+assembleur 68000 :

PV (programme de vol)[ 1 , 2 , 3 ]

LSSI (gestion de messages asynchrones avec périphériques)

SRI (centrale à inertie)

(49)

Alias Ariane 501 Conclusion Débarras

Ariane 501 (5/5)

Novembre 1996 – Février 1997

I index croisé desvariables partagéesentre processus concurrentsgrâce à IABC+outils publics (graphviz, gnat,emacs) ;

[ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 ]

I « améliorations du code »[Georges Gonthier]

[maintenant à Microsoft Research ];

(50)

Alias Ariane 501 Conclusion Débarras

Conclusion

I depuis les débuts de l’informatique, il y a des bogues ;

I bonneconnaissance de laprogrammation

⇒moinsde bogues ;

I l’analyse statique de code aide à les chasser ;

I outils automatiquesnécessaires dans les cas critiques ;

I besoin d’outilslogiquespour raisonner sur les programmes ;

I beaucoup de ces outils servent pour lasécurité;

(51)

Alias Ariane 501 Conclusion Débarras

Conclusion

I depuis les débuts de l’informatique, il y a des bogues ;

I bonneconnaissance de laprogrammation

⇒moinsde bogues ;

I l’analyse statique de code aide à les chasser ;

I outils automatiquesnécessaires dans les cas critiques ;

I besoin d’outilslogiquespour raisonner sur les programmes ;

I beaucoup de ces outils servent pour lasécurité;

(52)

Alias Ariane 501 Conclusion Débarras

Conclusion

I depuis les débuts de l’informatique, il y a des bogues ;

I bonneconnaissance de laprogrammation

⇒moinsde bogues ;

I l’analyse statique de code aide à les chasser ;

I outils automatiquesnécessaires dans les cas critiques ;

I besoin d’outilslogiquespour raisonner sur les programmes ;

I beaucoup de ces outils servent pour lasécurité;

(53)

Alias Ariane 501 Conclusion Débarras

Conclusion

I depuis les débuts de l’informatique, il y a des bogues ;

I bonneconnaissance de laprogrammation

⇒moinsde bogues ;

I l’analyse statique de code aide à les chasser ;

I outils automatiquesnécessaires dans les cas critiques ;

I besoin d’outilslogiquespour raisonner sur les programmes ;

I beaucoup de ces outils servent pour lasécurité;

(54)

Alias Ariane 501 Conclusion Débarras

Conclusion

I depuis les débuts de l’informatique, il y a des bogues ;

I bonneconnaissance de laprogrammation

⇒moinsde bogues ;

I l’analyse statique de code aide à les chasser ;

I outils automatiquesnécessaires dans les cas critiques ;

I besoin d’outilslogiquespour raisonner sur les programmes ;

I beaucoup de ces outils servent pour lasécurité;

(55)

Alias Ariane 501 Conclusion Débarras

Conclusion

I depuis les débuts de l’informatique, il y a des bogues ;

I bonneconnaissance de laprogrammation

⇒moinsde bogues ;

I l’analyse statique de code aide à les chasser ;

I outils automatiquesnécessaires dans les cas critiques ;

I besoin d’outilslogiquespour raisonner sur les programmes ;

I beaucoup de ces outils servent pour lasécurité;

(56)

Alias Ariane 501 Conclusion Débarras

Conclusion

I depuis les débuts de l’informatique, il y a des bogues ;

I bonneconnaissance de laprogrammation

⇒moinsde bogues ;

I l’analyse statique de code aide à les chasser ;

I outils automatiquesnécessaires dans les cas critiques ;

I besoin d’outilslogiquespour raisonner sur les programmes ;

I beaucoup de ces outils servent pour lasécurité;

(57)

Alias Ariane 501 Conclusion Débarras

Débarras

I Doc Sextant

I Doc Sextant 2

I PV non scalar

Références

Documents relatifs

Intégrale d’une fonction continue sur un segment ra, bs (définie à l’aide des primitives ; la version limite des sommes de Riemann est au programme du semestre 2).. Application

Non : comme toutes les ondes, les ondes sismiques se propagent sans transport de matière mais avec transport d’énergie.. 2.3 Une onde est longitudinale si la direction de

Ce Guide (voir notamment le Chapitre 5) précise la façon dont ces principes fondamentaux, ainsi que ceux dont ils découlent, sont appliqués dans la pratique.

Dénition d'une matrice, espace des matrices, égalité de deux matrices, transposée.. Cas particulier des matrices carrées : matrices triangulaires, matrices diagonales,

[r]

Bertrand et Chloé cherchent quel nombre afficher sur leurs calculatrices pour trouver le même résultat.. Procède de la même façon que précédemment

Voir Why numbering should start at zero, E... Vérifier que ces invariants sont

l’erreur d’opérande s’est produite sous l’effet d’une valeur élevée non prévue d’un résultat de la fonction d’alignement interne appelé BH (Biais Horizontal) et lié à