Русская Википедия: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]:
- 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 поддерживает следующие протоколы маршрутизации:
В стандартную поставку 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]:
- 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 (Шаблон: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 поставляется как дополнительный компонент. Поддерживаются следующие многоядерные микропроцессоры:
- 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 (в частности, блоки обработки изображений компьютерных томографов)
- Системы хранения различных компаний (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 | ограничено памятью |
Примечания
Литература
- VxWorks операционная система внутри Интернет, А. В. Демьянов (ЗАО РТСофт)
- VxWorks: Операционная система реального времени и комплекс инструментальных средств разработки ПО РВ, А. В. Демьянов, AVD Systems, г. Москва
- Операционные системы реального времени, И. Б. Бурдонов, А. С. Косачев, В. Н. Пономаренко
- www.vxworks.ru
- rnd.cnews.ru — Операционные системы реального времени для авионики: обзор
Ссылки
Шаблон:Операционные системы реального времени
- ↑ Intel strikes back at ARM, buys embedded OS maker Wind River Шаблон:Wayback — Ars Technica.Шаблон:Ref-en
- ↑ Intel Corporation today announced the successful completion of its acquisition of Wind River Systems Inc. Шаблон:WebarchiveШаблон:Ref-en
- ↑ 3,0 3,1 3,2 Статья «Операционные системы реального времени» И. Б. Бурдонов, А. С. Косачев, В. Н. ПономаренкоШаблон:Недоступная ссылка п. 2.1. VxWorks
- ↑ 4,0 4,1 Статья «VxWorks: Операционная система реального времени и комплекс инструментальных средств разработки ПО РВ», А. В. Демьянов Шаблон:Wayback п. Дополнительные сетевые возможности: программа WindNet, п. Поддержка стандартов POSIX
- ↑ VxWorks Facilities: An OverviewШаблон:Недоступная ссылка. Virtual Memory (Including VxVMI Option)
- ↑ Статья: «Операционные системы реального времени» И. Б. Бурдонов, А. С. Косачев, В. Н. ПономаренкоШаблон:Недоступная ссылка п. 5. Сводные таблицы характеристик свойств ОСРВ табл. 2Шаблон:Dead link
- ↑ Шаблон:Cite web
- ↑ VxWorks 6.6 SMP, Symmetric Multiprocessing Technology for Multicore Шаблон:Webarchive
- ↑ Шаблон:Cite web
- ↑ Сводные таблицы характеристик свойств ОСРВ Шаблон:Webarchive
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ новостная статьяШаблон:Недоступная ссылка
- ↑ статья: «Взгляд на мир операционных систем реального времени в 2006 году С. В. Золотарёв»Шаблон:Недоступная ссылка п. «Монолитное или микроядро?»
- Русская Википедия
- Страницы с неработающими файловыми ссылками
- Операционные системы реального времени
- Встраиваемые операционные системы
- Операционные системы на основе микроядер
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Википедия
- Статья из Википедии
- Статья из Русской Википедии