Операционные системы реального времени семейства VxWorks корпорации WindRiver Systems предназначены для разработки программного обеспечения (ПО) встраиваемых компьютеров, работающих в системах жесткого реального времени [VxWorks]. Операционная система VxWorks обладает кросс-средствами разработки программного обеспечения (ПО), т.е. разработка ведется на инструментальном компьютере (host) в среде Tornado для дальнейшего ее использования на целевом компьютере (target) под управлением системы VxWorks.
Операционная система VxWorks имеет архитектуру клиент-сервер и построена в соответствии с технологией микроядра, т.е. на самом нижнем непрерываемом уровне ядра (WIND Microkernel) обрабатываются только планирование задач и управление их взаимодействием/синхронизацией. Вся остальная функциональность операционного ядра - управление памятью, вводом/выводом и пр. - обеспечивается на более высоком уровне и реализуется через процессы. Это обеспечивает быстродействие и детерминированность ядра, а также масштабируемость системы.
VxWorks может быть скомпонована как для небольших встраиваемых систем с жесткими ограничениями для памяти, так и для сложных систем с развитой функциональностью. Более того, отдельные модули сами являются масштабируемыми. Конкретные функции можно убрать при сборке, а специфические ядерные объекты синхронизации можно опустить, если приложение в них не нуждается.
Хотя система VxWorks является конфигурируемой, т.е. отдельные модули можно загружать статически или динамически, нельзя сказать, что в ней используется подход, основанный на компонентах. Все модули построены над базовым ядром и спроектированы таким образом, что не могут использоваться в других средах.
Ядро VxWorks обладает следующими параметрами:
В VxWorks обеспечивается как основанный на POSIX, так и собственный механизмы планирования (wind scheduling). Оба варианта включают вытесняющее и циклическое планирование. Различие между ними состоит в том, что wind scheduling применяется на системном базисе, в то время как алгоритмы POSIX-планирования применяются на базисе процесс-за-процессом.
В VxWorks все задачи системы и приложений разделяют единственное адресное пространство, что чревато нарушением стабильности системы из-за неисправности какого-либо приложения. Необязательный компонент VxVMI дает возможность каждому процессу иметь свою собственную виртуальную память.
Чтобы достичь быстрой обработки внешних прерываний, программы обработки прерываний (ISRs - interrupt service routines) в VxWorks выполняются в специальном контексте вне контекстов потоков, что позволяет выиграть время, которое обычно тратится на переключение контекстов. Следует отметить, что C-функция, которую пользователь присоединяет к вектору прерывания, на самом деле не является фактической ISR. Прерывания не могут непосредственно обращаться к C-функциям. Адрес ISR запоминается в таблице векторов прерываний, которая вызывается аппаратно. ISR выполняет некую начальную обработку (сохранение регистров и подготовку стека), а затем вызывается C-функция, которая была присоединена пользователем.
VSPWorks [VSPWorks] - это весьма популярная и достаточно мощная ОС на основе VxWorks. VSPWorks спроектирована специально для систем, основанных на DSP. Она обеспечивает многозадачный режим с приоритетами и поддержку быстрых прерываний на процессорах DSP и ASIC. ОСРВ VSPWorks следует модели единственного виртуального процессора, что значительно упрощает распределение приложений в многопроцессорной системе, сохраняя при этом производительность жесткого реального времени. VSPWorks является модульной и масштабируемой.
ОСРВ VSPWorks обладает многослойной структурой, что служит хорошей основой для абстрагирования и переносимости. Центром системы служит сильно оптимизированное наноядро (nanokernel), которое способно управлять совокупностью процессов. Ниже наноядра находятся программы, обслуживающие прерывания, выше наноядра располагается микроядро, которое управляет многозадачным режимом с приоритетами C/C++ задач.
Управление прерываниями имеет два уровня. Нижний уровень (уровень 1) используется для обработки аппаратных прерываний. Во время обработки таких прерываний все остальные прерывания блокируются. Код, выполняющийся на этом уровне, написан на языке ассемблера, и ответственность за сохранение соответствующих регистров в стеке ложится на программиста. На этом уровне может быть обработано прерывание, которое требует малого времени для обработки. Если обработка прерывания является более сложной и требует большего времени, то прерывание обрабатывается на более высоком уровне (уровень 2), где разрешено прерывание прерывания и, таким образом, они могут быть вложенными. Переход на более высокий уровень прерываний происходит по системному вызову.
Процессы наноядра (уровень 3) пишутся на языке ассемблера и имеют сокращенный контекст (т.е. используют меньше регистров). Эти процессы могут быть загружены и разгружены с процессора очень быстро. Каждому процессу присваивается приоритет. Уровень 3 идеален для написания драйверов для интерфейсов аппаратуры низкого уровня.
Микроядро находится на уровне 4. Микроядро написано на языке C и имеет свыше 100 сервисов. Обработка задач на этом уровне ведется в режиме приоритетного прерывания, и планирование управляется приоритетами.
Сетевые средства. VxWorks поддерживает все сетевые средства, стандартные для UNIX: TCP/zero-copyTCP/UDP/ICMP/IP/ARP, SLIP/CSLIP/PPP, Sockets, telnet/rlogin/rpc/rsh, ftp/tftp/bootp, NFS (Network File System) (клиент и сервер). В сетевые средства для VxWorks входят также функции, необходимые при разработке устройств, подключаемых к Internet: IP multicasting уровня 0,1 или 2; long fat pipe; CIDR (Classless Inter-Domain Routing); DHCP (Dynamic Host Configuration Protocol) в конфигурациях server, client и relay agent; DNS client (Domain Naming System); SNTP (Simple Network Time Protocol). VxWorks поддерживает протоколы маршрутизации RIPv1/RIPv2 (Routing Information Protocol), а также OSPF (Open Shortest Path First) версии 2. Протокол RIP входит в стандартную поставку VxWorks, OSPF поставляется как дополнительный продукт. SNMP-агент для 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.
Графические пакеты и встроенный Интернет. Графические приложения для встраиваемых компьютеров с ОСРВ VxWorks могут быть разработаны как на языке С/С++, так и на языках Java и HTML. Для разработки графических пользовательских интерфейсов (GUI) на языке C++ поставляется программный продукт Zinc for VxWorks, для разработки на языке Java - PersonalJWorks и для разработки на языке HTML - HTMLWorks/eNavigator. Все три GUI для VxWorks используют один и тот же универсальный API к графической аппаратуре (графическому контроллеру, фрэйм-буферу и устройству ввода), который называется UGL (Universal Graphics Library). UGL - это набор графических 2D примитивов, драйверы популярных графических контроллеров и средства разработки собственных пользовательских графических драйверов. UGL входит в состав каждого GUI-продукта и поставляется в исходных текстах.
Zinc for VxWorks - это C++ API, предоставляющий широкий набор графических объектов с задаваемыми пользователем параметрами. Для разработки GUI используется Zinc Designer - WYSIWYG-редактор, который входит в комплект поставки. Графический интерфейс может быть разработан на языке Java с использованием стандартного инструментария pAWT (Abstract Windowing Toolkit), входящего в состав PersonalJWorks. Для разработки GUI используется любой инструментарий разработки Java-приложений. Пользовательский интерфейс может быть разработан с использованием графических возможностей языка HTML (фреймы, изображения, таблицы, формы) и динамических возможностей JavaScript. HTMLWorks - это интерпретатор HTML/JavaScript-страниц, которые могут находиться в постоянной памяти или быть загружены по сети. Для разработки GUI используется любой инструментарий web-дизайна. Если встраиваемый компьютер с HTML GUI должен уметь выполнять web-серфинг, то совместно с HTMLWorks может быть использован браузер для встраиваемых приложений eNavigator.
Средства построения мультипроцессорных систем. VxWorks поддерживает два вида мультипроцессинга: слабосвязанный - через распределенные очереди сообщений и сильносвязанный - через объекты в разделяемой памяти. Слабосвязанный мультипроцессинг через распределенные очереди сообщений реализован в библиотеке VxFusion, которая является отдельным продуктом. VxFusion применяется для обмена между процессорами, не имеющими общей памяти (например, между узлами сети). Сильносвязанный мультипроцессинг через объекты в разделяемой памяти реализован в библиотеке VxMP, которая также является отдельным продуктом. VxMP применяется для обмена между процессорами, имеющими общую область памяти (например, находящимися на одной шине).
Средства портирования. Все аппаратно-зависимые части VxWorks вынесены в отдельные модули для того, чтобы разработчик встраиваемой компьютерной системы мог сам портировать VxWorks на свой нестандартный целевой компьютер. Этот комплект конфигурационных и инициализационных модулей называется BSP (Board Support Package) и поставляется для стандартных компьютеров (VME-процессор, PC или Sparcstation) в исходных текстах. Разработчик нестандартного компьютера может взять за образец BSP наиболее близкого по архитектуре стандартного компьютера и портировать VxWorks на свой компьютер путем разработки собственного BSP с помощью BSP Developer's Kit.
Промежуточное ПО (middleware). Модель компонентных объектов COM (Component Object Model) и ее расширение для распределенных систем DCOM (Distributed COM) являются стандартными интерфейсами обмена между приложениями для Windows. VxDCOM - DCOM для операционной системы VxWorks - это первая реализация модели распределенных компонентных объектов для систем реального времени. Теперь нет необходимости в разработке специализированных драйверов ввода/вывода при интеграции нижнего и верхних уровней распределенной системы управления. VxDCOM поддерживает также OPC-интерфейсы (OLE for Process Control), что позволяет разрабатывать OPC-серверы для встраиваемых систем, работающих под управлением ОСРВ VxWorks.
Файловая система для флэш-памяти. Файловая система TrueFFS предназначена для эмуляции жесткого диска, работающего под управлением файловых систем VxWorks: DOS-FS и NFS (Network File System). TrueFFS удовлетворяет стандарту PCMCIA FTL (Flash Translation Level) и поддерживает PC-cards, MiniatureCards и микросхемы флэш-памяти Intel 28F0xx, AMD 29F0xx, и Samsung 29Vxx000.