VxWorks – это операционная система реального времени, разработанная и выпускаемая компанией Wind River Systems. Она используется во многих встраиваемых системах, таких как сетевые маршрутизаторы, АТС, телефонные центральные станции, авионика, медицинские устройства и другие устройства, требующие быстрой и надежной работы в реальном времени, а также в сфере АСУТП. VxWorks обладает высокой степенью надежности, устойчивостью к сбоям и быстрым откликом на внешние события. Промышленная автоматика использует операционные системы реального времени, в частности VxWorks, из-за предсказуемого времени отклика таких ОС на события.
Аналогично большинству других ОС реального времени, VxWorks включает в себя многозадачное ядро с вытесняющим планировщиком и быстрым откликом на прерывания, средства межпроцессного взаимодействия и синхронизации, а также файловую систему и сетевую подсистему (стек протоколов TCP/IP). В комплект поставки входят средства для кросс-компиляции, мониторинга производительности (WindView), удалённой символьной отладки, а также эмуляции различных процессоров. Дополнительно поставляется значительное количество различных стеков протоколов, графических подсистем и др. как от самой Wind River Systems, так и от третьих фирм. Множество поддерживаемых VxWorks встраиваемых платформ является одним из самых обширных среди операционных систем реального времени.
VxWorks имеет архитектуру клиент-сервер и, как и большинство ОС жёсткого реального времени, построена по технологии монолитного ядра. На самом нижнем непрерываемом уровне ядра (WIND Microkernel) выполняются только базовые функции планирования задач и управления коммуникацией/синхронизацией между задачами. Все остальные функции ОСРВ более высокого уровня — управление памятью, сетевые средства и т. д. — реализуются через простые функции нижнего уровня. За счёт такой иерархической организации достигается быстродействие и детерминированность ядра системы, также это позволяет легко строить необходимую конфигурацию операционной системы.
VxWorks можно скомпоновать как для систем с жёсткими аппаратными ограничениями, так и для систем с развитой функциональностью. Отдельные модули системы сами могут быть масштабируемыми. При сборке системы можно отключать определённые функции системы, не нужные в данный момент, также можно убирать специфические объекты синхронизации ядра, если в них нет необходимости.
Но, несмотря на то, что система является конфигурируемой, нельзя сказать, что в ней реализован компонентный подход, так как все модули построены над базовым ядром и не могут быть использованы в других средах.
Ядро VxWorks обладает следующими свойствами:
- количество задач ограничивается только памятью;
- имеет 256 уровней приоритетов задач;
- планирование задач организовано двумя способами: вытеснение по приоритетам и циклическое;
- взаимодействие задач происходит через очереди сообщений, семафоры, события и каналы (для взаимодействия между процессами), сокеты и удалённые вызовы процедур (для сетевого взаимодействия), разделение памяти (используется для разделения данных) и сигналы (для управления исключительными ситуациями);
- обеспечивается несколько видов семафоров для управления критическими системными ресурсами — двоичные, вычислительные и взаимоисключающие с приоритетным наследованием;
- возможно детерминированное переключение контекста.
VxWorks обладает следующими сетевыми средствами:
- 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 поддерживает следующие протоколы маршрутизации:
В стандартную поставку 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), так и специализированный. ОС VxWorks поддерживает STREAMS версии UNIX System V.4.