Je me demandais si quelqu'un sait quel est le système d'exploitation utilisé dans les avions commerciaux (disons Boeing ou Airbus).
En outre, quel est le langage de programmation en temps réel (préféré)? J'ai entendu dire qu'Ada est utilisé dans Boeing, alors ma question est - pourquoi Ada? quels sont les critères que les gars de Boeing ont dû choisir pour cette langue? (Je suppose que Java ne serait pas un excellent choix si exactement au décollage le ramasse-miettes se réveille).
Pour les systèmes de contrôle des avions, nous ne parlons pas de systèmes d'exploitation mais de avionique , avionique intégrée ou des systèmes aéroportés informatiques en général. Et ils sont en réalité une combinaison d'une multitude de systèmes indépendants ou interdépendants, pour différentes fonctions ( contrôle de vol , prévention des collisions , météo, communications, boîtes noires) ...).
Chaque contrôleur est généralement un module indépendant (matériel et logiciel) pour des raisons évidentes de sécurité et de sûreté: ce sont des systèmes de contrôle et de surveillance critiques et si l'un d'entre eux devait tomber en panne ou être endommagé, c'est un assez gros "inconvénient" pour les personnes qui sont selon l'avion. Fiabilité prend tout son sens lorsque vous êtes dans la machine volante. Donc c'est généralement
Ce n'est pas un gros ordinateur qui fait tout fonctionner. Si vous y pensez du point de vue d'un avion militaire plutôt que commercial (bien qu'il soit similaire à cet égard, l'image pourrait aider): si une pièce est prise pour cible, vous préférez au moins que d'autres parties puissent pour continuer (la partie contrôlant les systèmes de communication et de sécurité peut être intéressante à maintenir en vie ...). D'où aussi le gros tas de boutons que vous voyez dans les avions de ligne, pour garder une trace de l'état des différents systèmes.
Ils sont généralement soit construits en tant que composants personnalisés exploitant leur propre système, soit exécutés et planifiés par un micro-noyau (dans la plupart des cas, avec prise en charge des capacités temps réel ).
Cela dépend évidemment des fournisseurs et des pays, mais ils doivent généralement au moins suivre des ensembles de réglementations, d'exigences de conception et de protocoles spécifiques assez stricts, qui permettent:
Le DO-178B (révisé en 1992) et son successeur le DO-178C (révisé en 2012) (et un tas de documents associés) sont un exemple de certifications de référence pour ces niveaux de conformité, et sont reconnus par la FAA (États-Unis), l'AESA (UE) et Transports Canada, entre autres. Plusieurs autres organisations sont impliquées dans la création de tels documents, comme EUROCAE .
Ces systèmes aéroportés sont généralement des logiciels sur mesure, mais les systèmes suivants sont connus pour être utilisés dans certains avions:
Pour vous donner une vague idée des éléments intégrés dans un système avionique, cette liste des acronymes avioniques en indique certains (avec un certain chevauchement).
Mis à part les suspects habituels que nous connaissons dans le monde de la programmation "grand public", vous trouverez des noms souvent référencés comme Ada , et quelques langues moins connues comme le (daté et maintenant "retiré" depuis 2010 ) JOVIAL .
La plupart des avions modernes utilisent un usage général RTOS (système d'exploitation en temps réel) à peu près la même chose que celle utilisée dans l'automatisation d'usine, les centrales électriques, les navires, etc.
Airbus en utilise quelques-uns, dont INTEGRITY de Northrop-grumman et le programme en C/C++, Boeing utilise VxWorks entre autres
Pour ce que ça vaut: Pour les vaisseaux spatiaux (satellites et interplanétaires), le C et le C++ sont toujours dominants (et avec une conformité très stricte aux normes ISO), exécutant généralement VxWorks. Les laboratoires s'en tiennent généralement au C ou au C++ en fonction de la familiarité des développeurs, de la confiance dans la chaîne d'outils du compilateur et des normes de codage internes. Il existe des raisons impérieuses pour les deux langues pour les logiciels de vol en temps réel, mais chaque organisation a tendance à rester avec l'un ou l'autre. Les instruments auxiliaires, d'autre part, sont généralement programmés en Forth, C et dans des langages de script de plus en plus modernes comme Lua.
Il convient également de noter que les systèmes de contrôle sont souvent développés à l'aide d'une conception basée sur un modèle utilisant Simulink. Le dessin est ensuite automatiquement converti en code C. Les humains lisent et valident toujours le code.