19
Связующее ПО для систем на платформе QNX Сергей Зыль СВД Встраиваемые Системы www.kpda.ru

Связующее ПО для систем на платформе QNX

  • Upload
    ownah

  • View
    64

  • Download
    3

Embed Size (px)

DESCRIPTION

Связующее ПО для систем на платформе QNX. Сергей Зыль СВД Встраиваемые Системы www.kpda.ru. Как правило, системы на базе QNX – это сложные многоуровневые распределённые системы управления. Например, системы типа « Smart Energy » могут включать: Подсистему обеспечения энергосбережения - PowerPoint PPT Presentation

Citation preview

Page 1: Связующее ПО для систем на платформе  QNX

Связующее ПО для системна платформе QNX

Сергей Зыль

СВД Встраиваемые Системы

www.kpda.ru

Page 2: Связующее ПО для систем на платформе  QNX

2

Как правило, системы на базе QNX – это сложные многоуровневыераспределённые системы управления

Например, системы типа «Smart Energy» могут включать:- Подсистему обеспечения энергосбережения- Подсистему управления освещением- Подсистему охраны (доступ в помещения и видеонаблюдение)- Подсистему безопасности (утечки газа, возгорания)

Page 3: Связующее ПО для систем на платформе  QNX

3

Зачем нужно «связующее ПО»?

«Связующее ПО» «связывает» (а точнее «разделяет») прикладное ПО и системное ПО

Назначение middleware - сокращение трудоемкости разработки ПО за счет использования типовых компонентов для решения типовых задач

Задачи могут быть "типовыми" в пределах конкретной области (обеспечение распределённого взаимодействия в гетерогенной среде, интеграция мультимедийного контента из разных источников и т.д.)

ЧМИ (видео, аудио),Регистрация и учёт

Балансировка нагрузки, Безопасность, Резервирование

Управление процессами

Управление устройствами

Лог

ичес

кие

уров

ни

АС

на

баз

е Q

NX

Любой уровень может включать:- Унаследованные элементы- Разнородные ОС- Разные архитектуры ЦПУ- Базы данных и знаний- Взаимодействие с внешним миром- Разнородные источники данных- Разные типы вх. и вых. данных

Что предлагает платформа QNX?

Page 4: Связующее ПО для систем на платформе  QNX

4

Штатные механизмы QNX NeutrinoКонечно, ряд задач решается с помощью штатных механизмов Neutrino:

Распределённое взаимодействие на уровне ядра Распределённый доступ к файлам Распределённый запуск процессов Распределённый вызов методов («Родные» сообщения QNX) Распределённая сигнализация о событиях (Импульсы QNX) Публикация/подписка с сохранением данных (механизм PPS)

Поиск сервисов в распределённой сети Qnet пространства имён узлов Qnet служба глобальных имён (GNS)

Резервирование Редиректор запросов Перегрузка префиксов

Мониторинг состояния: QNX CPM (точки сохранения, восстановление сервисов и соединений)

Полная поддержка “обычных” технологий: POSIX API и утилиты Berkeley Socket API (TCP/IPv4, IPv6) GCC BSD pkgsrc

Page 5: Связующее ПО для систем на платформе  QNX

5

Middleware в системах на базе QNX

Обеспечение взаимодействиячеловек-машина:

- Визуальное отображение информации- Воспроизведение звука- Ввод информации «вручную»- Ввод информации голосом- Интеграция информационных потоков

Обеспечение взаимодействия машина-машина(в гетерогенной сети):

- Поиск удалённого сервиса- Идентификация/аутенфикация - Удалённый вызов процедур и методов- Удалённое распространение событий

Типовые задачи, решаемые middleware на платформе QNX:

Обычно, когда произносят слово «Middleware» вспоминается коммуникационная технология CORBA или её аналоги/конкуренты, например, Java RMI

Вообще, middleware – это любое инфраструктурное ПО, позволяющее повысить уровень абстракции разработки. Например, технология Adobe Flash.

Page 6: Связующее ПО для систем на платформе  QNX

6

Примеры типовых Middleware

CORBA – распределённые вычисления в гетерогенной среде независимо от языка программирования

Java – переносимость кода и распределённые вычисления

Adobe Flash – переносимость GUI

QNX используется в АС реального времени.Поэтому Middleware-технологии для QNX так же ориентированы на АС реального времени.

Page 7: Связующее ПО для систем на платформе  QNX

7

Real-Time CORBA

Назначение CORBA – позволить прикладному программисту вызывать методы объекта независимо от того, где находится сервер, в какой среде функционирует, на каком языке программирования написан.

Page 8: Связующее ПО для систем на платформе  QNX

8

Real-Time CORBA

Своевременность обработкираспределенного запроса

Граф транс-узлового взаимодействия

Проблемы своевременности выполнения распределённого (трансузлового) потока сходны с проблемами обычной многозадачной системы:- Приоритеты выполнения «сегментов»- Распределённая инверсия приоритетов

Page 9: Связующее ПО для систем на платформе  QNX

9

Real-Time CORBA

Спецификация Real-Time CORBA позволяет распространять различные атрибуты клиентских потоков на сервера

Page 10: Связующее ПО для систем на платформе  QNX

10

Причины популярности технологии Java Сокращение «Time-to-Market»

Язык высокого уровня

Богатые API (JFC, JDBC, …)

Надёжность кода Безопасность типов (type-safety)

Безопасность указателей (pointer-safety)

Автоматическая «уборка мусора» (Garbage Collector)

Удобство повторного использования и расширения кода (в том числе компонентное программирование)

Независимость от платформы

Мощные дополнительные инструменты и API: Code Coverage

Eclipse

JUnit

Data Flow Analysis

Page 11: Связующее ПО для систем на платформе  QNX

11

Real-Time Java Ограничения традиционных систем Java

Высокие требования к объёму ОЗУ

Низкая производительность среды исполнения

Паузы выполнения при работе GC

Плохой отклик пользовательского интерфейса

Неприемлемо для систем реального времени, особенно для критичных к функциональной безопасности

Защита от вытеснения «уборщиком мусора» (scoped, immortal) Шире диапазон приоритетов, строгое вытеснение Защита от инверсии приоритетов Выше точность часов и таймеров (ns) Доступ к физической памяти Обработчики асинхронных событий (сигналы, прерывания)

RTSJ – Real-Time Specification for Java:

Page 12: Связующее ПО для систем на платформе  QNX

12

Real-Time Java

Сравнение «уборщиков мусора» (GC)

Стандартный GC

GC в RTSJ(потоки реального времени)

GC реального времени (RTGC) – реализация AICAS JamaicaVM (премия BMW «Passion for Innovation»)

GC экономит время разработчиков: Не нужно явно освобождать память объектов

GC обеспечивает безопасность работы с памятью: Снижает опасность утечек памяти Не происходит удаления используемых объектов

Page 13: Связующее ПО для систем на платформе  QNX

13

Пример реализации: AICAS JamaicaVM Статический компилятор с профилированием

Повышение быстродействия Сокращение времени выполнения и пространства памяти

«Smart Linking» - в приложение включаются только нужные компоненты

Детерминированная «Уборка мусора» (RTGC) GC не прерывает задачи реального времени Нет пауз при выполнении приложения

classfiles

classfiles

classfiles

settings

profiling

data

Jamaica Builder

objectfile

classfiles

classfiles

JVMlibrary

stand-aloneapplication

Page 14: Связующее ПО для систем на платформе  QNX

14

Adobe Flash

Основные достоинства технологии:

Быстрота разработки и тестирования сложных графических интерфейсов благодаря мощным инструментам Adobe

Более высокая переносимость кода, чем в Java (нет зависимости от доступности отдельных API)

Использование векторной графики:

Трансформация (вращение, масштабирование и т.п.) без снижения качества

Добавление анимации не приводит к увеличению размера файла

Возможность использования разработанных для настольных систем приложений с минимальными модификациями

Page 15: Связующее ПО для систем на платформе  QNX

15

Adobe Flash

Особенности поддержкиAdobe Flash в QNX Neutrino:

- Поддержка многооконных приложений на основе менеджера композиции OpenKODE

- Ускоренная перерисовка на основе OpenGL ES

- Поддержка «родного» API через интерфейс QNX Action Script Extensions (ASE)

- Возможности удалённого доступа

Page 16: Связующее ПО для систем на платформе  QNX

16

Борьба со сложностью ПО –повышение уровня абстракции

Уровеньабстракции

Время

Assembler

mov al,02hclcint 0f2hjnc l1call __kererrl1mov al,03hclcint 0f2hjnc l1call __kererrl1

C

int i;while(1){ sem_wait(&Sem); sleep(1);}pthread_exit(NULL);

C++, Java

public boolean equals(Object o) { if (! (o instanceof Hello)) return false; else { return true; }}

UML/DSL

Page 17: Связующее ПО для систем на платформе  QNX

17

UML-профили в качестве DSL

Специфичные стереотипы UML-профиля HIP («HIApexBlackbord», «HIApexBuffer» и др.) обеспечивают отображение на UML-модель APEX-паттернов отказоустойчивой коммуникации (ARINC 653-2)

Реализация APEX-паттернов должна предоставляться фрэймворком

Эффект 1: Перемещение НОУ-ХАУ из программного кода в шаблоны и «картинки»

Эффект 2:Упрощение тестирования и сопровождения ПО

SPT, HIP, MITRE, AUTOSAR, …

Page 18: Связующее ПО для систем на платформе  QNX

18

Выводы

Системы на базе QNX, как правило, весьма сложны и часто интегрированы с другими системами

Middleware решает типовые проблемы для различных частей систем и разного класса задач

Middleware позволяет разрабатывать более сложное ПО с прежними людскими ресурсами

Middleware хорошо интегрируется с инструментами MDD (UML-профили ) для повышения уровня абстракции разработки

На платформе QNX помимо мощных штатных механизмов доступно различное ПО middleware, адаптированное для построения АС реального времени

Page 19: Связующее ПО для систем на платформе  QNX

Прошу задавать вопросы

Сергей Зыль

ООО «СВД Встраиваемые Системы»

Спасибо за внимание!

www.kpda.ruforum.kpda.ru