Какие операционные системы используются в самолетах и ​​на каких языках программирования они разработаны? [закрыто]

113

Мне было интересно, если кто-нибудь знает, какая операционная система используется в коммерческих самолетах (скажем, Boeing или Airbus).

Кроме того, что является (предпочтительным) языком программирования в реальном времени? Я слышал, что Ада используется в Боинге, поэтому мой вопрос - почему Ада? По каким критериям ребята из Боинга должны были выбрать этот язык? (Я полагаю, что Java не был бы хорошим выбором, если точно при взлете проснулся сборщик мусора).

adhg
источник
11
Когда я впервые увидел этот вопрос, я подумал, что он спрашивает о системах, которые запускают фильмы в полете и тому подобное в спинках сидений. Однажды я был на рейсе Delta, где они перезагрузили эту систему, и вы могли сказать, что она работала под Linux - вариант Debian, я считаю.
Крис Харпер
1
@ root45: аааа ... признаюсь, это даже не приходило мне в голову. Можно было бы. Я видел, что некоторые запускают некоторые QNX, я думаю, а другие используют Windows Embedded.
Хайлем
17
«Какую операционную систему он использует?» «Я думаю, что это Vista». "Мы умрем!"
StuperUser
1
@StuperUser: Один из моих любимых эпизодов IT Crowd. ( youtube.com/watch?v=8y4akOH8v8Q - 2:34 минуты). Кроме того, не только коммерческие авиалинии, но было бы интересно узнать больше о том, какие военные самолеты используют, если это не то же самое. Vista, смеется
Bratch
1
@Piskvor: существуют виртуальные машины для Java в реальном времени (как на языке, а не на платформе). Я не знаю, использовались ли варианты JavaRT для серьезных (и обитаемых) систем полетов, но я видел, что они использовались для моделей или дронов.
Хайлем

Ответы:

157

Avionics

Что касается систем управления самолетом, мы говорим не об операционных системах, а об авионике , интегрированной авионике или компьютерных бортовых системах в целом. И они на самом деле являются комбинацией множества независимых или взаимозависимых систем для различных функций ( управление полетом , предотвращение столкновений , погода, связь, черные ящики ...).

Каждый контроллер, как правило, представляет собой независимый модуль (аппаратное и программное обеспечение) по очевидным причинам безопасности и безопасности: они являются критически важными системами управления и контроля, и если одна из них выйдет из строя или выйдет из строя, это будет довольно большим «неудобством» для людей, которые в зависимости от самолета. Надёжность принимает все свое значение , когда вы находитесь в летающей машине. Так обычно это

  • изготовленный на заказ для цели их миссии,
  • построены для самостоятельной работы и взаимодействия с другими системами,
  • созданный, чтобы быть отказоустойчивым к собственным сбоям И к сбоям других систем, к которым он подключен (потому что вы не хотите, чтобы звуковая система пилота, например, отключала органы управления двигателем).

Это не большой компьютер, на котором все работает. Если вы думаете об этом с точки зрения военного самолета, а не коммерческого (хотя в этом отношении он похож, изображение могло бы помочь): если выстрелить по какой-либо части, вы, по крайней мере, предпочли бы, чтобы другие части были в состоянии продолжать (часть, контролирующая системы связи и безопасности, может быть интересна для поддержания жизни ...). Отсюда также большой набор кнопок, которые вы видите на лайнерах, чтобы отслеживать состояние различных систем.

Они обычно либо создаются как пользовательские компоненты, работающие на собственной системе, либо запускаются и планируются микроядром (в большинстве случаев с поддержкой возможностей в реальном времени ).

Очевидно, что это зависит от поставщиков и стран, но обычно они, по крайней мере, должны следовать довольно строгим правилам, требованиям к дизайну и особенностям протокола, которые позволяют:

  • контроль за их строгим соответствием стандартам безопасности и охраны,
  • взаимодействие с другими системами (гораздо лучше, если тот самолет, с которым вы взлетели в Рейкьявике, может «разговаривать» с этим наземным оборудованием управления в Токио ...)

Усилия по стандартизации

DO-178B (пересмотренный в 1992 году) и его преемник DO-178C (пересмотренный в 2012 году) (и куча сопутствующих документов) является примером эталонных сертификатов для таких уровней соответствия, и признан FAA (США), EASA (ЕС) и Транспорт Канады, среди других. Несколько других организаций участвуют в создании таких документов, таких как EUROCAE .

Такие бортовые системы обычно являются специальным программным обеспечением, но известно, что в некоторых самолетах используются следующие системы:

Чтобы дать вам смутное представление об элементах, встроенных в систему авионики, этот список сокращений авионики указывает на некоторые из них (с некоторым перекрытием).

Известные языки, используемые в коммерческой и военной авионике

Помимо обычных подозреваемых, которых мы знаем в «основном» мире программирования, вы найдете несколько часто упоминаемых имен, таких как Ada , и некоторые менее известные языки, такие как (датированный и теперь «вышедший из употребления » с 2010 года) JOVIAL .


Связанные вопросы StackExchange:

haylem
источник
2
@mattnz: Спасибо. Но, честно говоря, это немного далеко от того, что просит ОП. Я пытался предоставить полезную информацию и указатели для целей документирования, но когда дело доходит до реальных деталей реализации, труднее найти точные данные.
Хайлем
«И они на самом деле представляют собой совокупность множества независимых или взаимозависимых систем». Вы имеете в виду, что для них есть отдельное оборудование?
Stijn
2
Да, они, как правило, специально изготовленные аппаратные средства. На вашем самолете нет стеллажа по x86 шт.
Рог
3
@stijn: Ну да. Думайте об этом так. Они являются критическими системами контроля и управления. Если один из них потерпит неудачу, это означает, что у него большая проблема с супер большим F и менее вежливым. Так что обычно это: а) специально построенные для цели их работы б) построенные для самостоятельной работы и взаимодействия с другими системами в) построенные таким образом, чтобы быть отказоустойчивыми к своим собственным сбоям И к сбоям других систем, к которым он подключен (потому что например, не хочу, чтобы звуковая система пилота отключала органы управления двигателем). Это не большой компьютер, на котором все работает.
Хайлем
@stijn: Подумайте об этом с точки зрения военного самолета, а не коммерческого, если это поможет: если выстрелить по какой-либо части, вы бы предпочли, чтобы по крайней мере некоторые другие части могли продолжать движение (я бы сказал, часть, управляющая системами связи и безопасности, может быть интересной, чтобы сохранить жизнь ...). Отсюда также большой набор кнопок, которые вы видите на лайнерах, чтобы отслеживать состояние различных систем.
Хайлем
22

Большинство современных самолетов используют ОСРВ общего назначения (операционную систему реального времени), почти то же самое, что используется в автоматизации производства, электростанциях, кораблях и т. Д.

Аэробус использует несколько, включая INTEGRITY от Northrop-grumman и программирует это на C / C ++, Boeing использует VxWorks среди других

Мартин Беккет
источник
2
Утверждение «... ОСРВ общего назначения ...» упрощает то, что требуется для ОСРВ, чтобы превратить ее в систему авионики, это вряд ли та ОСО, которая используется в ACME Corps Digital TV Reciever.
Mattnz
3
Нет, но VxWorks можно использовать для чего угодно, от Mar Rover до вашего телефона Blackberry
Мартин Беккет
Извините, это QNX, который используется в Blackberry, а не VxWorks. Но применяется тот же принцип - COTS rtos можно использовать в самолете
Мартин Беккет
12

Для чего это стоит: Для космических аппаратов (спутниковых и межпланетных) C и C ++ по-прежнему доминируют (и с очень строгим соответствием стандартам ISO), обычно работают под управлением VxWorks. Лаборатории, как правило, придерживаются C или C ++, основываясь на знакомстве разработчиков, уверенности в наборе инструментов компилятора и внутренних стандартах кодирования. Существуют веские причины для обоих языков для программного обеспечения для полета в реальном времени, но каждая организация стремится придерживаться одного или другого. Вспомогательные инструменты, с другой стороны, обычно программируются на Forth, C и все более современных языках сценариев, таких как Lua.

Билл В.Б.
источник
3
Обычно это также подмножество C или C ++, например MISRA C или JSF C ++, насколько я читал.
Кодер
10

Также стоит отметить, что системы управления часто разрабатываются с использованием модельно-ориентированного проектирования с использованием Simulink. Затем дизайн автоматически преобразуется в C-код. Люди все еще читают и проверяют код.

Бен Мартин
источник
Мой профессор действительно упоминал об этом, когда говорил о критических системах в программной инженерии.
Продажи Dielson
Я считаю, что Airbus использует SCADE для функциональной спецификации аппаратного и программного обеспечения в своих системах управления полетом. Инструмент может генерировать код C или Ada.
dodgy_coder