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

Як і більшість інших ОС реального часу, 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 тепер працює») або («VRTX, яка працює»).

Коли стало зрозуміло, що Ready Systems може розірвати контракт на розповсюдження VRTX, в Wind River було розроблено власне ядро операційної системи, яке замінило VRTX. Базова функціональність нового ядра VxWorks була такою ж, як у VRTX.

Архітектура

VxWorks має архітектуру клієнт-сервер і, як і більшість ОС жорсткого реального часу, побудована за технологією мікроядра. На найнижчому неперервному рівні ядра (WIND Microkernel) виконуються тільки базові функції планування завдань і керування комунікацією і синхронізацією між завданнями. Всі інші функції ОСРЧ більш високого рівня — керування пам'яттю, мережеві засоби і т. д. — реалізуються через прості функції нижнього рівня. За рахунок такої ієрархічної організації досягається швидкодія і детермінованість ядра системи, також це дозволяє легко будувати необхідну конфігурацію операційної системи.

VxWorks можна скомпонувати як для систем з жорсткими апаратними обмеженнями, так і для систем з розвиненою функціональністю. Окремі модулі системи самі можуть бути масштабованими. При збірці системи можна відключати певні функції системи, непотрібні в цей час, також можна прибирати специфічні ядерні об'єкти синхронізації, якщо в них немає необхідності.

Але, попри те, що система є конфігурована, не можна сказати, що в ній реалізований компонентний підхід, тому що всі модулі побудовані над базовим ядром і не можуть бути використані в інших середовищах.

Ядро VxWorks володіє такими властивостямиСтаття «Операційні системи реального часу» І. Б. Бурдонов, А. С. Косачев, В. Н. Пономаренко п. 2.1. VxWorks: кількість завдань обмежується тільки пам'яттю; має 256 рівнів пріоритетів завдань; планування завдань організовано двома способами: витіснення за пріоритетами і циклічне; взаємодія задач відбувається через черги повідомлень, семафори, події та канали (для взаємодії між процесами), сокети і віддалені виклики процедур (для мережевої взаємодії), розподіл пам'яті (використовується для розділення даних) і сигнали (для керування винятковими ситуаціями); забезпечується кілька видів семафорів для керування критичними системними ресурсами — програмні, обчислювальні й взаємовиключні з пріоритетним спадкуванням; можливо детерміноване перемикання контексту.

Планування

У VxWorks забезпечуються і механізми планування, засновані на POSIXСтаття «VxWorks: Операційна система реального часу і комплекс інструментальних засобів розробки ПЗ РВ», О. В. Дем 'янов п. Додаткові мережеві можливості: програма WindNet, п. Підтримка стандартів POSIX і власні механізми планування (wind scheduling). Обидва варіанти володіють витісняючим і циклічним плануванням. Відмінність полягає в тому, що алгоритми POSIX-планування застосовуються попроцессно, а wind scheduling застосовується на рівні всієї системи.

Усі завдання системи та програми в VxWorks використовують один адресний простір, що може призвести до порушення стабільності роботи системи у випадку несправності будь-якої програми. Вирішення цієї проблеми досягається установкою окремо наданого компонента VxVMIVxWorks Facilities: An Overview п. Virtual Memory (Including VxVMI Option), який дає можливість кожному процесу використовувати свій власний віртуальний простір.

Переривання

Для досягнення швидкої обробки зовнішніх переривань, програми обробки переривань (ISRs — interrupt service routines) в VxWorks працюють у спеціальному контексті поза контекстами потоків, що дає перевагу в часі, який зазвичай витрачається на перемикання контекстів. C-функція, яку користувач приєднує до вектора переривання, насправді не є фактичною ISR. Переривання не можуть безпосередньо звертатися до С-функцій. Замість цього в таблиці векторів переривань, яка викликається апаратно, запам'ятовується адреса ISR. ISR виконує початкову обробку (підготовку стека і збереження регістрів), а потім викликається С-функція, яка була приєднана користувачем.

Мережеві засоби

VxWorks володіє такими мережевими засобамиСтаття: «Операційні системи реального часу» І. Б. Бурдонов, А. С. Косачев, В. Н. Пономаренко п. 5. Зведені таблиці характеристик властивостей ОСРЧ табл. 2: 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); (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, тим самим забезпечивши підтримку (це неповний перелік) мережевих протоколів: 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 підтримуються такі файлові системи 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 Підтримка SMP-систем включена в інтегроване середовище розробки Wind River Workbench for VxWorks і 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 на платформі . Система використовується і в інших космічних місіях, наприклад 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) Підтримувані інтерфейси Motorola 680х0 і CPU32, PowerPC Intel 386/486, Pentium, Intel 960, Sparc, Mips R3000/4000, AMD 29K, Motorola 88110, HP PA-RISC, Hitachi SH7600, DEC Alpha Sun SPARCstation (SunOS и Solaris), HP 9000/400,700 (HP-UX), IBM RS6000 (AIX), Silicon Graphics (IRIX), DEC Alpha (OSF/1), PC (Windows) host-target Ethernet, RS232, емулятор ICE (In-Circuit Emulator), крос-шина (backplane)

Критика