VxWorks

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
VxWorks
Изображение логотипа
Стартовый экран VxWorks в ASCII-графике
Стартовый экран VxWorks в ASCII-графике
Разработчик Wind River Systems
Семейство ОС UNIX-подобная
Первый выпуск 1987
Последняя версия 7 23.03 (март 2023 г.)
Поддерживаемые платформы x86
Тип ядра Микроядро
Лицензия пользовательское соглашение
Состояние Актуальное
Веб-сайт VxWorks RTOS
Логотип Викисклада Медиафайлы на Викискладе

VxWorks — операционная система реального времени, разрабатываемая компанией Wind River Systems (США), ориентированная на использование во встраиваемых компьютерах, работающих в системах жёсткого реального времени. VxWorks является системой с кросс-средствами разработки прикладного программного обеспечения. Иначе говоря, разработка происходит на инструментальном компьютере, называемом host, для последующего применения его на целевой машине — target.

Как и большинство других ОС реального времени, VxWorks включает в себя многозадачное ядро с вытесняющим планировщиком и быстрым откликом на прерывания, средства межпроцессного взаимодействия и синхронизации, а также файловую систему и сетевую подсистему (стек протоколов TCP/IP). В комплект поставки входят средства для кросс-компиляции, мониторинга производительности (WindView), удалённой символьной отладки, а также эмуляции различных процессоров. Дополнительно поставляется значительное количество различных стеков протоколов, графических подсистем и др. как от самой Wind River Systems, так и от третьих фирм. Множество поддерживаемых VxWorks встраиваемых платформ является одним из самых обширных среди операционных систем реального времени.

4 июня 2009 года компания Intel объявила о планах приобрести Wind River Systems и VxWorks.[1] 17 июля 2009 года поглощение компании было завершено[2].

Название «VxWorks», как считается, получилось из игры слов с названием ОС VRTX, созданной компанией Ready Systems (сейчас этот продукт принадлежит Mentor Graphics). В начале 1980-х VRTX была достаточно новым и сырым продуктом, она работала не слишком хорошо. VRTX имела размер всего 4 КБ, и её нельзя было использовать как полноценную операционную систему. Компания Wind River приобрела права на распространение расширенной версии VRTX под названием VxWorks. Доработки и расширения, внесённые компанией WindRiver, позволили создать систему, которая работала (например, VXWorks имела файловую систему и интегрированную среду разработки). Таким образом, название VxWorks может означать англ. VRTX now Works («VRTX теперь работает») или англ. VRTX that Works («VRTX, которая работает»).

Когда стало ясно, что Ready Systems может разорвать контракт на распространение VRTX, в Wind River было разработано собственное ядро операционной системы, которое заменило VRTX. Базовая функциональность нового ядра VxWorks была такой же, как у VRTX.

Архитектура

[править | править код]

VxWorks имеет архитектуру клиент-сервер и, как и большинство ОС жёсткого реального времени, построена по технологии монолитного ядра. На самом нижнем непрерываемом уровне ядра (WIND Microkernel) выполняются только базовые функции планирования задач и управления коммуникацией/синхронизацией между задачами. Все остальные функции ОСРВ более высокого уровня — управление памятью, сетевые средства и т. д. — реализуются через простые функции нижнего уровня. За счёт такой иерархической организации достигается быстродействие и детерминированность ядра системы, также это позволяет легко строить необходимую конфигурацию операционной системы.

VxWorks можно скомпоновать как для систем с жёсткими аппаратными ограничениями, так и для систем с развитой функциональностью. Отдельные модули системы сами могут быть масштабируемыми. При сборке системы можно отключать определённые функции системы, не нужные в данный момент, также можно убирать специфические объекты синхронизации ядра, если в них нет необходимости.

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

Ядро VxWorks обладает следующими свойствами[3]:

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

Планирование

[править | править код]

В VxWorks обеспечиваются и механизмы планирования, основанные на POSIX[4], и собственные механизмы планирования (wind scheduling). Оба варианта обладают вытесняющим и циклическим планированием. Различие заключается в том, что алгоритмы POSIX-планирования применяются попроцессно, а wind scheduling применяется на уровне всей системы[3].

Все задачи системы и приложения в VxWorks используют одно адресное пространство, что может привести к нарушению стабильности работы системы в случае неисправности какого-либо приложения. Решение этой проблемы достигается установкой отдельно предоставляемого компонента VxVMI[5], который даёт возможность каждому процессу использовать собственное виртуальное пространство.

Прерывания

[править | править код]

Для достижения быстрой обработки внешних прерываний программы обработки прерываний (ISRs — interrupt service routines) в VxWorks работают в специальном контексте вне контекстов потоков, что даёт преимущество во времени, которое обычно тратится на переключение контекстов. С-функция, которую пользователь присоединяет к вектору прерывания, на самом деле не является фактической ISR. Прерывания не могут напрямую обращаться к С-функциям. Вместо этого в таблице векторов прерываний, которая вызывается аппаратно, запоминается адрес ISR. ISR выполняет начальную обработку (подготовку стека и сохранение регистров), а потом вызывается С-функция, которая была присоединена пользователем[3].

Сетевые средства

[править | править код]

VxWorks обладает следующими сетевыми средствами[6]:

В сетевые средства VxWorks входят также функции, необходимые при разработке устройств, подключаемых к Internet:

  • IP multicasting уровня 0,1 или 2;
  • long fat pipe;
  • CIDR (Classless Inter-Domain Routing);
  • DHCP (Dynamic Host Configuration Protocol) в конфигурациях сервер, клиент и Relay-агент;
  • DNS client (Domain Naming System);
  • SNTP (Simple Network Time Protocol).

VxWorks поддерживает следующие протоколы маршрутизации:

  • RIPv1/v2 (Routing Information Protocol)
  • OSPF (Open Shortest Path First) версии 2.

В стандартную поставку VxWorks входит протокол RIP, протокол OSPF поставляется как дополнительный продукт.

VxWorks поддерживает протокол SNMP (Simple Network Management Protocol) как версии v1, так и версии v2c. Компилятор MIB (Management Information Base) поддерживает объекты MIB-II и расширения.

Стандартным интерфейсом для подключения переносимых сетевых протоколов к операционным системам является интерфейс STREAMS. Под VxWorks можно инсталлировать любой протокол, имеющий STREAMS-реализацию: как стандартный (Novell SPX/IPX, Decnet, AppleTalk, SNA, …), так и специализированный. ОС VxWorks поддерживает STREAMS версии UNIX System V.4.

Дополнительные сетевые возможности: программа WindNet

[править | править код]

В 1994 году Wind River Systems анонсировала программу WindNet, по которой ряд фирм-производителей программных средств в области коммуникаций интегрировали свои программные продукты с VxWorks, тем самым обеспечив поддержку (это неполный перечень)[4]:

  • сетевых протоколов: Х.25, ISDN, ATM, SS7, Frame Relay и OSI;
  • CASE-средств разработки распределённых систем на базе стандартов ROOM (Real-Time Object Oriented Modelling) и CORBA (Common Object Request Broker Architecture);
  • менеджмент сетей по технологиям MBD (Management By Delegation) и CMIP/GDMO (Common Management Information Protocol/Guidelines for Definition of Managed Objects).

Файловая система

[править | править код]

В VxWorks поддерживаются следующие файловые системы[7]:

Поддержка симметричного и асимметричного мультипроцессинга

[править | править код]

Мультипроцессорная система реального времени, с точки зрения программного обеспечения, бывает двух видов: асимметричная ASMP (англ. Asymmetrical MultiProcessing) и симметричная SMP (англ. Symmetrical MultiProcessing). При асимметричном мультипроцессинге ASMP каждый микропроцессор, а в случае многоядерного микропроцессора — каждое процессорное ядро исполняет свой собственный экземпляр ОС, а за распределение процессов (потоков, задач) по процессорам отвечает разработчик прикладного ПО. В таком случае многопроцессорная система сложна в программировании, но обладает предсказуемостью (детерминированностью) характеристик реального времени.

При симметричном мультипроцессинге SMP прикладной программист видит многопроцессорную систему как виртуальную однопроцессорную, что значительно упрощает разработку ПО, но нет 100 % гарантии предсказуемости исполнения из-за того, что нагрузка между процессорами распределяется не вручную, а автоматически.

До появления на рынке встраиваемых микропроцессоров многоядерных устройств потребность в симметричном мультипроцессинге практически отсутствовала. Сложность разработки ПО для слабосвязанных многопроцессорных систем была невелика, и простоту программирования ставили на второе место после предсказуемости поведения системы реального времени. Поэтому в версиях VxWorks 5.x и 6.x вплоть до версии 6.5 поддерживался только асимметричный мультипроцессинг, реализованный в виде библиотеки VxMP(поставляется как дополнительный продукт), обеспечивающей коммуникацию между процессорами через объекты в разделяемой памяти. По мере появления встраиваемых многоядерных микропроцессоров с сильно связанными процессорными ядрами на кристалле на первое место выдвинулась простота разработки ПО, что привело к необходимости поддерживания встраиваемыми ОС реального времени симметричного мультипроцессинга.

С версии 6.6, вышедшей в ноябре 2007 года, VxWorks начала поддерживать симметричный мультипроцессинг SMP[8]. Поддержка SMP-систем включена в интегрированную среду разработки Wind River Workbench for VxWorks[9] и Workbench for On-Chip-Debugging. Поддержка SMP-систем в VxWorks поставляется как дополнительный компонент. Поддерживаются следующие многоядерные микропроцессоры:

Использование

[править | править код]
Представление художника: аппарат Mars Reconnaissance Orbiter на орбите Марса (используется система VxWorks)
  • Phoenix Mars Lander — аппарат НАСА, предназначенный для изучения Марса.
  • Зонды Spirit, Opportunity и Curiosity, а также аппарат Mars Reconnaissance Orbiter используют VxWorks на платформе POWER. Система используется и в других космических миссиях, например, Deep Impact.
  • Планируется использование в новейших авиалайнерах Boeing 787 и Boeing 747-8.
  • Коммуникационное оборудование многих компаний (например, Nortel, 3COM, Alcatel, Samsung (OfficeServ 7400), Linksys WRT54G, NetGear WGR614).
  • Некоторые PostScript-принтеры.
  • Медицинское оборудование компании Siemens AG (в частности, магнитно-резонансные томографы).
  • Медицинское оборудование компании Toshiba (в частности, блоки обработки изображений компьютерных томографов)
  • Системы хранения различных компаний (ETERNUS DX от Fujitsu, серия E от NetApp, серия DS от IBM).
  • Система управления робототехническими комплексами компании KUKA.
  • Система управления роботами компании ABB.
  • Множество других применений во встраиваемых системах с высокими требованиями к надёжности и времени отклика.
Поддерживаемые целевые архитектуры (targets) Поддерживаемые инструментальные платформы (hosts) Поддерживаемые интерфейсы

Сравнение с некоторыми операционными системами реального времени

[править | править код]

VxWorks сравнивают с другими операционными системами реального времени[10].

ОСРВ Архитектура Среда разработки POSIX Макс. число задач
VxWorks Клиент-сервер, микроядро Tornado, Workbench, Qt Creator Commercial[11] POSIX 1003.1, .1b, .1c (включая pThreads) ограничивается только объёмом памяти
QNX Клиент-сервер, микроядро и взаимодействующие процессы QNX Momentics IDE, Qt Creator (Community и Commercial) с версии 3.0[12], Solaris, QNX4, QNX6 (до версии Neutrino 6.3.2 включительно) POSIX 1003.1-2001, с потоками и расширенным. РВ 4095 процессов, в каждом процессе до 32767 потоков
LynxOS[13][14] монолитное ядро[15] Luminosity на базе среды Eclipse POSIX 1003.1a/b/c, 1003.1-2003 ограничено памятью

Примечания

[править | править код]
  1. Intel strikes back at ARM, buys embedded OS maker Wind River Архивная копия от 7 июня 2009 на Wayback Machine — Ars Technica. (англ.)
  2. Intel Corporation today announced the successful completion of its acquisition of Wind River Systems Inc. Архивировано 18 ноября 2011 года. (англ.)
  3. 1 2 3 Статья «Операционные системы реального времени» И. Б. Бурдонов, А. С. Косачев, В. Н. Пономаренко (недоступная ссылка) п. 2.1. VxWorks
  4. 1 2 Статья «VxWorks: Операционная система реального времени и комплекс инструментальных средств разработки ПО РВ», А. В. Демьянов Архивная копия от 11 октября 2006 на Wayback Machine п. Дополнительные сетевые возможности: программа WindNet, п. Поддержка стандартов POSIX
  5. VxWorks Facilities: An Overview (недоступная ссылка). Virtual Memory (Including VxVMI Option)
  6. Статья: «Операционные системы реального времени» И. Б. Бурдонов, А. С. Косачев, В. Н. Пономаренко (недоступная ссылка) п. 5. Сводные таблицы характеристик свойств ОСРВ табл. 2 (недоступная ссылка с 11-07-2015 [3418 дней])
  7. VxWorks / Tornado II FAQ. Дата обращения: 10 января 2009. Архивировано 7 февраля 2010 года.
  8. VxWorks 6.6 SMP, Symmetric Multiprocessing Technology for Multicore Архивировано 12 февраля 2009 года.
  9. pdf: Wind River Workbench. Дата обращения: 10 января 2009. Архивировано из оригинала 16 октября 2007 года.
  10. Сводные таблицы характеристик свойств ОСРВ Архивировано 6 мая 2009 года.
  11. VxWorks Notes — Qt Documentation. Дата обращения: 17 сентября 2015. Архивировано из оригинала 28 сентября 2015 года.
  12. Target Platforms — Qt Documentation. Дата обращения: 17 сентября 2015. Архивировано 8 октября 2015 года.
  13. Статья: «LynxOS — операционная система реального времени в стандарте POSIX», Золотарёв С. В., Калядин А. Ю. Дата обращения: 13 января 2009. Архивировано из оригинала 5 января 2009 года.
  14. новостная статья (недоступная ссылка)
  15. статья: «Взгляд на мир операционных систем реального времени в 2006 году С. В. Золотарёв» (недоступная ссылка) п. «Монолитное или микроядро?»

Литература

[править | править код]