VxWorks — Вікіпедія

VxWorks
Логотип VxWorks в ASCII-графіці
Розробник Wind River Systems
Родина ОС UNIX-подібна
Робочий стан Актуальне
Вихідна модель Закритий код
Останній випуск 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. (англ.)
  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.
  8. pdf: Wind River Workbench (PDF). Архів оригіналу (PDF) за 16 жовтня 2007. Процитовано 24 березня 2010.
  9. Alcatel-Lucent Networking Embraces Linux, NAC. Архів оригіналу за 19 квітня 2009. Процитовано 24 березня 2010.
  10. Стаття: «LynxOS — операційна система реального часу в стандарті POSIX», Золотарьов С. В., Калядина А. Ю. Архів оригіналу за 5 січня 2009. Процитовано 24 березня 2010.
  11. новинна стаття[недоступне посилання з червня 2019]
  12. у статті: «Погляд на світ операційних систем реального часу в 2006 році С. В. Золотарьов»[недоступне посилання з червня 2019] п. «Монолітне або Мікроядро?»

Список літератури[ред. | ред. код]

Посилання[ред. | ред. код]