VxWorks — Вікіпедія

VxWorks
Логотип VxWorks в ASCII-графіці
РозробникWind River Systems
Родина ОСUNIX-подібна
Робочий станАктуальне
Вихідна модельЗакритий код
Випущено у
виробництво
1987
Останній випуск7 / березень 2014 р.[1]
Тип ядраМонолітне ядро
ЛіцензіяEULA
www.windriver.com

VxWorks — операційна система реального часу (ОСРЧ), що розробляється компанією Wind River Systems (США) (власність фірми TPG Capital), орієнтована на використання у вбудованих комп'ютерах, що працюють у системах жорсткого реального часу. VxWorks є системою з крос-засобами розробки прикладного програмного забезпечення. Інакше кажучи, розробка відбувається на інструментальному комп'ютері, званому host, для подальшого застосування його на цільовій машині — target.

Як і більшість інших ОС реального часу, VxWorks включає в себе багатозадачне ядро з витісняючим планувальником і швидким відгуком на переривання, засоби міжпроцесної взаємодії і синхронізації, а також файлову систему і мережеву підсистему (стек протоколів TCP/IP). У комплект поставки входять засоби для крос-компіляції, моніторингу продуктивності[en] (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]:

У мережеві засоби 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, тим самим забезпечивши підтримку (це неповний перелік)[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 поставляється як додаткова компонента. Підтримуються такі багатоядерні мікропроцесори:

Використання

[ред. | ред. код]
Представлення художника: апарат Mars Reconnaissance Orbiter на орбіті Марса (використовується система VxWorks)
  • Phoenix Mars Lander — апарат НАСА, призначений для вивчення Марса.
  • Зонди Spirit, Opportunity і Curiosity, а також апарат Mars Reconnaissance Orbiter використовують VxWorks на платформі POWER[en]. Система використовується і в інших космічних місіях, наприклад 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.»

Конкуруючі операційні системи

[ред. | ред. код]

Коротке порівняння операційних систем реального часу

[ред. | ред. код]

Оригінальна таблиця: Зведені таблиці характеристик властивостей ОСРЧ

ОСРЧ Архітектура Середовище розробки 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 обмежена пам'яттю

Примітки

[ред. | ред. код]
  1. Анонс VxWorks 7. Архів оригіналу за 10 липня 2018. Процитовано 10 липня 2018. [Архівовано 2018-07-10 у Wayback Machine.] (англ.)
  2. а б в Стаття «Операційні системи реального часу» І. Б. Бурдонов, А. С. Косачев, В. Н. Пономаренко[недоступне посилання з лютого 2019] п. 2.1. VxWorks
  3. а б Стаття «VxWorks: Операційна система реального часу і комплекс інструментальних засобів розробки ПЗ РВ», О. В. Дем 'янов [Архівовано 4 березня 2016 у Wayback Machine.] п. Додаткові мережеві можливості: програма WindNet, п. Підтримка стандартів POSIX
  4. VxWorks Facilities: An Overview[недоступне посилання з лютого 2019] п. Virtual Memory (Including VxVMI Option)
  5. Стаття: «Операційні системи реального часу» І. Б. Бурдонов, А. С. Косачев, В. Н. Пономаренко[недоступне посилання з лютого 2019] п. 5. Зведені таблиці характеристик властивостей ОСРЧ табл. 2
  6. VxWorks / Tornado II FAQ. Архів оригіналу за 7 лютого 2010. Процитовано 24 березня 2010.
  7. VxWorks 6.6 SMP, Symmetric Multiprocessing Technology for Multicore. Архів оригіналу за 12 лютого 2009. Процитовано 24 березня 2010. [Архівовано 2009-02-12 у Wayback Machine.]
  8. pdf: Wind River Workbench (PDF). Архів оригіналу (PDF) за 16 жовтня 2007. Процитовано 24 березня 2010. [Архівовано 2007-10-16 у Wayback Machine.]
  9. Alcatel-Lucent Networking Embraces Linux, NAC. Архів оригіналу за 19 квітня 2009. Процитовано 24 березня 2010.
  10. Стаття: «LynxOS — операційна система реального часу в стандарті POSIX», Золотарьов С. В., Калядина А. Ю. Архів оригіналу за 5 січня 2009. Процитовано 24 березня 2010. [Архівовано 2009-01-05 у Wayback Machine.]
  11. новинна стаття[недоступне посилання з червня 2019]
  12. у статті: «Погляд на світ операційних систем реального часу в 2006 році С. В. Золотарьов»[недоступне посилання з червня 2019] п. «Монолітне або Мікроядро?»

Список літератури

[ред. | ред. код]

Посилання

[ред. | ред. код]