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

Федеральная администрация по авиации США — одна из авторитетных организаций, отвечающих за безопасность полетов — предъявляет жесткие требования к коммерческим операционным системам реального времени, принятым для эксплуатации (особенно это касается гражданской авиации, где от их работы зависят жизни сотен пассажиров). Среди них:

  • требования «жесткого» реального времени; детерминированное поведение при различных нагрузках на систему, необходимое в ответственных приложениях и системах повышенной готовности;
  • высокая «живучесть», чтобы при отказе какой-либо части программного обеспечения другая часть продолжала нормально функционировать;
  • строгие требования по качеству, что подразумевает соответствие различным отраслевым, национальным и международным стандартам;
  • требования по надежности; вероятность сбоя в программе должна быть очень маленькой;
  • требования по безопасности и секретности данных1; в системе должны быть предусмотрены средства защиты наиболее важной информации.

Система регламентации требований

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

Стандарт DO-178 — Software Consideration in Airborne Systems and Equipment Certification. Разработан и поддерживается ассоциацией Radio Technical Commission for Aeronautics (RTCA, www.rtca.org). Стандартом определено пять уровней серьезности отказа, для каждого из которых указывается набор требований к программному обеспечению, призванных гарантировать работоспособность всей системы в целом при возникновении отказов данного уровня:

уровень A — защита от сбоев, приводящих к катастрофическим последствиям;

уровень B — защита от сбоев, приводящих к опасным последствиям;

уровень C — защита от сбоев, приводящих к большим последствиям;

уровень D — защита от сбоев, приводящих к минимальным последствиям;

уровень E — защита от сбоев, не приводящих ни к каким последствиям.

Стандарт ED-12B. Европейский аналог DO-178B. Определяется ассоциацией The European organization for civil aviation equipment (EUROCAE, www.eurocae.org).

RTCA DO-248B — Final Annual Report For Clarification Of DO-178B. Пояснительный документ к DO-178B. Его основные темы включают такие разделы, как ранее разработанное программное обеспечение, коммерческие программные продукты, процессы верификации, исторические справки, автоматизированные средства и др.

Стандарт DO-254 — Design Assurance Guidance for Airborne Electronic Hardware. Разработан и поддерживается ассоциацией RTCA. Документ создан для того, чтобы помочь производителям самолетов и поставщикам авиационного электронного оборудования гарантировать, что их электронное оборудование безопасно выполняет требуемые функции. Документ регламентирует процессы жизненного цикла аппаратных средств и описывает пути обеспечения нужных свойств изделий с целью их сертификации в соответствии с предъявляемыми требованиями.

ARINC 653 — Avionics Application Software Standard Interface. Разработан компанией ARINC в 1997 году и определяет универсальный программный интерфейс APEX (APplication/EXecutive) между операционной системой бортового компьютера и прикладным программным обеспечением. Требования интерфейса определяются таким образом, чтобы разрешить прикладным программам контролировать диспетчеризацию, связь и состояние внутренних обрабатываемых элементов. В качестве одного из основных требований для операционных систем реального времени в авиации ARINC 653 вводит архитектуру изолированных (partitioning) виртуальных машин.

Общие критерии для оценки секретности информационных технологий (Common Criteria for Information Technology Security Evaluation). Набор требований и условий секретности (www.commoncriteria.org), одобренный Агентством национальной безопасности США и Национальным институтом стандартов и технологий США, а также соответствующими органами в других странах (в данный момент еще 13 стран, кроме США). В 1999 году «Общие критерии» получили статус международного стандарта ISO 15408.

MILS — Multiple Independent Levels of Security/Safety. Развивается усилиями заинтересованных организаций, таких, как Исследовательская лаборатория ВВС США, компания Lockheed Martin, Агентство национальной безопасности США и др. Проект MILS делает возможной математическую верификацию программного ядра системы путем уменьшения функциональности за счет предъявления к системам четырех обязательных групп требований (Information Flow, Data Isolation, Period Processing, Damage Limitation). MILS-архитектура представляет собой систему с изолированными разделами, каждый из которых включает ядро, программное обеспечение промежуточного слоя и приложение (рис. 1).

Рис. 1. MILS-архитектура

POSIX — Portable Operating System interface for unIX. Определяет переносимый интерфейс операционной системы на уровне исходных текстов. Основная спецификация разработана как IEEE 1003.1 и одобрена как международный стандарт ISO/IEC 9945-1:1990. С точки зрения операционных систем реального времени наибольший интерес представляют три стандарта: 1003.1a (OS Definition), 1003.1b (Realtime Extensions) и 1003.1c (Threads).

Концепция изолированных разделов

По многим аспектам регламентирующие документы пересекаются, дополняя друг друга. В результате многочисленных исследований в качестве основной была принята концепция изолированных разделов [1-4]. Удовлетворение требованиям жесткой изоляции должно быть «доказано» поставщиками программных решений в соответствии с методологией сертификации, изложенной в DO-178B. Существуют различные подходы к реализации изолированных разделов, однако сегодня принята архитектура, соответствующая ARINC 653, которая определяет поддержку изолирования для операционной системы реального времени и в качестве языка описания использует Cи и Ada-95.

С точки зрения пользователя, ARINC 653 представляет собой спецификацию интерфейса APEX (APplication/EXecutive) и не определяет его реализацию. Так, некоторые поставщики программных средств реализуют диспетчеризацию с помощью одноуровневого диспетчера, другие с помощью двухуровневого, когда первый уровень управляет разделами, а второй — процессами внутри каждого раздела. Такая ситуация с поддержкой ARINC 653 влечет за собой трудности при сертификации программных продуктов, соответствующих только ARINC 653 — один и тот же API может отображаться на различные подходы к реализации. Как следствие, появилось множество сильно отличающихся операционных систем реального времени, которые, однако, соответствуют спецификации ARINC 653.

Рис. 2. Архитектура системы с несколькими изолированными разделами

На рис. 2 показана архитектура системы с несколькими изолированными разделами, каждый из которых представляет собой самостоятельное приложение. Все данные и программный код в каждом разделе собираются вместе и выполняются в пользовательском режиме. Компоненты «модульная операционная система» (Module Operating System, MOS) и «пакет поддержки платы» (Board Support Package, BSP) выполняются в режиме супервизора. Дополнительно может существовать один специальный раздел с некоторыми специальными возможностями, такими, как средства ввода-вывода и переключения режимов.

ARINC 653 как раз и задает интерфейс для обмена информацией между разделами, каждый из которых представляет собой некоторое приложение плюс операционную систему раздела (Partition Operating System, POS). Этот интерфейс должен гарантировать изоляцию перечисленных ниже элементов.

Оперативная память. Каждому разделу выделяется непрерывное линейное физическое адресное пространство, границы которого не могут меняться в процессе работы системы. Для каждого раздела выделение и освобождение памяти выполняется и контролируется MOS. Операционная система реального времени должна обеспечивать изоляцию информации в адресном пространстве внутри выделенного каждому разделу линейного «куска». Это относится к программному коду, константам, статическим данным, стеку и «куче» (область, откуда берется память по запросу).

Время использования процессора. Процессы в одном разделе могут либо совсем не влиять на поведение процессов в другом разделе, либо влиять на них заранее определенным и контролируемым способом (например, путем установки некоторых флагов или условий). ARINC 653 требует, чтобы процессорное время выделялось каждому разделу строго циклически, причем время владения процессором для каждого раздела должно задаваться заранее в конфигурационной таблице. Внутри каждого раздела процессы могут конкурировать между собой за процессорное время на основе приоритетов («вытеснять»), используя диспетчеризацию с вытеснением по приоритетам.

Программный код. Для некоторых областей памяти MOS устанавливает в режиме супервизора) атрибут «только выполнение». Это означает, что приложения в пользовательском режиме не могут разрушить область кода.

Прерывания. Прерывания являются асинхронными событиями, которые требуют особой внимательности с точки зрения обеспечения изолированности разделов. Важно, чтобы они не «посягали» на время и память в другом разделе. Одним из возможных источников прерывания являются таймеры, которые управляют диспетчеризацией событий как внутри POS, так и внутри MOS.

Для обеспечения изоляции прерываний принят ряд соглашений. Прерывания таймера возникают только в супервизорном режиме; прямой доступ к часам в пользовательском режиме невозможен. Если POS и MOS находятся на различных уровнях защиты, то должен обеспечиваться механизм распространения информации о временных событиях в прикладные разделы, работающие в пользовательском режиме. В те моменты, когда раздел активен (владеет процессорным временем), ему должны передаваться все относящиеся к нему временные события. Когда раздел неактивен, то все относящиеся к нему временные события должны сохраняться и затем при активизации передаваться ему.

Другим источником прерываний являются внешние устройства ввода/вывода. В соответствии с требованиями ARINC 653, для устройств с синхронной передачей данных рекомендуется использовать алгоритм опроса устройства. Однако некоторые устройства требуют обработки прерываний. Эти прерывания должны обрабатываться MOS и затем передаваться в POS в момент активизации раздела. Очевидно, что при этом могут возникать временные задержки и даже потеря информации, и, следовательно, разработчик должен это учитывать.

ARINC 653 определяет не только требования по изолированию разделов, но и механизмы взаимодействия между ними. Введены следующие функции взаимодействия между разделами:

обмен сообщениями путем установления канала связи, который должен быть заранее описан в конфигурационной таблице системы;

обмен через буфер, при котором только один раздел может писать в конкретный буфер, а все другие — только читать; это обеспечивает возможность широковещательного обмена информацией между разделами.

Стандарт DO-178B

Стандарт DO-178B описывает технику и методы, гарантирующие целостность и надежность программного обеспечения, охватывая все этапы его жизненного цикла — планирование, разработку требований, проектирование, кодирование, интеграцию и тестирование.

Планирование согласно DO-178B должно включать следующие планы: план для программных аспектов сертификации; план программного проекта; план верификации программного обеспечения; план управления конфигурацией программного обеспечения; план гарантии качества программного обеспечения. На протяжении всего жизненного цикла должно быть обеспечено соответствие стандарту DO-178 в области формулировки требований, проектирования, кодирования, верификации и документирования. Должны быть разработаны требования к программному обеспечению (требования высокого уровня), проект программного обеспечения (требования и архитектура), программный код в исходном и объектном виде. Каждый из разработанных компонентов должен быть верифицирован по разнообразным критериям. Верификация требований высокого уровня к программному обеспечению включает в себя проверку следующих условий: требования соответствуют системным требованиям и доступны для анализа вместе с системными требованиями; требования являются точными и согласованными; требования совместимы с аппаратными средствами и, следовательно, должны быть подтверждены результатами.

Верификация проекта программного обеспечения включает в себя проверку того, что требования к проекту соответствуют требованиям высокого уровня и могут быть подвергнуты анализу, являются точными и согласованными и, следовательно, должны быть подтверждены результатами. Аналогично должны быть верифицированы архитектура и код программного обеспечения, которые, кроме того, должны соответствовать требованиям, закрепленным в DO-178B. Данный стандарт определяет процесс верификации этапа интеграции программного обеспечения, проверку полноты самого процесса верификации, обеспечение менеджмента конфигураций (в том числе управление версиями), квалификацию автоматизированных средств.

В стандарте определены три уровня структурного тестирования кода:

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

Определенные в DO-178B уровни сертификации различаются количеством требований (глубиной верификации), которым должно удовлетворять программное обеспечение. Теоретические аспекты верификации кода изложены в различных фундаментальных монографиях, в частности, в работе [5].

Сертификация на соответствие DO-178B должна проводиться так называемыми «назначаемыми инженерными представителями», которые назначаются Федеральной администрацией по авиации США для проверки данных, используемых при сертификации. Разработчик стремится пройти сертификацию своего программного обеспечения в соответствии с DO-178B для того, чтобы получить разрешение на использование своего программного обеспечения (в том числе операционной системы реального времени) в авиации. Разрешение относится не только к программному обеспечению, но и ко всему изделию (проекту) в целом. Для того чтобы начать процесс сертификации, разработчик должен вначале «открыть» проект и получить от ФАА официальный номер проекта или присоединиться к уже существующему проекту с уже выданным номером. Для «открытия» проекта надо получить сертификат типа или дополнительный сертификат типа. Как правило, сертификат типа присваивается самолету, и все оборудование на нем поставляется именно с этим сертификатом. Дополнительный сертификат типа дается дополнительному оборудованию на самолете, в том числе программному обеспечению.

«Общие критерии» для оценки секретности

«Общие критерии» определяют уровни гарантии секретности Evaluation Assurance Level (EAL) и оценивают не только безопасность и надежность продуктов, но и процессы их разработки и поддержки, гарантирующие быстрое решение проблем. Применительно к операционным системам требования «Общих критериев» подробно изложены в [6]. Выделены семь уровней гарантии секретности [7]:

EAL1 (functionally tested) — применим там, где требуется минимальная конфиденциальность, но обеспечение секретности не рассматривается как важное требование;

EAL2 (structurally tested) — применим при тех обстоятельствах, где разработчики или пользователи требуют средний уровень гарантированной секретности в отсутствии полной информации о всех процедурах разработки;

EAL3 (methodically tested and checked) — применим там, где разработчики или пользователи требуют средний уровень гарантированной секретности и требуют исчерпывающего исследования операционной системы и этапов ее разработки, но не прибегая к существенной переработке ОС;

EAL4 (methodically designed, tested and reviewed) — применим при тех обстоятельствах, где разработчики или пользователи требуют высокий уровень гарантированной секретности операционной системы и требует специальной доработки уже существующей ОС для обеспечения этих требований;

EAL5 (semi formally designed and tested) — применим там, где разработчики или пользователи требуют высокий уровень гарантированной секретности операционной системы и строгого подхода к проектированию, так чтобы эти свойства были заложены уже на этапе проектирования, используя специальные средства обеспечения секретности;

EAL6 (semi formally verified, designed and tested) — применим там, где существует высокий уровень опасных ситуаций и где оправданы высокие затраты на защиту от несанкционированного доступа;

EAL7 (formally verified, designed and tested) — должен применяться в приложениях с очень высокой ценой в случае несанкционированного доступа.

Уровень EAL подтверждается специальной лабораторией Common Criteria Testing Lab.

В таблице приведен перечень максимальных требований гарантии секретности, которым должна удовлетворять система по уровню EAL7.

Система LynxOS-178

Основу LynxOS-178 составляет операционная система реального времени LynxOS v.3, которая выполняется в изолированном разделе. LynxOS v.3 сертифицирована на соответствие стандарту POSIX 1003.1-1996 на платформе Intel и PowerPC.

Ключевое свойство LynxOS-178 — поддержка нескольких полностью разделенных по времени, памяти и ресурсам разделов в соответствии с требованиями ARINC 653. LynxOS-178 (версия 2.0) поддерживает: до 16 разделов (виртуальных машин), включая корневой раздел; до 64 процессов; до 51 нити внутри каждого процесса; диспетчеризацию потоков внутри раздела в реальном времени; функции межпроцессного взаимодействия внутри раздела.

Каждый раздел полностью изолирован, что делает невозможным распространение сбоев между разделами.

С помощью LynxOS-178 фиксированные разделы обслуживаются как виртуальные машины LynxOS. Каждый прикладной процесс оперирует внутри его собственной среды операционной системы, как если бы он работал на своем собственном процессоре. Это применимо ко всем ресурсам процессора и именованным пространствам. Эта абстракция защищает разработчика прикладной системы от дополнительных усилий при программировании сложной системы. Управление разделами контролируется с помощью Таблицы конфигурации виртуальных машин (Virtual-Machine Configuration Table, VCT) и является обязательным в среде LynxOS-178, позволяя разработчику приложений сконцентрироваться на разработке приложений, а не на организации разделения системы. Кроме того, LynxOS-178 поддерживает разделение систем, совместимых с RTCA DO-255, что разрешает выполнять программное обеспечение с различными уровнями безопасности по DO-178B в разных разделах (виртуальных машинах). Это означает, что операционная система может выполнять приложение с уровнем A (по DO-178B) на одной виртуальной машине и приложение с уровнем C на другой, причем оба приложения работают на одном и том же процессоре в рамках одной и той же системы.

Версия LynxOS-178 в составе различных изделий (например, самолет Bombardier Challenger 300 компании Rockwell Collins) сертифицирована по стандарту DO-178B, а архитектура самой операционной системы (рис. 3) соответствует требованиям ARINC 653.

LynxOS-178 обеспечивает следующие группы системных сервисов в соответствии с ARINC 653: Partition Management — управление разделами, Process Management — управление процессами, Time Management — управление временем, Interpartition Communication — взаимодействие процессов в различных разделах (Sampling Port Services и Queuing Port Services), Intrapartition Communication — взаимодействие процессов внутри одного раздела (Buffer Services, Blackboard Services, Semaphore Services, Event Services), Health Monitoring — контроль работоспособности операционной системы или оборудования.

В 2006 году должен быть выпущен прототип операционной системы, отвечающий EAL7; разрабатывается новое ядро LynxSecure, совместимое с требованиями MILS, которое будет содержать всего 8 тыс. строк исходного кода и будет соответствовать требованиям EAL7.

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

Литература
  1. Commercial Off-The-Self Real-Time Operating System and Architectural Consideration. Final Report, U.S. Federal Aviation Administration, DOT/FAA/AR-03/77, February 2004.
  2. Partitioning in Avionics. Architecture: Requirements, Mechanics, and Assurance. Final Report, National Aeronautics and Space Administration, DOT/FAA/AR-99/58, NASA/CR-1999-209347, March 2000.
  3. Study of Commercial Off-The-Self (COTS) Real-Time Operating System (RTOS) in Aviation Application. Final Report, U.S. Federal Aviation Administration, DOT/FAA/AR-02/118, December 2002.
  4. Evaluation of real time operating systems — the role of standards. Avionic Systems Standardization Committee (ASSC), Doc No: ASSC/330/2/141, March 1997.
  5. G. Mayers, The art of Software Testing. John Wiley & Sons, 1979.
  6. COTS Security Protection Profile — Operating Systems (CSPP-OS), NISTIR 6985, April 2003.
  7. Common Criteria for Information Technology Security Evaluation. Part 3: Security Assurance Requirements. August 1999, Version 2.1, CCIMB-99-033.

Сергей Золотарев (zolotarev@rtsoft.msk.ru) — сотрудник компании «РТСофт» (Москва).


Дозаправщик стратегических бомбардировщиков дальнего действия KC-135 Stratotanker было решено модернизировать, чтобы обеспечить соответствие международным нормативам Global Air Traffic Management и требованиям стандарта DO-178B. Аппаратура Integrated Processing Center, разработанная компанией Rockwell Collins, предоставляет вычислительные и сетевые функции, которые могут использоваться для выполнения множества различных задач (обеспечение миссии, управление полетом, поддержка дисплеев). Базовая функциональность расширяется, что позволяет реализовывать дополнительные приложения. Обмен данными с другим оборудованием осуществляется по «авиационной» версии сети Ethernet. Внутри Integrated Processing Center имеется несколько сменных линейных модулей Line Replaceable Module. Сертифицированная операционная система реального времени LynxOS-178 работает на вычислительном модуле Common Computing Module и на концентраторе ввода-вывода Input/Output Concentrator Module.

Самолет-танкер KC-767, в котором также работает операционная система LynxOS-178, готов вывести воздушную заправку в ВВС США на новый уровень и отправить на покой старые заправщики KC-135E, состоящие на вооружении уже более четырех десятилетий. Новое судно не только вместительнее, но и надежнее, что делает его пригодным для более широкого круга операций. Фактически KC-767 — это четыре разных самолета в одном. Ярус, где находится кабина экипажа, легко оборудуется для перевозки пассажиров или грузов без ущерба для функциональности танкера. Причем можно сделать и так, чтобы в зависимости от ситуации судно было то пассажирским, то грузовым, то перевозчиком смешанного типа.


1В англоязычной литературе используются два термина — safety и security, которые могут быть похожим образом переведены на русский язык. Однако они обозначают различные понятия, и в этой статье мы будем использовать safety как синоним безопасности, а security — секретности. — Прим. авт.