VxWorks
Розробник | 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]:
- 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.
У 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]
- MS-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 (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[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.»
- 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. Процитовано 10 липня 2018. (англ.)
- ↑ а б в Стаття «Операційні системи реального часу» І. Б. Бурдонов, А. С. Косачев, В. Н. Пономаренко[недоступне посилання з лютого 2019] п. 2.1. VxWorks
- ↑ а б Стаття «VxWorks: Операційна система реального часу і комплекс інструментальних засобів розробки ПЗ РВ», О. В. Дем 'янов [Архівовано 4 березня 2016 у Wayback Machine.] п. Додаткові мережеві можливості: програма WindNet, п. Підтримка стандартів POSIX
- ↑ VxWorks Facilities: An Overview[недоступне посилання з лютого 2019] п. Virtual Memory (Including VxVMI Option)
- ↑ Стаття: «Операційні системи реального часу» І. Б. Бурдонов, А. С. Косачев, В. Н. Пономаренко[недоступне посилання з лютого 2019] п. 5. Зведені таблиці характеристик властивостей ОСРЧ табл. 2
- ↑ VxWorks / Tornado II FAQ. Архів оригіналу за 7 лютого 2010. Процитовано 24 березня 2010.
- ↑ VxWorks 6.6 SMP, Symmetric Multiprocessing Technology for Multicore. Архів оригіналу за 12 лютого 2009. Процитовано 24 березня 2010.
- ↑ pdf: Wind River Workbench (PDF). Архів оригіналу (PDF) за 16 жовтня 2007. Процитовано 24 березня 2010.
- ↑ Alcatel-Lucent Networking Embraces Linux, NAC. Архів оригіналу за 19 квітня 2009. Процитовано 24 березня 2010.
- ↑ Стаття: «LynxOS — операційна система реального часу в стандарті POSIX», Золотарьов С. В., Калядина А. Ю. Архів оригіналу за 5 січня 2009. Процитовано 24 березня 2010.
- ↑ новинна стаття[недоступне посилання з червня 2019]
- ↑ у статті: «Погляд на світ операційних систем реального часу в 2006 році С. В. Золотарьов»[недоступне посилання з червня 2019] п. «Монолітне або Мікроядро?»
- VxWorks операційна система всередині Інтернет, О. В. Дем 'янов (ЗАТ РТСофт) [Архівовано 5 березня 2016 у Wayback Machine.]
- VxWorks: Операційна система реального часу і комплекс інструментальних засобів розробки ПЗ РВ, О. В. Дем 'янов, AVD Systems, м. [Архівовано 4 березня 2016 у Wayback Machine.]Москва [Архівовано 4 березня 2016 у Wayback Machine.]
- Операційні системи реального часу, І. Б. Бурдонов, А. С. Косачев, В. Н. Пономаренко
- www.vxworks.ru [Архівовано 2 квітня 2022 у Wayback Machine.]
- rnd.cnews.ru — Операційні системи реального часу для авіоніки: огляд
- Wind River Systems [Архівовано 4 жовтня 2006 у Wayback Machine.]
- VxWorks 6.x [Архівовано 5 лютого 2010 у Wayback Machine.]
- VxWorks / Tornado II FAQ [Архівовано 9 лютого 2010 у Wayback Machine.]
- VxWorks Cookbook
Це незавершена стаття про операційні системи. Ви можете допомогти проєкту, виправивши або дописавши її. |