Я слышал разные вещи об этом. Некоторые люди утверждают, что использование Linux на критически важных с точки зрения безопасности системах авионики — очень плохая идея. С другой стороны, некоторые люди (незнакомые с авионикой) говорили, что это неправда.
Поэтому я хотел бы знать, работают ли в настоящее время самолеты на дистрибутиве Linux? Стоит ли внедрять Linux в самолеты? Если нет, то почему?
Ни одна из систем авионики, над которыми я работал, не использовала Linux или какую-либо операционную систему потребительского типа. Есть несколько основных вопросов.
Во-первых, это практическое. Большинство авионики, критически важной для безопасности, включают в себя контур управления и, следовательно, требуют работы в режиме реального времени. Это означает, что важно не просто запустить процесс и получить ответ, вам нужно получить ответ в строго контролируемые сроки. Каждый критический программный процесс в самолете запланирован таким образом, чтобы обеспечить стабильный контур управления. Для этого вам нужна ОС реального времени, а Linux — нет.
Во-вторых, необходимость сертификации. Программное обеспечение, используемое на воздушном судне, должно быть разработано с учетом соответствующего уровня обеспечения разработки (DAL) для соответствующего уровня опасности. Критические для безопасности системы должны соответствовать уровню DAL «A». Любая используемая вами ОС должна соответствовать тому же DAL, что и работающая на ней функция. Эти требования определены в RTCA DO-178C . Linux не был разработан в соответствии с этим стандартом. Есть только несколько платформ разработки ОС/программного обеспечения, которые могут быть сертифицированы. Green Hills, Wind River и LynxOS — это те немногие известные мне системы, которые соответствуют требованиям.
Есть еще одно ограничение, заключающееся в том, что сертификация требует очень строгого контроля версий. Авионика будет существовать много лет, и любые изменения в ней также должны быть сертифицированы. Как правило, нет веских причин для обновления ОС на старом устройстве, и во многих случаях вы не можете обойтись без обновления оборудования (что является большими затратами, которые никому не нужны). Таким образом, при обновлении старого устройства я должен создать «новое» программное обеспечение для работы с любой версией ОС, которая в настоящее время существует в продукте. Это может быть платформа возрастом 15 или 20 лет (или старше). Быстро развивающаяся ОС, такая как Linux, отрицательно скажется на долгосрочной поддержке продукта.
Короткий ответ заключается в том, что ни одна из известных мне систем авионики, критически важных с точки зрения безопасности, не использует Linux, а системы с наивысшей степенью критичности часто вообще не используют коммерческую операционную систему. Однако Linux используется в других критически важных для безопасности приложениях, таких как Space X Falcon 9 и медицинских приложениях. Трудно дать более подробное объяснение, не вдаваясь слишком глубоко, поскольку вопрос похож на вопрос «Изготавливаются ли современные планеры из наноматериалов?», где подробное объяснение должно было бы охватывать плюсы и минусы материала, места где его использование имеет наибольший и наименьший смысл, различия в производителях и обзор того, что используется вместо этого, и т. д. Я постараюсь кратко осветить все эти моменты со ссылками на дополнительную информацию.
Согласно этому отчету FAAс 2001 года некоторыми из основных операционных систем для сертифицированной авионики были VRTX, LynxOS, PSOS, VxWorks и Enea OSE, хотя некритическая авионика иногда использует другие системы, такие как Windows NT. (Да, LynxOS основана на Unix, а Linux считается «подобным Unix», но между ними есть много различий, например, Linux не похож на Mac OS X на основе BSD). Однако наиболее важные системы вообще не используют коммерческую ОС. Они отмечают: «С имеющимися на сегодняшний день данными в целом можно утверждать, что продукты COTS обычно не соответствуют требованиям к программному обеспечению уровня критичности А». С точки зрения непрофессионала, это означает, что большая часть авионики, разработанной с помощью стороннего программного обеспечения, от VxWorks до Linux, не тестировалась и не анализировалась в достаточной степени, чтобы ее можно было использовать в чем-то важном, например, в системе посадки, Блок TCAS или блок критического дисплея. Однако это, вероятно, изменилось за 10 с лишним лет, прошедших с момента написания отчета. Вот более свежийстатья об использовании операционной системы реального времени в авионике .
Важным понятием здесь является операционная система реального времени , или RTOS. В двух словах, RTOS гарантирует, что программное обеспечение не будет исчерпано запланированного вычислительного времени, сообщения между частями программного обеспечения передаются за небольшой промежуток времени, память не будет исчерпана, а другие важные задачи гарантированы вместо выполнения. хорошо в нормальных условиях, затем ломается в необычных условиях. Обычные операционные системы не могут дать таких гарантий. Эти гарантии или приемлемые заменители необходимы для сертификации большей части авионики.
Другой важной концепцией является различие между внутренними и коммерческими готовыми системами (COTS). Коммерческие готовые системы общедоступны и не сильно настраиваются для каждого производителя. В этой статье представлен хороший обзор плюсов и минусов коммерческих и собственных операционных систем. Многие виды авионики с высокой степенью ответственности по-прежнему имеют базовое программное обеспечение, разработанное собственными силами из-за связанных с этим преимуществ.
Да, Linux не «сертифицирован FAA», но на самом деле ни одна RTOS не «сертифицирована FAA» или «соответствует DO-178C». DO-178C устанавливает цели, которые должны выполнить инженеры систем авионики, чтобы сертифицировать все свое программное обеспечение авионики (среди прочего, цели охватывают аудиты, испытания, анализ безопасности и написание требований). Таким образом, лучшее, что может сделать поставщик ОС, это предоставить программное обеспечение, готовое к DO-178C, или следовать рекомендациям DO-178C. Обратите внимание, что DO-178C признает различные уровни безопасности, поэтому то, что подлежит сертификации по DO-178C для системы технического обслуживания, может не сертифицироваться по DO-178C для критического дисплея. Проблема с Linux не в том, что Linux не «сертифицирован по DO-178C», а в том, что его трудно сертифицировать из-за проблем, указанных ниже. Это' Можно сертифицировать систему с помощью Linux, но это может быть непомерно сложно из-за дополнительного анализа, мер безопасности и документации, которые потребуются, особенно для наиболее критической авионики. Некоторые из этих проблем и альтернативные методы соблюдения изложены вэтот отчет FAA .
В использовании Linux есть преимущества, которые частично совпадают с другими коммерческими системами. Больше сотрудников уже будут иметь опыт работы с Linux, а ОС была разработана с большим опытом и временем, чем у большинства организаций. Коммерческие системы также имеют гораздо более низкую цену, чем собственное программное обеспечение. Коммерческие системы также более адаптируемы и позволяют вносить изменения в оборудование и пространство для будущего роста, не возвращаясь к чертежной доске. Инструментарий для работы с программным обеспечением более развит, и у них также может быть более длительная история обслуживания, что обеспечивает уверенность в программном обеспечении.
Вот некоторые проблемы, с которыми Linux сталкивается в системе авионики при конкуренции с RTOS, из этого отчета FAA :
разбиение на разделы: если предполагается, что две программы работают независимо, должны быть доказательства того, что одна программа не может мешать другой через структуру общей памяти, кэши, поддержку платы и встроенное ПО, ошибки, прерывания и т. д.
время выполнения в худшем случае: в настольных компьютерах это нормально, если я перегружаю свой компьютер слишком большим количеством запросов или необычными условиями одновременно, и система замедляется или пропускает некоторые шаги программы. В авионике это неприемлемо по понятным причинам. Поставщик должен будет проверить это либо с помощью моделей ЦП, памяти и т. д., либо с помощью тщательных лабораторных испытаний и временного анализа. И то, и другое тем сложнее, чем сложнее ваше аппаратное и программное обеспечение.
А как насчет аналогичных критически важных с точки зрения безопасности отраслей? Space X Falcon использует Linux на некоторых своих бортовых компьютерах ( источники ). Основываясь на этом интервью , Space X, похоже, отдает приоритет будущему росту, доступности, короткому времени цикла и опыту, а не простоте и надежности собственной разработки в этой области. Обратите внимание, что компьютеры управления полетом на Space X Falcon не являются прямым аналогом LRU в типичной современной авионике, поэтому, вероятно, потребуется дополнительная работа или необычная архитектура, чтобы заставить Linux работать с типичными приложениями авионики.
Linux также используется во многих критически важных для безопасности медицинских приложениях, но не без проблем, подобных тем, с которыми сталкиваются в авиации. Я бы порекомендовал прочитать книгу Wind River «Выбор Linux для медицинских устройств» или эту статью о недостатках Linux в критически важных для безопасности медицинских приложениях.
Я предполагаю, что вы говорите об основных элементах авионики, таких как управление полетом, автопилот, дистанционное управление или дисплеи. Другие системы самолетов можно условно считать критически важными для безопасности, но они не являются типичными примерами критически важных для безопасности устройств, таких как сертифицированные электронные летные сумки, решения для подключения и программное обеспечение для обслуживания. Иногда они лучше подходят для приложений Linux из-за высокой сложности и менее строгих соображений безопасности.
Обратите внимание, что я не специалист в этой области и мой совет не заменяет совет специалиста по сертификации.
Кажется, пилоты сейчас хотя бы иногда используют планшеты для чек-листов .
Если эти планшеты являются устройствами Android ( большинство из них ), то они работают под управлением ядра Linux. Android использует меньше стандартного стека Linux, но по-прежнему использует ядро Linux. Я думаю, что контрольные списки имеют решающее значение для безопасности. Планшеты Apple и Windows используют разные ядра, а не Linux.
Существует множество приложений с контрольными списками для устройств Android . Я предполагаю, что кто-то их использует.
Ядро — это ядро операционной системы компьютера, которое сохраняет полный контроль над всеми остальными частями. Как проводка для авиалайнера.
Чтобы прояснить некоторые неправильные представления о Linux, которые встречаются во многих приведенных ответах.
Linux НЕ является «коммерческой» ОС. Это бесплатно для всех, кто может скачать и взломать, как им заблагорассудится. (Некоторые компании упаковывают его с множеством приложений в виде дистрибутива или «дистрибутива» и взимают плату за поддержку пакета).
Linux НЕ является монолитной сборкой с множеством посторонних функций. Ядро ядра Linux достаточно простое и подходящее, чтобы его можно было установить на смарт-часы и многие другие встраиваемые устройства. Излишества поставляются множеством дополнительных модулей ядра. Когда вы собираете ядро Linux для установки, вы выбираете, какие модули вам нужны, и хотите ли вы, чтобы они были свернуты в один большой двоичный объект с ядром (быстро) или висели вокруг него в виде отдельных двоичных объектов (операционно гибкие).
Linux НЕ является «пользовательской» ОС. Для этого вам нужно добавить слой интерфейса, такой как GNU или Android. Он широко используется во встраиваемых приложениях, где инженеры компании сделали то, что описано выше.
Linux не более небезопасен, чем любая другая ОС. Действительно, многие считают его одним из самых безопасных. Это часть пользовательского пространства, где такие дистрибутивы, как Android, ужасно ошибаются, в то время как еще одна серия недавних эксплойтов была сосредоточена на недостатках аппаратного дизайна.
Linux может быть настолько стабильным и поддерживаемым, насколько вы этого хотите. Компания, выпускающая ОС для авионики, может с радостью поддерживать данную сборку ядра в течение двадцати и более лет и просто игнорировать неустанный поток достижений до тех пор, пока им не понадобится использовать его для обновления или нового продукта. Данная настройка часто может быть «перенесена» в вашу старую сборку, поэтому вам не нужно иметь дело с полным обновлением.
В Linux доступны различные настройки реального времени, если вы хотите их использовать. Возможно, ни один из них не является полностью удовлетворительным для основного управления полетом, но открытое лицензирование означает, что в принципе ничто не мешает вам засучить рукава и настроить его самостоятельно. Затем вы можете отправить свой код обратно в исходное дерево Linux, и другие могут использовать его и улучшать его.
Сказав все это, настроить Linux для конкретного режима аппаратного/программного обеспечения — это большая работа, а открытое лицензирование затрудняет взимание больших гонораров. Таким образом, компаниям-разработчикам программного обеспечения столь же трудно зарабатывать на жизнь этим, поэтому, если компания-разработчик авионики не хочет тратить средства на настройку своей собственной ОС, она найдет только предложения с коммерческой лицензией, доступные от специалистов.
Последнее является основной причиной того, что Linux редко, если вообще когда-либо, появляется в авионике, и почему все остальные проблемы не решаются.
С другой стороны, если вы включите потребительские и недорогие коммерческие дроны, Linux уже популярен, если не доминирует. Нет сомнений, что в ближайшие годы он будет неуклонно продвигаться вверх по пищевой цепочке.
Используется ли Linux для приложений, критически важных с точки зрения безопасности? Нет да. Возможно. Потерпите меня...
USS Umwalt использует Linux для своих обширных требований к данным и LynxOS для встроенных приложений жесткого реального времени, описанных в этой статье .
Стандартный ноутбук Linux — это операционная система пользовательского пространства: она ждет, пока пользователь не щелкнет мышью, не нажмет клавишу или не сгенерирует вывод, а затем приступит к действию. Может быть или не быть много открытых программ. Пользовательский ввод является статистическим событием с точки зрения операционной системы: он может произойти или не произойти в следующую минуту.
Сравните это с цифровым контуром управления. Он работает на процессоре и использует память, просто стандартное компьютерное оборудование. Но они отличаются от программного обеспечения для настольных компьютеров тем, что они:
Программное обеспечение должно считывать входные данные и генерировать выходные данные на каждой итерации, а кадр итерации выполняется в течение фиксированного периода времени. Система жесткого реального времени — это система, в которой временные ответы должны быть детерминированными: все, что она делает, должно быть завершено в течение одной итерации программного обеспечения. Если цикл управления работает с частотой 100 Гц, итерационный цикл занимает 10 мс, и аппаратное обеспечение должно быть достаточно быстрым, чтобы гарантировать, что весь процесс может завершиться вовремя, каждый раз.
Эти циклы управления, как правило, невелики и обычно не имеют открытых окон в диапазоне от 1 до 100. Небольшие и быстрые программы и ограниченное количество окон — вот как работают операционные системы для критических программ безопасности и циклов реального времени. сделаны для. И это здорово, в прежние времена для этого не существовало операционной системы, и код приходилось писать на ассемблере или еще хуже. Вызовы ввода-вывода были аппаратно-зависимыми и поэтому не переносились с одного набора микросхем на другой.
Именно здесь вступают в действие операционные системы реального времени, такие как VxWorks, LynxOS и некоторые другие. Они основаны на Unix и совместимы с POSIX. Аппаратный уровень сделан невидимым для программиста, у которого есть набор средств разработки для использования компьютерных языков высокого уровня со стандартными вызовами ввода-вывода и процедурами синхронизации. Они масштабируемы: вы можете начать с операционной системы, которая просто загружается, а затем сразу же запускает кросс-компилированный двоичный файл со скоростью, заданной в интерфейсе таймера. Или вы можете переконфигурировать ядро и включить пару пользовательских прерываний, которые проверяют ввод данных с клавиатуры или RS-232, все зависит от программиста, у которого также есть обширный набор инструментов для синхронизации и ввода-вывода.
VxWorks может быть дорогим (но хорошо поддерживается), и теперь есть несколько альтернатив с открытым исходным кодом, основанных на ядре Linux, таких как Xenomai , RTLinux и Xilinx . Некоторые из них пытаются сделать все службы доступными для настольных приложений и имеют только таймер прерывания, который делает все возможное, чтобы задача выполнялась равномерно, даже если текстовый процессор запускает проверку орфографии. Другие трудно масштабировать, как VxWorks, но они имеют открытый исходный код, и их поддержка может быть проблемой. Насколько я знаю, они еще не были на Марсе, а VxWorks был.
Может ли он использоваться для авионики, критически важной для безопасности: да, если масштабируется в реальном времени и тестируется в соответствии со стандартами, применимыми для всей авионики. Насколько мне известно, на борту самолетов пока ничего нет, но это может быть лишь вопросом времени.
На самом деле нет необходимости иметь коммерческую ОС для авионики.
Программное обеспечение авионики, как правило, разрабатывается для конкретного оборудования - не существует универсальной аппаратной платформы, выпускаемой на массовом рынке многими поставщиками.
Авионика не взаимодействует со многими другими системами или оборудованием.
Авионика обычно работает как одно приложение, поэтому нет необходимости в разделении времени или, в случае RTOS, в гарантированном расписании тактов.
Это основные цели операционной системы, в отличие от простого загрузчика начальной загрузки, который загружает и запускает одно приложение — операционная система поддерживает несколько аппаратных платформ, несколько драйверов и утилит для дискового/флеш-накопителя, разделение времени с другими приложениями и периферийными устройствами. такие как сети. Что нужно авионике: взаимодействовать с дисплеем, внешними датчиками и кнопками управления — не обязательно задействовать операционную систему.
Встроенную ОС удобно иметь для выделенного устройства, особенно если встроенное приложение будет публиковать веб-сервисы для внешнего доступа и управления. Однако оно загружается медленнее (может быть фактором для авионики) и потребляет больше ресурсов, чем специальное приложение, запускаемое загрузчиком начальной загрузки.
Из-за обширного цикла сертификации бортовое электронное оборудование, как правило, не работает с последними и лучшими версиями, и у них нет короткого цикла обновления на оборудовании.
ни один из приведенных здесь аргументов не является полностью неверным, но я бы хотел, чтобы некоторые участники приложили немного больше усилий, чтобы сбалансировать свои аргументы.
Настоящие модные словечки для авиации — это реальное время и безопасность .
Конечно, в авиации безопасность стоит на первом месте, и если вам нужно, чтобы что-то произошло, в большинстве случаев это должно произойти немедленно, и что-то должно доказать пилоту, что дело сделано.
Прежде чем вы сможете что-то сертифицировать, вы должны это проверить и подтвердить — это может быть головной болью. И именно поэтому большинству это не нравится.
Linux не слишком сложен, чтобы его можно было тестировать и использовать в авиации, а вариант настольного компьютера — сложнее. Linux по своему дизайну программного обеспечения вполне подходит для использования в авиации, как и большинство программного обеспечения, соответствующего Posix. Прелесть Linux в том, что каждый компонент предназначен для выполнения только одной задачи, и это в лучшем случае (в отличие от Windows). Для авиации вы никогда не будете использовать сложное передовое программное обеспечение, как для настольного компьютера. Вы будете реализовывать и тестировать только те элементы, которые вам действительно нужны. И есть реализации в реальном времени POSIX-подобных систем, таких как QNX, например, и архитектура программного обеспечения очень похожа на Linux.
Перспектива в реальном времени: однажды Microsoft проиграла соревнование на площадке производителя стали, потому что они не смогли объяснить, как обращаться с 50-тонным стальным стержнем, движущимся со скоростью 6 м/с, с программным обеспечением, которое реагирует с задержкой 500 мс. В этот момент бар мог пробить следующую стену на 3 метра или около того...
Этот простой факт в еще большей степени относится к авиации.
Другой аргумент заключается в том, что авиационная промышленность консервативна - большинству летающих вещей больше 10, а часто и 40 лет.
И в этой области часто считается, что вы не можете зарабатывать деньги с помощью программного обеспечения с открытым исходным кодом, что не соответствует действительности. Так много проприетарных (и надежных) инструментов работают на программном обеспечении девяностых, то есть многие банкоматы все еще работают на производных от Windows NT. Хочу сказать: многие производители инструментов не желают публиковать исходный код своего хорошо поддерживаемого программного обеспечения.
С другой стороны: если бы Боинг использовал программное обеспечение с открытым исходным кодом для своего 737MAX, есть определенная вероятность, что катастроф не произошло бы.
Ну вот и все: все дело в тестировании за приемлемое время.
Нет, еще тесты и еще раз тесты... И тогда у вас может получиться программное обеспечение, подходящее для авиации. И для этого производная от программного обеспечения POSIX, работающая в реальном времени, была бы хорошим, если не идеальным выбором.
пруд
пользователь9394
DJClayworth
Дэвид Ричерби
Саймон
перевод
Федерико
выберите нападающий2
шашлык
MSalters
пользователь541686
пользователь_1818839