VxWorks

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
VxWorks
VxWorks.png
Логотип VxWorks в ASCII-графике
Разработчик

Wind River Systems

Семейство ОС

UNIX-подобная

Последняя версия

6.9 — февраль 2011 г.[1]

Тип ядра

Микроядро

Лицензия

Пользовательское соглашение

Состояние

Актуальное

Веб-сайт

VxWorks RTOS

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

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

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

История[править | править вики-текст]

Название «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 обладает следующими свойствами[4]:

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

Планирование[править | править вики-текст]

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

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

Прерывания[править | править вики-текст]

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

Сетевые средства[править | править вики-текст]

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

В сетевые средства 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, тем самым обеспечив поддержку (это неполный перечень)[5]:

  • сетевых протоколов: Х.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 поддерживаются следующие файловые системы[8]:

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

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

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

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

С версии 6.6, вышедшей в ноябре 2007 года, VxWorks начала поддерживать симметричный мультипроцессинг SMP[9]. Поддержка SMP-систем включена в интегрированную среду разработки Wind River Workbench for VxWorks[10] и 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, Linksys WRT54G, NetGear WGR614).
  • Некоторые PostScript-принтеры.
  • Медицинское оборудование компании Siemens AG (в частности, магнитно-резонансные томографы).
  • Системы хранения различных компаний (ETERNUS DX от Fujitsu, серия E от NetApp, серия DS от IBM).
  • Последние системы интерфейсов BMW iDrive.
  • Система управления робототехническими комплексами компании KUKA.
  • Система управления роботами компании ABB.
  • Множество других применений во встраиваемых системах с высокими требованиями к надёжности и времени отклика.
Поддерживаемые целевые архитектуры (targets) Поддерживаемые инструментальные платформы (hosts) Поддерживаемые интерфейсы

Критика[править | править вики-текст]

Старший брэнд-менеджер Alcatel-Lucent Минка Николова, интервью InternetNews.com[11]:

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

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

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

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

Примечания[править | править вики-текст]

  1. Wind River Advances Multicore Leadership With Introduction of Latest VxWorks Real-Time Operating System. Проверено 5 апреля 2009. Архивировано из первоисточника 28 января 2012.  (англ.)
  2. Intel strikes back at ARM, buys embedded OS maker Wind River — Ars Technica. (англ.)
  3. Intel Corporation today announced the successful completion of its acquisition of Wind River Systems Inc.  (англ.)
  4. 1 2 3 Статья «Операционные системы реального времени» И. Б. Бурдонов, А. С. Косачев, В. Н. Пономаренко п. 2.1. VxWorks
  5. 1 2 Статья «VxWorks: Операционная система реального времени и комплекс инструментальных средств разработки ПО РВ», А. В. Демьянов п. Дополнительные сетевые возможности: программа WindNet, п. Поддержка стандартов POSIX
  6. VxWorks Facilities: An Overview. Virtual Memory (Including VxVMI Option)
  7. Статья: «Операционные системы реального времени» И. Б. Бурдонов, А. С. Косачев, В. Н. Пономаренко п. 5. Сводные таблицы характеристик свойств ОСРВ табл. 2
  8. VxWorks / Tornado II FAQ
  9. VxWorks 6.6 SMP, Symmetric Multiprocessing Technology for Multicore
  10. pdf: Wind River Workbench
  11. Alcatel-Lucent Networking Embraces Linux, NAC
  12. Сводные таблицы характеристик свойств ОСРВ
  13. Статья: «LynxOS — операционная система реального времени в стандарте POSIX», Золотарёв С. В., Калядин А. Ю.
  14. новостная статья
  15. статья: «Взгляд на мир операционных систем реального времени в 2006 году С. В. Золотарёв» п. «Монолитное или микроядро?»

Список литературы[править | править вики-текст]

Ссылки[править | править вики-текст]