ПО
Александр Калядин, Сергей Золотарев
Первоначальный вариант стандарта POSIX (Portable Operating System Interface) появился в 1990 г. [1] и был предназначен для UNIX-систем, первые версии которых ведут свой отсчет с начала 70-х годов прошлого века. Спецификации POSIX определяют стандартный механизм взаимодействия прикладной программы и операционной системы и в настоящее время включают набор более чем из 30 стандартов [2]. Для операционных систем реального времени наиболее важны семь из них (1003.1a, 1003.1b, 1003.1c, 1003.1d, 1003.1j, 1003.21, 1003.2h), но широкую поддержку в коммерческих ОС получили только три:
1003.1a (OS Definition) - определяет основные интерфейсы ОС, управление заданиями, сигналы, функции файловой системы и работы с устройствами, группы пользователей, конвейеры, FIFO-буферы;
1003.1b (Realtime Extensions) - описывает расширения реального времени, такие, как сигналы, диспетчеризация по приоритетам, таймеры, синхронный и асинхронный ввод-вывод, семафоры, разделяемая память, сообщения;
1003.1c (Threads) - определяет функции поддержки потоков (нитей), такие, как управление потоками, атрибуты потоков, мьютексы, диспетчеризация.
Компания Innovative Concepts (ICI) выбрала LynxOS
как основу дальнейшей разработки и внедрения военных стандартизованных программ
EBC (Embedded Battlefield Command - встроенные средства тактического управления)
Операционные системы реального времени (ОСРВ) обычно разделяют на две категории - "жесткого" и "мягкого" реального времени. Для ОСРВ "жесткого" реального времени отклик системы должен быть получен в строго ограниченном временном интервале и его превышение считается неприемлемым. В качестве примера такого приложения можно назвать систему наведения ракеты. Для систем "мягкого" реального времени временные характеристики не так важны и запоздалый отклик системы допустим (в разумных пределах). Например, в системах обработки видеоданных задержки приводят лишь к ухудшению качества изображения.
Чтобы соответствовать стандарту POSIX, операционная система должна быть сертифицирована по результатам соответствующего комплекта тестов [3]. В настоящее время комплекты тестов разработаны только для POSIX 1003.1a .
Схема разработки приложений
LynxOS и POSIX
LynxOS 4.x фирмы LynuxWorks (www.lynuxworks.com) является результатом более чем 15-летнего опыта и предназначена для создания ПО встроенных систем, работающих в режиме жесткого реального времени. Ее могут использовать производители комплектного (OEM) и телекоммуникационного (TEM) оборудования, в частности изготовители бортовых систем военного применения. Разработка может осуществляться как на самой целевой системе (self-hosted), так и на инструментальном компьютере (host), готовое ПО работает на целевой системе (target).
Система сертифицирована по стандарту POSIX. Это означает, что LynxOS проверена аккредитованными независимыми экспертами на полное соответствие этому стандарту. В частности, LynxOS была сертифицирована на соответствие POSIX 1003.1-1996 фирмой Mindcraft (www.mindcraft.com). Это уникальное свойство отличает ее от большинства других ОСРВ, которые являются POSIX-совместимыми (compatible) и в лучшем случае соответствуют стандарту POSIX на 90-95% [2]. Среди других POSIX-сертифицированных ОСРВ следует назвать операционную систему QNX фирмы QSSL. Хотя надо отметить, что сертифицирована лишь версия QNX v.4, а не QNX Neutrino (которую только планируется сертифицировать). В значительно меньшей степени поддержка POSIX реализована в VxWorks [2] фирмы WindRiver, причем часто путем использования продуктов сторонних разработчиков. Существует целый ряд ОСРВ, в которых полностью отсутствует поддержка POSIX, например Nucleus фирмы Mentor Graphics.
Основные свойства LynxOS
LynxOS поддерживает многозадачные и многопотоковые приложения. Она может использоваться для приложений с высокими требованиями по времени реакции и надежности. Программы, написанные и скомпилированные в ОС Linux, могут запускаться и работать в среде LynxOS без каких-либо изменений в исходных текстах и без перекомпилирования. Это свойство LynxOS является уникальным для ОСРВ и очень удобным для пользователей (например, если отсутствуют исходные тексты). LynxOS обеспечивает совместимость с Linux на уровне ABI (Application Binary Interface), форматов объектных файлов, вызовов API, динамически подключаемых библиотек (DLL), компоновки и загрузки на этапе выполнения. Как уже отмечалось, система полностью поддерживает стандарт POSIX.1003.1a, а также подразделы POSIX.1003.1b и POSIX.1003.1c. Она может работать на разных аппаратных платформах (IA-32, PowerPC, MIPS, ARM, xScale) и поддерживает самые современные сетевые средства и Интернет-технологии.
В ней предусмотрены необходимые средства для создания систем с возможностями "горячей замены" и "высокой доступности" (Hot Swap, High Availability), а также устройств с высоким коэффициентом резервирования.
Существует версия LynxOS-178, сертифицированная в соответствии со стандартом DO-178. Это означает полное соответствие требованиям к надежности для мобильных систем военного и аэрокосмического применения. Кроме того, LynxOS-178 имеет сертифицированный стек TCP/IP для ответственных приложений в области авионики, медицины, атомной промышленности и связи.
Rockwell Collins приняла решение использовать LynxOS-178
в системе адаптивного отображения бомбардировщика Bombardier Challenger 300
Существует множество средств разработки как в рамках самой LynxOS, так и host-систем (Linux, Windows, Solaris). Для разработчиков в среде операционной системы VxWorks компания LynuxWorks предлагает специальный пакет VxWorks Compatibility Layer Package, который облегчает перенос программ из VxWorks в LynxOS. Как известно, в системах VxWorks с прямой адресацией между задачами могут возникать конфликты, поскольку все они обращаются к одному и тому же пространству глобальных имен. В LynxOS все процессы всегда независимы друг от друга и доступа к одному и тому же адресному пространству не имеют. VxWorks Compatibility Layer Package позволяет иметь в LynxOS отдельные пространства имен, обеспечивая одновременное существование нескольких виртуальных систем VxWorks. В состав пакета также включены рекомендации по выявлению кодов, требующих при переносе особого внимания из-за внутренних различий в реализации между LynxOS и VxWorks. Кроме того, имеется полный перечень поддерживаемых директив VxWorks и соответствующих ограничений на их использование.
Поддержка приложений жесткого реального времени
В LynxOS 4.x реализован широкий спектр возможностей, позволяющих пользователю разрабатывать приложения жесткого реального времени. При этом количество задач не ограничено. Число приоритетов, с которыми может выполняться задача, составляет 256, а диспетчеризация происходит путем вытеснения по приоритетам. Могут применяться четыре алгоритма диспетчеризации (FIFO, Priority Quantum, Round Robin, невытесняемый).
Детерминированное время переключения контекста достигается благодаря эффективному алгоритму диспетчеризации реального времени. Средства межзадачных взаимодействий соответствуют как стандарту POSIX (семафоры, разделяемая память, сокеты, сигналы, каналы, мьютексы, условные переменные), так и терминам Unix SystemV (очереди сообщений, семафоры, разделяемая память).
Система обеспечивает поддержку таймеров реального времени и часов POSIX. При этом допускается конфигурирование квантов времени для различных уровней приоритетов.
И наконец, гарантируется выполнение задач в защищенном режиме с полной поддержкой MMU (Memory Management Unit).
Сетевые возможности
LynxOS унаследовала от ОС BSD4.2 стек TCP/IP. На данный момент это самая популярная реализация в мире UNIX-подобных операционных систем. По быстродействию и богатству функций стек TCP/IP ОС LynxOS превосходит стеки большинства других ОСРВ.
Список поддерживаемых протоколов включает все сетевые средства, стандартные для ОС UNIX последних версий:
- Internet Protocol (IPv4 и Pv6)/TCP/UDP/ ARP/RARP/ICMP/VLAN/IP6fw/IGMP;
- коммуникационные протоколы интерфейсов по последовательному каналу PPP/SLIP;
- Sockets/Sysctl, ftp/tftp/rsh/ntalk/smtp/samba;
- NAT (Network Address Translation), DNS (Domain Name Services), DHCP (Dynamic Host Configuration Protocol), telnet, rlogin, RPC, NFS, NTPv3 (Network Time Protocol), SNMP v1,2,3 & MIB (Simple Network Management Protocol);
- протоколы маршрутизации из пакета Zebra - EGP, OSPF v1,2, RIP v1,2, BGP4+; DVMRP (multicast routing);
- средства сетевой загрузки PXE Netboot, TFTP boot.
Система вертикального запуска MK 57 фирмы Raytheon построена на базе LynxOS
Hewlett-Packard использует LynxOS для своих принтеров LaserJet, а компания Xerox - для Document Centre System
Пакеты поддержки целевых архитектур
LynuxWorks поставляет пакеты поддержки целевых архитектур в LynxOS 4.0 (BSPs) для широкого спектра платформ, таких, как любые AT- и CompactPCI-платы с процессором Intel, Motorola Sandpoint 750, Intel XScale IQ80310, IBM 440GP, Motorola FADS-ZU, Thales VMPC6a/c, Force PowerCore 680 G3 & G4, Motorola CompactPCI for PPC MCP750, MCPN750, Motorola SPS FADS680T, Motorola PMC860, Radstone PowerXTreme 7a, Thales VCE405 и многие другие.
LynxOS поддерживает специальные возможности для встраиваемых приложений, среди которых - очень малое время загрузки, работа с флэш-памятью (M-systems TrueFFS), а также загрузка по сети или из ROM конфигураций исполняемой системы.
Разработка приложений
LynxOS предоставляет разработчику богатый выбор инструментальных средств как в ее собственных рамках, так и в среде host-систем. Среда разработки самой LynxOS поддерживает такие средства, как gcc, g++, gdb, различные версии системных библиотек (статические, динамические, многопотоковые), загрузчик динамических (ELF) библиотек, символьная отладка многопотоковых приложений, средства работы с графическими средами (X11R6, Motif, PosixDesk).
Средства кросс-разработки для LynxOS
На рынке присутствует достаточно широкий спектр средств кросс-разработки для LynxOS. Отметим наиболее популярные.
VisualLynux IDE for Windows. VisualLynux является расширением Microsoft Visual Studio с добавленными функциями и возможностями разработки приложений для LynxOS и BlueCat Linux. Инструменты для администрирования целевых систем и дистанционной разработки делают его мощной интегрированной средой (IDE) кросс-разработки для встроенных систем. Продукт включает в себя встроенный компилятор GNU gcc и отладчик gdb, которые позволяют сократить временные затраты на весь производственный цикл - от написания кода и до отладки готовой программы. Встроенный клиент FTP переносит файлы на целевую систему, а утилита BTP запускает серверы Bootp, Tftp и Pftp на машине разработчика и перезагружает целевую систему через параллельное соединение или по TCP/IP для отладки и исправления возникающих ошибок с помощью администратора целевых платформ.
С помощью VisualLynux можно создавать различные типы проектов - пользовательские приложения на Си и С++, приложения X/Motif, драйверы устройств, статические библиотеки. Один и тот же проект в VisualLynux может содержать множественные конфигурации, которые позволяют посредством VisualLynux Application Wizard легко менять тип целевой платформы. Каждому типу целевых платформ соответствует свой набор инструментов для кросс-разработки - компиляторов, интерпретаторов команд и т. д. Кроме того, проект VisualLynux может быть сохранен в типичном для ОС UNIX формате makefile.
В пакет поставки VisualLynux включены готовые шаблоны и примеры исходного кода, построенные в соответствии со стандартами POSIX, такие, как POSIX MultiThreaded, POSIX Signal Handler, Condition Variables and Mutexes, POSIX Semaphores, POSIX Shared Memory, PIPES, Priority Alteration, Interval Timers, POSIX Message Queues, Real-Time Events. В частности, VisualLynux Device-Driver Wizard позволяет создавать шаблоны статических или динамических драйверов устройств для LynxOS и BlueCat Linux.
CodeWarrior IDE. Реализация известной среды разработки CodeWarrior IDE в среде Linux или Solaris.
TotalView. Многозадачный графический отладчик для LynxOS. Единственный графический встраиваемый отладчик на уровне исходных текстов, разработанный специально для работы в современных распределенных многозадачных средах.
SpyKer. Инструмент отладки, диагностики и оптимизации быстродействия встроенной системы для LynxOS и BlueCat Linux. Позволяет осуществлять динамический мониторинг и запись всех событий во встроенной системе (события операционной системы и работы приложений) и представлять данные в графическом виде в наглядной форме:
- всплывающие окна содержат информацию о событии, на которое указывает курсор;
- графическое увеличение и уменьшение интересующих пользователя зон на графике позволяет добиться большей детализации;
- фильтр системных событий;
- точное измерение временных промежутков между отдельными событиями.
SpyKer способен отслеживать системные вызовы, прерывания, переключения контекста и многие другие события.
Aphelion Java Toolkit. Устраняет препятствия, характерные для использования Java во встроенных системах, включая проблемы с переносимостью, совместимостью, временем разработки и быстродействием.
LynxInsure++. Предоставляет разработчикам детальную информацию, позволяющую глубже понять механизм работы приложения (ошибки в операциях с памятью, в том числе в присвоении ее разделов, в инициализации и присвоении переменных, проблемы с указателями, библиотеками, логические ошибки "утечки" памяти).
Porting Kit. Включает исходные тексты для всех BSP для конкретной архитектуры и может использоваться теми заказчиками, которые хотят портировать LynxOS на целевую систему.
С ростом популярности LynxOS многие независимые фирмы - разработчики ПО объявляют о выпуске версии своей продукции для этой среды. Назовем лишь некоторые примеры.
Компания Enea Embedded Technology анонсировала поддержку своего продукта в реляционной СУБД Polyhedra для LynxOS.
Empress Software объявила о реализации СУБД Empress v.8.62 для LynxOS.
Компания McObject объявила о поддержке в среде LynxOS своей оперативной базы данных eXtremeDB.
FairCom портировала свой пакет c-tree Plus в LynxOS.
Компания Highlander интегрировала свой CORBA-совместимый продукт VisiBroker для разработки распределенных приложений в среде LynxOS.
Пакет CORBAplus (реализация протокола CORBA) фирмы Expersoft портирован в LynxOS.
Заключение
Как показывает практика, LynxOS получила широкое распространение во всем мире благодаря ее надежности и универсальности, а также широкому набору функциональных возможностей, построенных на базе стандарта POSIX. Немаловажным обстоятельством является и то, что с ее помощью можно разработать приложение за достаточно короткий срок, чему способствует богатый выбор инструментальных средств разработки. В России LynxOS только начинает применяться. При этом она поддерживается такими поставщиками аппаратных средств (особенно для военных применений), как Condor Engineering и Kontron Modular Computers, что может иметь значение для российских заказчиков. Фирма "РТСофт", дистрибьютор продукции LynuxWorks, уже предлагает консультационные услуги по разработке, интеграции и обучению в области LynxOS.
Литература
1. IEEE/ANSI Standard 1003.1: Information Technology (POSIX). Part 1: System Application: Program Interface (API).
2. Kevin M. Obeland, POSIX in Real-Time/Embedded Systems Programming, 2001.
3. National Institute of Standards and Technology. PCTS:151-2, POSIX Test Suite.