Русская Википедия:VxWorks

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Карточка ОС 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 может означать Шаблон:Lang-en («VRTX теперь работает») или Шаблон:Lang-en («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 (Шаблон:Lang-en) и симметричная SMP (Шаблон:Lang-en). При асимметричном мультипроцессинге 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.jpg
Представление художника: аппарат 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 Шаблон:Wayback — Ars Technica.Шаблон:Ref-en
  2. Intel Corporation today announced the successful completion of its acquisition of Wind River Systems Inc. Шаблон:WebarchiveШаблон:Ref-en
  3. 3,0 3,1 3,2 Статья «Операционные системы реального времени» И. Б. Бурдонов, А. С. Косачев, В. Н. ПономаренкоШаблон:Недоступная ссылка п. 2.1. VxWorks
  4. 4,0 4,1 Статья «VxWorks: Операционная система реального времени и комплекс инструментальных средств разработки ПО РВ», А. В. Демьянов Шаблон:Wayback п. Дополнительные сетевые возможности: программа WindNet, п. Поддержка стандартов POSIX
  5. VxWorks Facilities: An OverviewШаблон:Недоступная ссылка. Virtual Memory (Including VxVMI Option)
  6. Статья: «Операционные системы реального времени» И. Б. Бурдонов, А. С. Косачев, В. Н. ПономаренкоШаблон:Недоступная ссылка п. 5. Сводные таблицы характеристик свойств ОСРВ табл. 2Шаблон:Dead link
  7. Шаблон:Cite web
  8. VxWorks 6.6 SMP, Symmetric Multiprocessing Technology for Multicore Шаблон:Webarchive
  9. Шаблон:Cite web
  10. Сводные таблицы характеристик свойств ОСРВ Шаблон:Webarchive
  11. Шаблон:Cite web
  12. Шаблон:Cite web
  13. Шаблон:Cite web
  14. новостная статьяШаблон:Недоступная ссылка
  15. статья: «Взгляд на мир операционных систем реального времени в 2006 году С. В. Золотарёв»Шаблон:Недоступная ссылка п. «Монолитное или микроядро?»