VxWorks
VxWorks — операційна система реального часу (ОСРЧ), що розробляється компанією Wind River Systems (США) (власність фірми TPG Capital), орієнтована на використання у вбудованих комп'ютерах, що працюють в системах жорсткого реального часу. VxWorks є системою з крос-засобами розробки прикладного програмного забезпечення. Інакше кажучи, розробка відбувається на інструментальному комп'ютері, званому host, для подальшого застосування його на цільовій машині — target.
Логотип VxWorks в ASCII-графіці | |
Розробник | Wind River Systems |
---|---|
Родина ОС | UNIX-подібна |
Стан проєкту | Актуальне |
Модель коду | Закритий код |
Початковий випуск | 1987 |
Останній стабільний випуск | 7/ березень 2014 р.[1] |
Тип ядра | Монолітне ядро |
Ліцензія | EULA |
Вебсайт | www.windriver.com |
VxWorks у Вікісховищі |
Як і більшість інших ОС реального часу, VxWorks включає в себе багатозадачне ядро з витісняючим планувальником і швидким відгуком на переривання, засоби міжпроцесної взаємодії і синхронізації, а також файлову систему і мережеву підсистему (стек протоколів TCP/IP). У комплект поставки входять засоби для крос-компіляції, моніторингу продуктивності(WindView), віддаленого символьного налагодження, а також емуляції різних процесорів. Додатково поставляється значна кількість різних стеків протоколів, графічних підсистем та ін. як від самої Wind River Systems, так і від третіх фірм. Множина підтримуваних VxWorks вбудованих платформ є однією з найбільших серед операційних систем реального часу.
Історія
Назва 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 володіє такими властивостями[2]:
- кількість завдань обмежується тільки пам'яттю;
- має 256 рівнів пріоритетів завдань;
- планування завдань організовано двома способами: витіснення за пріоритетами і циклічне;
- взаємодія задач відбувається через черги повідомлень, семафори, події та канали (для взаємодії між процесами), сокети і віддалені виклики процедур (для мережевої взаємодії), розподіл пам'яті (використовується для розділення даних) і сигнали (для керування винятковими ситуаціями);
- забезпечується кілька видів семафорів для керування критичними системними ресурсами — програмні, обчислювальні й взаємовиключні з пріоритетним спадкуванням;
- можливо детерміноване перемикання контексту.
Планування
У VxWorks забезпечуються і механізми планування, засновані на POSIX [3] і власні механізми планування (wind scheduling). Обидва варіанти володіють витісняючим і циклічним плануванням. Відмінність полягає в тому, що алгоритми POSIX-планування застосовуються попроцессно, а wind scheduling застосовується на рівні всієї системи [2]
Усі завдання системи та програми в VxWorks використовують один адресний простір, що може призвести до порушення стабільності роботи системи у випадку несправності будь-якої програми. Вирішення цієї проблеми досягається установкою окремо наданого компонента VxVMI [4], який дає можливість кожному процесу використовувати свій власний віртуальний простір.
Переривання
Для досягнення швидкої обробки зовнішніх переривань, програми обробки переривань (ISRs — interrupt service routines) в VxWorks працюють у спеціальному контексті поза контекстами потоків, що дає перевагу в часі, який зазвичай витрачається на перемикання контекстів. C-функція, яку користувач приєднує до вектора переривання, насправді не є фактичною ISR. Переривання не можуть безпосередньо звертатися до С-функцій. Замість цього в таблиці векторів переривань, яка викликається апаратно, запам'ятовується адреса ISR. ISR виконує початкову обробку (підготовку стека і збереження регістрів), а потім викликається С-функція, яка була приєднана користувачем [2]
Мережеві засоби
VxWorks володіє такими мережевими засобами [5]:
- 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 підтримує такі протоколи маршрутизації:
- Routing Information Protocol (RIP) v1/v2
- 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, тим самим забезпечивши підтримку (це неповний перелік) [3]
- мережевих протоколів: X.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 підтримуються такі файлові системи [6]
Підтримка симетричного та асиметричного мультипроцесингу
Мультипроцесорна система реального часу, з точки зору програмного забезпечення, буває двох видів: асиметрична ASMP (Asymmetrical MultiProcessing) і симетрична SMP (Symmetrical MultiProcessing). При асиметричному мультипроцесингу ASMP кожен мікропроцесор, а в разі багатоядерного мікропроцесора — кожне процесорний ядро виконує свій власний екземпляр ОС, а за розподіл процесів (потоків, завдань) по процесорах відповідає розробник прикладного програмного забезпечення. У такому випадку багатопроцесорна система складна в програмуванні, але володіє передбачуваністю (детермінованістю) характеристик реального часу.
При симетричному мультипроцесингу SMP прикладний програміст бачить багатопроцесорну систему як віртуальну однопроцесорну, що значно спрощує розробку ПО, але немає 100% гарантії передбачуваності виконання через те що навантаження між процесорами розподіляється не вручну, а автоматично.
До появи на ринку вбудованих мікропроцесорів багатоядерних пристроїв потреба в симетричному мультипроцесингу практично була відсутня. Складність розробки ПЗ для слабозвязаних багатопроцесорних систем була невелика, і простоту програмування ставили на друге місце після передбачуваності поведінки системи реального часу. Тому у версіях VxWorks 5.x і 6.x аж до версії 6.5 підтримувався тільки асиметричний мультипроцесинг, реалізований у вигляді бібліотеки VxMP (поставляється як додатковий продукт), що забезпечує комунікацію між процесорами через об'єкти в спільній пам'яті. У міру появи вбудованих багатоядерних мікропроцесорів з сильно пов'язаними процесорними ядрами на кристалі на перше місце висувалася простота розробки ПЗ, що призвело до необхідності підтримання вбудовуваними ОС реального часу симетричного мультипроцесингу.
З версії 6.6, що вийшла в листопаді 2007 року, VxWorks почала підтримувати симетричний мультипроцесинг SMP [7] Підтримка SMP-систем включена в інтегроване середовище розробки Wind River Workbench for VxWorks [8] і Workbench for On-Chip-Debugging. Підтримка SMP-систем в VxWorks поставляється як додаткова компонента. Підтримуються такі багатоядерні мікропроцесори:
- ARM11 MPCore (ARMv6)
- Broadcom MIPS BCM1480
- Cavium OCTEON CN38xx
- Freescale MPC8641D
- Intel Xeon
- Intel Core
- Raza XLR 732
Використання
- Phoenix Mars Lander — апарат НАСА, призначений для вивчення Марсу.
- Зонди Spirit, Opportunity і Curiosity, а також апарат Mars Reconnaissance Orbiter використовують VxWorks на платформі POWER. Система використовується і в інших космічних місіях, наприклад Deep Impact.
- Планується використання у новітніх авіалайнерах Boeing 787 і Boeing 747-8.
- Комунікаційне обладнання багатьох компаній (Avaya, наприклад, Nortel, 3COM, Alcatel та ін.)
- Linksys WRT54G (ver.5,6,…), NetGear WGR614 (ver. 5,6,7)
- Деякі PostScript-принтери.
- Медичне устаткування компанії Siemens AG (зокрема, магнітно-резонансні томографи).
- Останні[які?] системи інтерфейсів BMW iDrive
- Система управління робототехнічних комплексів компанії KUKA.
- Безліч інших застосувань у вбудованих системах з високими вимогами до надійності і часу відгуку.
Підтримувані цільові архітектури (targets) | Підтримувані інструментальні платформи (hosts) | Підтримувані інтерфейси |
---|---|---|
| ||
Критика
Minka Nikolova, інтерв'ю InternetNews.com[9]:
Під Linux є чудові нові пакети, які ми можемо при необхідності інтегрувати в наші мережеві комутатори. Платформа VxWorks зараз розвивається повільно, оскільки існує давно. Пакети, які надає VxWorks, насправді, не найновіші і не найкращі. Все поступово рухається у бік Linux.
Оригінальний текст (англ.)«There are great packages that are available on Linux and a lot of new packages we can integrate into our switches if we decide to do so. VxWorks is old and doesn't have a lot of movement in it. The packages that VxWorks provides really aren't the latest and greatest. But basically everyone is moving toward Linux.»
Конкуруючі операційні системи
- TRON
- Integrity
- QNX
- LynxOS
- VRTX
- Nucleus RTOS
- OSE
- ThreadX
- Windows CE
- OS-9
- eCos
- Embedded Linux
- RTEMS
- ОС2000
Коротке порівняння операційних систем реального часу
Оригінальна таблиця: Зведені таблиці характеристик властивостей ОСРЧ
ОСРЧ | Архітектура | Середовище розробки | POSIX | Мах. число задач |
---|---|---|---|---|
VxWorks | Клієнт-сервер, Мікроядро | Tornado, Workbench | POSIX 1003.1, .1 b, .1 c (включаючи pThreads) | обмежується тільки об'ємом пам'яті |
QNX | Клієнт-сервер, Мікроядро та взаємодіючі процеси | Windows, Solaris, Self-Hosted, QNX4, Linux | POSIX 1003.1-2001, з потоками і розширеним. РВ | 4095 процесів, у кожному процесі до 32767 потоків |
LynxOS [10][11] | ----, Монолітне ядро [12] | Luminosity на базі середовища Eclipse | POSIX 1003.1a/b/c, 1003.1-2003 | обмежена пам'яттю |
Примітки
- Анонс VxWorks 7. Процитовано 10 липня 2018. (англ.)
- Стаття «Операційні системи реального часу» І. Б. Бурдонов, А. С. Косачев, В. Н. Пономаренко[недоступне посилання з лютого 2019] п. 2.1. VxWorks
- Стаття «VxWorks: Операційна система реального часу і комплекс інструментальних засобів розробки ПЗ РВ», О. В. Дем 'янов п. Додаткові мережеві можливості: програма WindNet, п. Підтримка стандартів POSIX
- VxWorks Facilities: An Overview[недоступне посилання з лютого 2019] п. Virtual Memory (Including VxVMI Option)
- Стаття: «Операційні системи реального часу» І. Б. Бурдонов, А. С. Косачев, В. Н. Пономаренко[недоступне посилання з лютого 2019] п. 5. Зведені таблиці характеристик властивостей ОСРЧ табл. 2
- VxWorks / Tornado II FAQ
- VxWorks 6.6 SMP, Symmetric Multiprocessing Technology for Multicore. Архів оригіналу за 12 лютого 2009. Процитовано 24 березня 2010.
- pdf: Wind River Workbench
- Alcatel-Lucent Networking Embraces Linux, NAC
- Стаття: «LynxOS — операційна система реального часу в стандарті POSIX», Золотарьов С. В., Калядина А. Ю. Архів оригіналу за 5 січня 2009. Процитовано 24 березня 2010.
- новинна стаття[недоступне посилання з червня 2019]
- у статті: «Погляд на світ операційних систем реального часу в 2006 році С. В. Золотарьов»[недоступне посилання з червня 2019] п. «Монолітне або Мікроядро?»
Список літератури
- VxWorks операційна система всередині Інтернет, О. В. Дем 'янов (ЗАТ РТСофт)
- VxWorks: Операційна система реального часу і комплекс інструментальних засобів розробки ПЗ РВ, О. В. Дем 'янов, AVD Systems, м. Москва
- Операційні системи реального часу, І. Б. Бурдонов, А. С. Косачев, В. Н. Пономаренко
- www.vxworks.ru
- rnd.cnews.ru — Операційні системи реального часу для авіоніки: огляд