民間航空機で使用されているオペレーティングシステム(ボーイングやエアバスなど)が誰か知っているかどうか疑問に思いました。
また、(推奨される)リアルタイムプログラミング言語は何ですか?ボーイングでエイダが使われていると聞いたので、私の質問です-なぜエイダですか?ボーイング達がこの言語を選択しなければならなかった基準は何ですか? (Javaは、リフトオフ時にガベージコレクターがウェイクアップする場合、適切な選択肢ではないでしょう)。
航空機制御システムの場合、オペレーティングシステムではなく、 avionics 、 integrated avionics 、またはコンピューターの空中システム一般について話します。そして、それらは実際には、さまざまな機能( 飛行制御 、 衝突回避 、天気、通信、 ブラックボックス)のための、多数の独立または相互依存システムの組み合わせです。 ...)。
各コントローラは通常、明らかなセキュリティと安全上の理由から独立したモジュール(ハードウェアとソフトウェア)です。これらは重要な制御および監視システムであり、それらの1つが故障または損傷した場合、それは人々にとってかなり大きな「不便」です。航空機によって異なります。 Dependability は、フライングマシンでinの場合にすべての意味を持ちます。だから通常は
それはすべてを実行する大きなコンピュータではありません。商用機ではなく軍用機の観点から考えた場合(この点では似ていますが、画像が役立つ場合があります):パーツが狙われた場合、少なくとも他のパーツが使用可能になることを望みます。続行します(通信と安全システムを制御する部分は、存続するのに興味深いかもしれません...)。したがって、さまざまなシステムのステータスを追跡するために、ジェットライナーに表示される多数のボタンも表示されます。
これらは通常、独自のシステムを操作するカスタムコンポーネントとして構築されるか、マイクロカーネルによって実行およびスケジュールされます(ほとんどの場合、 real-time 機能をサポートしています)。
ベンダーや国によって異なりますが、通常、少なくとも次のことを可能にする規制、設計要件、プロトコル仕様のかなり厳しいセットに従う必要があります。
DO-178B (1992年に改訂)およびその後継 DO-178C (2012年に改訂)(および関連ドキュメントの束)は、このようなコンプライアンスレベルは、FAA(米国)、EASA(EU)、カナダ運輸省などによって承認されています。 [〜#〜] eurocae [〜#〜] など、他の複数の組織がこのようなドキュメントの作成に関与しています。
このような空中システムは通常、特注のソフトウェアですが、次のシステムは一部の飛行機で使用されることが知られています。
アビオニクスシステムに組み込まれている要素の漠然としたアイデアを提供するために、これは アビオニクスの頭字語のリスト がそれらの一部を指します(一部重複しています)。
「主流」のプログラミングの世界で私たちが知っている通常の容疑者とは別に、 Ada のような頻繁に参照される名前や、(古く、現在は「廃止」された)2010などのあまり知られていない言語が表示されます) [〜#〜]陽気な[〜#〜] 。
最新の航空機のほとんどは、汎用RTOS(リアルタイムオペレーティングシステム)を使用しています)は、ファクトリオートメーション、発電所、船舶などで使用されているものとほとんど同じです。
エアバスはNorthrop-grummanからのINTEGRITYを含むいくつかを使用し、C/C++でプログラミングします。ボーイングはとりわけVxWorksを使用します
価値があること:宇宙船(衛星および惑星間宇宙船)の場合、CおよびC++が依然として支配的であり(ISO規格に非常に厳密に準拠)、通常はVxWorksを実行しています。ラボは通常、開発者の知識、コンパイラツールチェーンへの信頼、および内部コーディング標準に基づいて、CまたはC++のいずれかに固執します。リアルタイムフライトソフトウェアの両方の言語には説得力のある理由がありますが、各組織はどちらか一方に固執する傾向があります。一方、補助計測器は、一般にForth、C、およびLuaのような最近のスクリプト言語でプログラミングされています。
制御システムは、Simulinkを使用したモデルベースの設計を使用して開発されることが多いことにも注意してください。その後、デザインは自動的にCコードに変換されます。人間はまだコードを読んで検証しています。