200 likes | 450 Views
Связующее ПО для систем на платформе QNX. Сергей Зыль СВД Встраиваемые Системы www.kpda.ru. Как правило, системы на базе QNX – это сложные многоуровневые распределённые системы управления. Например, системы типа « Smart Energy » могут включать: Подсистему обеспечения энергосбережения
E N D
Связующее ПО для системна платформе QNX Сергей Зыль СВД Встраиваемые Системы www.kpda.ru
Как правило, системы на базе QNX – это сложные многоуровневыераспределённые системы управления • Например, системы типа «Smart Energy» могут включать: • Подсистему обеспечения энергосбережения • Подсистему управления освещением • Подсистему охраны (доступ в помещения и видеонаблюдение) • Подсистему безопасности (утечки газа, возгорания)
Зачем нужно «связующее ПО»? ЧМИ (видео, аудио), Регистрация и учёт Логические уровни АС на базе QNX • Любой уровень может включать: • Унаследованные элементы • Разнородные ОС • Разные архитектуры ЦПУ • Базы данных и знаний • Взаимодействие с внешним миром • Разнородные источники данных • Разные типы вх. и вых. данных • «Связующее ПО» «связывает» (а точнее «разделяет») прикладное ПО и системное ПО • Назначение middleware - сокращение трудоемкости разработки ПО за счет использования типовых компонентов для решения типовых задач • Задачи могут быть "типовыми" в пределах конкретной области (обеспечение распределённого взаимодействия в гетерогенной среде, интеграция мультимедийного контента из разных источников и т.д.) Балансировка нагрузки, Безопасность, Резервирование Управление процессами Управление устройствами Что предлагает платформа QNX?
Штатные механизмы QNXNeutrino • Конечно, ряд задач решается с помощью штатных механизмов Neutrino: • Распределённое взаимодействие на уровне ядра • Распределённый доступ к файлам • Распределённый запуск процессов • Распределённый вызов методов («Родные» сообщения QNX) • Распределённая сигнализация о событиях (Импульсы QNX) • Публикация/подписка с сохранением данных (механизм PPS) • Поиск сервисов в распределённой сети Qnet • пространства имён узлов Qnet • служба глобальных имён (GNS) • Резервирование • Редиректор запросов • Перегрузка префиксов • Мониторинг состояния: • QNX CPM (точки сохранения, восстановление сервисов и соединений) • Полная поддержка “обычных” технологий: • POSIX API и утилиты • Berkeley Socket API (TCP/IPv4, IPv6) • GCC • BSD pkgsrc
Middleware в системах на базе QNX Обычно, когда произносят слово «Middleware»вспоминается коммуникационная технология CORBA или её аналоги/конкуренты, например, Java RMI Вообще, middleware – это любое инфраструктурное ПО, позволяющее повысить уровень абстракции разработки. Например, технология Adobe Flash. Типовые задачи, решаемые middleware на платформе QNX: • Обеспечение взаимодействия машина-машина • (в гетерогенной сети): • Поиск удалённого сервиса • Идентификация/аутенфикация • Удалённый вызов процедур и методов • Удалённое распространение событий • Обеспечение взаимодействия • человек-машина: • Визуальное отображение информации • Воспроизведение звука • Ввод информации «вручную» • Ввод информации голосом • Интеграция информационных потоков
Примеры типовых Middleware • CORBA – распределённые вычисления в гетерогенной среде независимо от языка программирования • Java – переносимость кода и распределённые вычисления • Adobe Flash – переносимость GUI QNX используется в АС реального времени. Поэтому Middleware-технологии для QNX так же ориентированы на АС реального времени.
Real-Time CORBA Назначение CORBA – позволить прикладному программисту вызывать методы объекта независимо от того, где находится сервер, в какой среде функционирует, на каком языке программирования написан.
Real-Time CORBA Граф транс-узлового взаимодействия • Проблемы своевременности выполнения распределённого (трансузлового) потока сходны с проблемами обычной многозадачной системы: • Приоритеты выполнения «сегментов» • Распределённая инверсия приоритетов Своевременность обработки распределенного запроса
Real-Time CORBA Спецификация Real-Time CORBA позволяет распространять различные атрибуты клиентских потоков на сервера
Причины популярности технологии Java • Сокращение «Time-to-Market» • Язык высокого уровня • Богатые API (JFC, JDBC, …) • Надёжность кода • Безопасность типов (type-safety) • Безопасность указателей (pointer-safety) • Автоматическая «уборка мусора» (Garbage Collector) • Удобство повторного использования и расширения кода (в том числе компонентное программирование) • Независимость от платформы • Мощные дополнительные инструменты и API: • Code Coverage • Eclipse • JUnit • Data Flow Analysis
Real-Time Java • Ограничения традиционных систем Java • Высокие требования к объёму ОЗУ • Низкая производительность среды исполнения • Паузы выполнения при работе GC • Плохой отклик пользовательского интерфейса • Неприемлемо для систем реального времени, особенно для критичных к функциональной безопасности RTSJ – Real-Time Specification for Java: • Защита от вытеснения «уборщиком мусора» (scoped, immortal) • Шире диапазон приоритетов, строгое вытеснение • Защита от инверсии приоритетов • Выше точность часов и таймеров (ns) • Доступ к физической памяти • Обработчики асинхронных событий (сигналы, прерывания)
Real-Time Java • GC экономит время разработчиков: • Не нужно явно освобождать память объектов • GC обеспечивает безопасность работы с памятью: • Снижает опасность утечек памяти • Не происходит удаления используемых объектов Сравнение «уборщиков мусора» (GC) Стандартный GC GC в RTSJ (потоки реального времени) GC реального времени(RTGC) – реализация AICAS JamaicaVM (премия BMW «Passion for Innovation»)
classfiles classfiles classfiles objectfile JVMlibrary classfiles classfiles settings Jamaica Builder stand-aloneapplication profilingdata Пример реализации: AICASJamaicaVM • Статический компилятор с профилированием • Повышение быстродействия • Сокращение времени выполнения и пространства памяти • «Smart Linking»- в приложение включаются только нужные компоненты • Детерминированная «Уборка мусора» (RTGC) • GC не прерывает задачи реального времени • Нет пауз при выполнении приложения
Adobe Flash • Основные достоинства технологии: • Быстрота разработки и тестирования сложных графических интерфейсов благодаря мощным инструментам Adobe • Более высокая переносимость кода, чем в Java (нет зависимости от доступности отдельных API) • Использование векторной графики: • Трансформация (вращение, масштабирование и т.п.) без снижения качества • Добавление анимации не приводит к увеличению размера файла • Возможность использования разработанных для настольных систем приложений с минимальными модификациями
Adobe Flash • Особенности поддержки • Adobe Flash в QNX Neutrino: • - Поддержка многооконных приложений на основе менеджера композиции OpenKODE • - Ускоренная перерисовка на основе OpenGL ES • Поддержка «родного» API через интерфейс QNX Action Script Extensions (ASE) • - Возможности удалённого доступа
public boolean equals(Object o) { if (! (o instanceof Hello)) return false; else { return true; } } int i; while(1) { sem_wait(&Sem); sleep(1); } pthread_exit(NULL); mov al,02h clc int 0f2h jnc l1 call __kererr l1 mov al,03h clc int 0f2h jnc l1 call __kererr l1 UML/DSL Assembler C C++, Java Борьба со сложностью ПО –повышение уровня абстракции Уровень абстракции Время
UML-профили в качестве DSL SPT, HIP, MITRE, AUTOSAR, … Эффект 1: Перемещение НОУ-ХАУ из программного кода в шаблоны и «картинки» Эффект 2: Упрощение тестирования и сопровождения ПО • Специфичные стереотипыUML-профиля HIP («HIApexBlackbord», «HIApexBuffer»и др.) обеспечивают отображение на UML-модель APEX-паттернов отказоустойчивой коммуникации (ARINC 653-2) • Реализация APEX-паттернов должна предоставляться фрэймворком
Выводы • Системы на базе QNX,как правило, весьма сложны и часто интегрированы с другими системами • Middleware решает типовые проблемы для различных частей систем и разного класса задач • Middleware позволяет разрабатывать более сложное ПО с прежними людскими ресурсами • Middleware хорошо интегрируется с инструментами MDD (UML-профили ) для повышения уровня абстракции разработки • На платформе QNX помимо мощных штатных механизмов доступно различное ПО middleware, адаптированное для построения АС реального времени
Спасибо за внимание! Прошу задавать вопросыСергей ЗыльООО «СВД Встраиваемые Системы» www.kpda.ru forum.kpda.ru