VxWorks — операционная система реального времени, разрабатываемая компанией Wind River Systems (США), ориентированная на использование во встраиваемых компьютерах, работающих в системах жёсткого реального времени. VxWorks является системой с кросс-средствами разработки прикладного программного обеспечения. Иначе говоря, разработка происходит на инструментальном компьютере, называемом host, для последующего применения его на целевой машине — target.
Как и большинство других ОС реального времени, VxWorks включает в себя многозадачное ядро с вытесняющим планировщиком и быстрым откликом на прерывания, средства межпроцессного взаимодействия и синхронизации, а также файловую систему и сетевую подсистему (стек протоколов TCP/IP). В комплект поставки входят средства для кросс-компиляции, мониторинга производительности (WindView), удалённой символьной отладки, а также эмуляции различных процессоров. Дополнительно поставляется значительное количество различных стеков протоколов, графических подсистем и др. как от самой Wind River Systems, так и от третьих фирм. Множество поддерживаемых VxWorks встраиваемых платформ является одним из самых обширных среди операционных систем реального времени.
4 июня 2009 года компания Intel объявила о планах приобрести Wind River Systems и VxWorks.Intel strikes back at ARM, buys embedded OS maker Wind River — Ars Technica. 17 июля 2009 года поглощение компании было завершеноIntel Corporation today announced the successful completion of its acquisition of Wind River Systems Inc. .
История Название «VxWorks», как считается, получилось из игры слов с названием ОС VRTX, созданной компанией Ready Systems (сейчас этот продукт принадлежит Mentor Graphics). В начале 1980-х VRTX была достаточно новым и сырым продуктом, она работала не слишком хорошо. VRTX имела размер всего 4 КБ, и её нельзя было использовать как полноценную операционную систему. Компания Wind River приобрела права на распространение расширенной версии VRTX под названием VxWorks. Доработки и расширения, внесённые компанией WindRiver, позволили создать систему, которая работала (например, VXWorks имела файловую систему и интегрированную среду разработки). Таким образом, название VxWorks может означать («VRTX теперь работает») или («VRTX, которая работает»).
Когда стало ясно, что Ready Systems может разорвать контракт на распространение VRTX, в Wind River было разработано собственное ядро операционной системы, которое заменило VRTX. Базовая функциональность нового ядра VxWorks была такой же, как у VRTX.
Архитектура VxWorks имеет архитектуру клиент-сервер и, как и большинство ОС жёсткого реального времени, построена по технологии монолитного ядра. На самом нижнем непрерываемом уровне ядра (WIND Microkernel) выполняются только базовые функции планирования задач и управления коммуникацией/синхронизацией между задачами. Все остальные функции ОСРВ более высокого уровня — управление памятью, сетевые средства и т. д. — реализуются через простые функции нижнего уровня. За счёт такой иерархической организации достигается быстродействие и детерминированность ядра системы, также это позволяет легко строить необходимую конфигурацию операционной системы.
VxWorks можно скомпоновать как для систем с жёсткими аппаратными ограничениями, так и для систем с развитой функциональностью. Отдельные модули системы сами могут быть масштабируемыми. При сборке системы можно отключать определённые функции системы, не нужные в данный момент, также можно убирать специфические объекты синхронизации ядра, если в них нет необходимости.
Но, несмотря на то, что система является конфигурируемой, нельзя сказать, что в ней реализован компонентный подход, так как все модули построены над базовым ядром и не могут быть использованы в других средах.
Ядро VxWorks обладает следующими свойствамиСтатья «Операционные системы реального времени» И. Б. Бурдонов, А. С. Косачев, В. Н. Пономаренко п. 2.1. VxWorks: количество задач ограничивается только памятью; имеет 256 уровней приоритетов задач; планирование задач организовано двумя способами: вытеснение по приоритетам и циклическое; взаимодействие задач происходит через очереди сообщений, семафоры, события и каналы (для взаимодействия между процессами), сокеты и удалённые вызовы процедур (для сетевого взаимодействия), разделение памяти (используется для разделения данных) и сигналы (для управления исключительными ситуациями); обеспечивается несколько видов семафоров для управления критическими системными ресурсами — двоичные, вычислительные и взаимоисключающие с приоритетным наследованием; возможно детерминированное переключение контекста.
Планирование В VxWorks обеспечиваются и механизмы планирования, основанные на POSIXСтатья «VxWorks: Операционная система реального времени и комплекс инструментальных средств разработки ПО РВ», А. В. Демьянов п. Дополнительные сетевые возможности: программа WindNet, п. Поддержка стандартов POSIX, и собственные механизмы планирования (wind scheduling). Оба варианта обладают вытесняющим и циклическим планированием. Различие заключается в том, что алгоритмы POSIX-планирования применяются попроцессно, а wind scheduling применяется на уровне всей системы.
Все задачи системы и приложения в VxWorks используют одно адресное пространство, что может привести к нарушению стабильности работы системы в случае неисправности какого-либо приложения. Решение этой проблемы достигается установкой отдельно предоставляемого компонента VxVMIVxWorks Facilities: An Overview. Virtual Memory (Including VxVMI Option), который даёт возможность каждому процессу использовать собственное виртуальное пространство.
Прерывания Для достижения быстрой обработки внешних прерываний программы обработки прерываний (ISRs — interrupt service routines) в VxWorks работают в специальном контексте вне контекстов потоков, что даёт преимущество во времени, которое обычно тратится на переключение контекстов. С-функция, которую пользователь присоединяет к вектору прерывания, на самом деле не является фактической ISR. Прерывания не могут напрямую обращаться к С-функциям. Вместо этого в таблице векторов прерываний, которая вызывается аппаратно, запоминается адрес ISR. ISR выполняет начальную обработку (подготовку стека и сохранение регистров), а потом вызывается С-функция, которая была присоединена пользователем.
Сетевые средства VxWorks обладает следующими сетевыми средствамиСтатья: «Операционные системы реального времени» И. Б. Бурдонов, А. С. Косачев, В. Н. Пономаренко п. 5. Сводные таблицы характеристик свойств ОСРВ табл. 2: TCP/zero-copy TCP/UDP/ICMP/IP(IPv4 и IPv6)/ARP, SLIP/CSLIP/PPP, Sockets, telnet/rlogin/rcp/rsh, ftp/tftp/bootp, NFS (клиент и сервер). В сетевые средства 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, тем самым обеспечив поддержку (это неполный перечень): сетевых протоколов: Х.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 поддерживаются следующие файловые системы: DOS-Compatible File System: DosFS Raw File System: RawFs Target Server File System: TSFS Network File System: NFS ISO 9660 (CDROM File System) Tape File System: TapeFs CIFS/SMB TrueFFS
Поддержка симметричного и асимметричного мультипроцессинга Мультипроцессорная система реального времени, с точки зрения программного обеспечения, бывает двух видов: асимметричная ASMP () и симметричная SMP (). При асимметричном мультипроцессинге ASMP каждый микропроцессор, а в случае многоядерного микропроцессора — каждое процессорное ядро исполняет свой собственный экземпляр ОС, а за распределение процессов (потоков, задач) по процессорам отвечает разработчик прикладного ПО. В таком случае многопроцессорная система сложна в программировании, но обладает предсказуемостью (детерминированностью) характеристик реального времени.
При симметричном мультипроцессинге SMP прикладной программист видит многопроцессорную систему как виртуальную однопроцессорную, что значительно упрощает разработку ПО, но нет 100 % гарантии предсказуемости исполнения из-за того, что нагрузка между процессорами распределяется не вручную, а автоматически.
До появления на рынке встраиваемых микропроцессоров многоядерных устройств потребность в симметричном мультипроцессинге практически отсутствовала. Сложность разработки ПО для слабосвязанных многопроцессорных систем была невелика, и простоту программирования ставили на второе место после предсказуемости поведения системы реального времени. Поэтому в версиях VxWorks 5.x и 6.x вплоть до версии 6.5 поддерживался только асимметричный мультипроцессинг, реализованный в виде библиотеки VxMP(поставляется как дополнительный продукт), обеспечивающей коммуникацию между процессорами через объекты в разделяемой памяти. По мере появления встраиваемых многоядерных микропроцессоров с сильно связанными процессорными ядрами на кристалле на первое место выдвинулась простота разработки ПО, что привело к необходимости поддерживания встраиваемыми ОС реального времени симметричного мультипроцессинга.
С версии 6.6, вышедшей в ноябре 2007 года, VxWorks начала поддерживать симметричный мультипроцессинг SMPVxWorks 6.6 SMP, Symmetric Multiprocessing Technology for Multicore . Поддержка SMP-систем включена в интегрированную среду разработки Wind River Workbench for VxWorks и Workbench for On-Chip-Debugging. Поддержка SMP-систем в VxWorks поставляется как дополнительный компонент. Поддерживаются следующие многоядерные микропроцессоры: ARM11 MPCore(ARMv6) Broadcom MIPS BCM1480 Cavium OCTEON CN38xx Freescale MPC8641D Intel Dual-Core Xeon LV Intel Core Duo T2400 Raza XLR 732
Использование
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 (в частности, блоки обработки изображений компьютерных томографов)