Операционная система межпланетного космического корабля и язык программирования

Какие языки программирования и операционные системы в основном используются для межпланетных спутников (например, для полетов на Луну)?

Насколько мне известно, некоторые спутники LEO CubeSat используют язык программирования C с системой FREERTOS. Это то же самое для межпланетного полета или что-то еще используется для решения более сложных задач?

Я считаю, что Ada и C/C++ — самые распространенные языки программирования. Операционные системы более разнообразны, некоторые датчики вообще не используют ОС (встроенные системы). VxWorks использовался в ряде приложений НАСА. Rosetta ЕКА использовала Virtuoso RTOS. Это затрудняет определение части этого вопроса, касающейся операционной системы. Может быть, вы могли бы объяснить немного больше, почему вы хотите знать, чтобы мы могли немного сузить круг вопросов.

Ответы (2)

Filo охватывает операционные системы, поэтому я не буду повторять это здесь (за исключением ссылки на этот ответ об ОС New Horizons , которая представляет собой Nucleus RTOS , а не VxWorks, в качестве изменения).

Что касается языков программирования, то здесь неизбежно много C и C++, хотя есть шанс, что несколько ограниченное подмножество языков используется для повышения безопасности, упрощения рассуждений о программах, ограничения отклика в реальном времени и использования памяти и всего остального, чтобы они не совсем будет обычным C и C++.

Для некоторых примеров вещей, которые не являются C, как насчет:

  • HAL/S , изначально разработанный для Space Shuttle (очевидно, 85% программного обеспечения для шаттлов было написано на нем). Он использовался для других целей, таких как Galileo , который был собран еще тогда, когда шаттл еще существовал.
  • Язык ассемблера распространен, особенно для старых проектов, где поддержка языков высокого уровня была бы намного хуже. Исходный код Apollo 11 AGC является открытым исходным кодом, если вы хотите увидеть, как он выглядит.
  • ФОРТРАН, кажется, везде. "Вояджер" использовал FORTRAN 5 (предположительно не выпущенный в 1905 году, но иногда я удивляюсь... конечно, он предшествовал строчным буквам), а позже Fortran 77, а также немного C и немного языка ассемблера.
  • Ада появлялась во многих проектах , включая Huygens , Mars Express и Rosetta .
  • Форт также используетсяNEAR , Galileo, Cassini, Rosetta и других), хотя, как мне кажется, больше для небольших подкомпонентов и датчиков, чем для более крупных и сложных систем управления. Это совершенно другой язык по сравнению со всеми остальными, перечисленными здесь.
  • Есть вещи, которые транспилируются в C, например Simulink . Очевидно, он использовался для управления и контроля в New Horizons , хотя подавляющее большинство остального программного обеспечения зонда было написано непосредственно на C.

Я не сомневаюсь, что есть много других, но это, кажется, заботится о подавляющем большинстве вещей.

1905? Это старый зонд! :)
@ Called2voyage, конечно, не путать с fortran V.
@StarfishPrime Точно, простые вещи. :П
Я знаю, что Лисп использовался на земле, но я также уверен, что слышал о том, что он использовался по крайней мере на одном космическом корабле.
@JörgWMittag это возможно, но маловероятно ... магия распределения памяти, например, не обязательно хорошо сочетается с той предсказуемостью, которая нравится людям в отношении безопасности или критического программного обеспечения в реальном времени. Вы можете обойти это, но это огромный faff.

Пример 1: RTEMS, источник https://devel.rtems.org/wiki/TBR/Website/Wheres_RTEMS

Пример 2: VxWorks, источник: https://en.wikipedia.org/wiki/VxWorks#Aerospace_and_defense