Слайд 3
Чем QNX отличается от других ОС?
Windows CE, Palm
OS
Windows NT/2000/XP , UNIX, Linux
Embedded Linux
AIX, Windows NT/2000/XP с
расширениями реального времени
VxWorks,
pSOS, OS-9
HP-RT
Слайд 4
QNX как ОС жесткого реального времени
Слайд 5
Микроядерная архитектура
Исполнямый модуль
реального времени
(напр. VxWorks)
Монолитное ядро
(напр. Linux)
Микроядро
(напр. QNX
Neutrino)
Слайд 6
Микроядерная архитектура
Исполнямый модуль
реального времени
Защиты памяти нет
Приложения, драйверы
и протоколы "живут" в пространстве ядра
Монолитное ядро
(NT / Unix
/ и т.п.)
MMU, частичная защита
Защищены только
приложения
Микроядро
(QNX Neutrino)
MMU, полная защита
Защищены приложения, драйверы
и протоколы
Общий отказ системы
?
?
?
?
Можно
восстановить
?
?
Общий отказ системы
Можно
восстановить
Можно
восстановить
Слайд 7
Межзадачное взаимодействие (IPC)
Приложение
Задачи общаются посредством сообщений
… и другие
вызовы POSIX
realtime signals
pipes and POSIX mqueues
mutexs, condvars, semaphores
barriers, sleepon
reader/writer
locks
Служба имен
CPM
Администратор
процессов
Управление
питанием
Протоколы
Хранение
данных
Приложение
Микроядро
Шина обмена сообщениями
Использование сообщений органично "развязывает" задачи
Над сообщениями надстроены вызовы POSIX
fd = open(“/dev/tcpip”, ,,,)
read, write, stat, devctl, …
close
Слайд 8
Прозрачные распределенные вычисления
Приложения/серверы могут быть распределенными без какого-либо
специального кода
Очереди сообщений
Файловые системы
Сервисы
Базы
данных
…
Слайд 9
CPM: восстановление после сбоев
Основа системы высокой готовности –
Монитор Ключевых Процессов (CPM). Выполняет мониторинг выбранных компонентов и
обеспечивает восстановление после сбоев
Процесс-охранник дублирует CPM
Клиентская библиотека позволяет компонентам незамедлительно и прозрачно восстанавливать все соединения
При обнаружении факта сбоя выполняется группа правил, определяющая способ восстановления
освободить ресурсы
перезапустить процесс
…и т.п.
Слайд 10
Critical Process Monitor
Microkernel
1. Сбой драйвера из-за некорректного обращения
с памятью
2. Ядро уведомляет CPM об ошибке
3. Сохраняется отладочная
информация о процессе (стандартный core файл)
4. Драйвер выгружается и возвращает ресурсы; уничтожается IPC канал
5. CPM перезапускает новый драйвер
6. Каналы IPC драйвера восстанавливаются клиентской библиотекой CPM
7. Драйвер запрашивает информацию у CPM о своем состоянии в последней контрольной точке и сервис восстанавливается
Shared Memory State Information
Слайд 11
QNX как встраиваемая и масштабируемая ОС
Компактность и неприхотливость
умещается
в 2Мб ОЗУ и 2Мб флэш-памяти
не требует мощного
процессора
Модульная структура
гибко масштабируется
сохраняет ключевые свойства даже в минимальных конфигурациях
Простота адаптации к оборудованию
изящная открытая архитектура драйверов
множество примеров в исходных текстах
Слайд 12
QNX как платформенная ОС: поддержка POSIX
POSIX.1 (IEEE
1003.1) – базовый API операционных систем
POSIX.1a (IEEE 1003.1a)
– некоторые расширения API
POSIX.2 (IEEE 1003.2) – набор утилит и командных
интерпретаторов
POSIX.4 (IEEE 1003.1b) – расширения для поддержки реального времени
POSIX.4a (IEEE 1003.1c) – интерфейсы потоков,
выполняющихся внутри POSIX-процессов
POSIX.1b (IEEE 1003.1d), IEEE 1003.1j – дополнительные
расширения реального времени
POSIX.12 (IEEE 1003.1g) – независимый от протокола
интерфейс сокетов
Слайд 13
QNX как платформенная ОС: «а что под нее
есть?»
Слайд 14
QNX и целевая аппаратура
Целевые процессоры
QNX поддерживает x86, PowerPC,
MIPS, SH-4, ARM/StrongARM/Xscale и их производные
Пакеты поддержки процессорных плат
(BSP)
BSP в исходных текстах для QNX Momentics
BSP от производителей оборудования
Стартовые комплекты
содержат все необходимое, чтобы сразу приступить к делу
Слайд 15
Adaptive Partitioning
Что такое Адаптивная Декомпозиция?
Новый продукт QNX, расширяющий
ОСРВ QNX Neutrino
Позволяет разработчикам создавать безопасные разделы или «партиции»
из множества приложения или потоков
Разделам гарантируется определенная часть ресурсов CPU на основании простых в использовании бюджетов
Почему Адаптивная?
Запатентованная технология распределит все ресурсы CPU по разделам исходя из их потребностей – ресурсы CPU используются максимально эффективно
Обеспечивает максимальную производительность благодаря рациональному использованию ресурсов процессора, особенно в пиковых ситуациях
Простота использования
Не требуются изменения при проектировании
Та ж модель программирования POSIX, знакомый дизайн, техники программирования и отладки
Нет требуются изменения в коде для использования адаптивной декомпозиции
Слайд 16
Зачем нужна Adaptive Partitioning?
Основанное на приоритетах вытесняющее планирование
может гарантировать выполнение приоритетных задач в системах реального времени
Как
только задача готова к выполнению, она сразу же получает ресурсы процессора
С усложнением системы, множество задач борются за ресурсы CPU и становится сложно масштабировать схему приоритетов задач
Планирование на основе приоритетов не гарантирует то, что задача будет выполнена в случае, если готова к выполнению более приоритетная задача
Без гарантий времени CPU, низкоприоритетные задачи будут находится в состоянии дефицита процессорного времени
Это может привести к деградации и даже к общему сбою системы
Адаптивная декомпозиция гарантирует минимальное время CPU партициям для обеспечения корректного функционирования системы в периоды сильной загрузки CPU
Слайд 17
Максимизация производительности
File System
Networking
Core Application
Core
Application
QNX Neutrino
Microkernel
Add-On
Add-On
Device Drivers
Core
Application
CPU Utilization
CPU guarantees
for partitions at full
system load
Dynamic allocation of CPU cycles
when not fully loaded
No idle time
Idle time available
Partitions Enforced
Free time – use idle cycles
20%
Untrusted
Partition
Слайд 18
Безопасность
Почти все встраиваемые устройства подключены к сети
Ненадежные сетевые
интерфейсы и угрозы
Недоверенное add-on программное обеспечение
Если превентивные меры не
включены в проект, доступность и безопасность устройств может быть скомпрометирована
Возможны атаки отказа в обслуживании (DOS), что отнимет у приложений ресурсы процессора
Нет необходимости проверять недоверенные приложения на предмет возможных атак
Распределенная DOS атака может загрузить систему обработкой сетевых событий
File System
Networking
Core Application
Core
Application
Add-On
Add-On
Device Drivers
Core
Application
Networking Stack hogging CPU time
Rogue add-on stealing CPU time
Слайд 19
Безопасность
Создайте разделы для защиты критичных системных ресурсов
Гарантия ресурсов
CPU для базовых функций
Наследование партиций гарантирует время CPU всем
сервисам ОС (драйвера, файловые системы, сетевая система)
Защита основные приложений от угроз
Минимизация влияние вредоносного ПО
Защита от DOS атак
File System
Networking
Stack
QNX Neutrino
micro-kernel
Add-On
Add-On
Device Drivers
Remote
Monitoring
20%
5%
50%
25%
Network Attacked
Denial of Service Attack Contained
Adaptive Partitioning
CPU Time Guarantees
Rogue add-on
thwarted
Слайд 20
QNX Neutrino Multi-Core TDK
QNX Neutrino Multi-core Technology Development
Kit единственная в отрасли полнофункциональная платформа для нового поколения
multi-core кристаллов
При помощи QNX Neutrino Multi-Core Technology Development Kit вы сможете:
Быстро перенести приложения для однопроцессорной архитектуры на любую многопроцессорную архитектуру, значительно сократив при этом время выхода на рынок ваших изделий
Быстро разработать надежные, высокопроизводительные продукты для последнего поколения multi-core процессоров
Сразу же создавать проекты с возможностью их дальнейшего расширения с dual-core на multi-core кристаллы
Слайд 21
Многопроцессорная модель
2 ядра, 2 ОС
Одна и та же
или разные ОС
QNX, Linux, VxWorks, OSE, Integrity
Asymmetric
Symmetric
2 ядра, одна
ОС
QNX, Linux
Single OS Instance
Слайд 22
Asymmetric
Asymmetric Model – «ЗА»:
Единственный возможный вариант запускать различные
ОС
CPU может быть назначен на обработку какой-либо задачи
Единственный вариант
для задач, которые нельзя распараллелить
Asymmetric Model – «ПРОТИВ»:
Разработчикам необходимо реализовывать распределение и арбитраж ресурсов
Никакая из ОС не управляет всеми ресурсами – память, ввод/вывод, прерывания общие
Синхронизация между ядрами реализуется сообщениями программного уровня – влияние на производительность
Добавление новых ядер может потребовать существенного изменения проекта
Слайд 23
Symmetric
Symmetric Model – «ЗА»:
Хорошо масштабируется. Безшовная поддержка многоядерности
без модификации кода
Одна ОС владеет и управляет всеми ресурсами,
их совместным использованием и арбитражем
Динамическая балансировка контролируется механизмом планированием потоков ОС
Высокая производительность взаимодействия ядер и потоков с использованием примитивов POSIX
Сбор статистики и информации на уровне всей системы с последующей оптимизацией производительности, отладкой и т.д.
Symmetric Model – «ПРОТИВ»:
Невозможность специально выделить определенный процессор задаче из-за динамической балансировки
Приложения с плохой синхронизацией потоков могут некорректно работать в многопроцессорной системе
CPU
CPU
System
Interconnect
Cache
Cache
I/O
I/O
Memory
Controller
I/O
Memory
OS
Applications
Слайд 24
QNX Bound Multiprocessing
Лучшее из обоих моделей
ОС работает в
симметричном режиме с возможностью «привязать» приложения к конкретному ядру
Одна
ОС имеет полный контроль
Ресурсы распределятся ОС, что облегчает проектирование
Сбора информации и статистики на уровне всей системы для оптимизации производительности и отладки
Высокая производительности
Синхронизация приложения между ядрами с использованием примитивов POSIX
Высокая скорость обмена сообщениями сообщениями в пределах одного ядра
Легко расширяется для варианта с более чем двумя ядрами
Слайд 25
QNX Bound Multiprocessing
Лучшее из обоих моделей
Простота перехода на
multi-core
Обычное приложение будет работать в multi-core варианте без каких-либо
модификаций
Нет необходимости проверять или переделывать существующий код для обработки вопросов параллельности
Приложения могут работать как полностью симметричном режиме так и в bound режиме на одной системе
Контроль разработчиков над приложениями
Разработчик имеет полный контроль над тем, на каком ядре будет исполняться тот или иной поток или приложение
Можно привязать к определенному ядру на уровне дизайна
Можно на программном уровне переводить любое приложение или поток с одного ядра на другое без остановки приложения
Динамическая балансировка нагрузки без перезапуска приожения
Слайд 26
QNX Bound Multiprocessing
CPU
CPU
System
Interconnect
Cache
Cache
I/O
I/O
Memory
Controller
I/O
Memory
OS
A2
A1
A5
A3
A4
Лучшее из обоих моделей
Bound Multiprocessing собирает
в себе лучшее из симметричной и ассиметричной моделей
Поддерживает существующие
и оптимизированные для multi-core приложения
Разработчик имеет полный контроль над приложениями
Балансировка нагрзки
Как автоматическая на уровне ОС, так и настраиваемая разработчиком
Инструментарий для оптимизации балансировки нагрузки
Высокая производительность
Обмен сообщениями и синхронизация потоков на уровне ядра ОС
Слайд 27
Комплект разработчика QNX Momentics
Слайд 28
QNX - это мощная инструментальная платформа
Написание кода
Трансляция
Отладка
Оптимизация
Система
управления
версиями
Менеджер
исходных
текстов
Текстовый
редактор
Визуальный
редактор
Генератор
кода
Компилятор
Интерпретатор
Компоновщик
Виртуальная
машина
Отладчик
Средства
диагностики
Профайлер
Средства
верификации
Цикл разработки
Слайд 29
Вкратце о QN X Momentics
Плагины
"третьих" сторон
ИнструментыIDE
Другие
инструменты
Слайд 30
Плагины Momentics
Анализатор ОЗУ
Обнаружение двойного освобождения, использование нераспределенных блоков,
переполнения и утечки памяти
Уничтожение/блокирование/отладка/
игнорирование в случае ошибки
Системный профайлер
Программный "логический
анализатор"
Анализ событий, полученных от диагностической версии ядра
Построитель встраиваемых конфигураций
Определение зависимости модулей
Сокращение размеров библиотек
Photon Application Builder
Quickly create Photon apps
Drag and drop widgets
Разработчик кода
C, C++, Java
Удобные "мастера"
Подсветка синтаксиса, шаблоны кода
Символьный отладчик
Параллельная отладка нескольких приложений на C, C++, Java
Монитор целевых систем
Детальная информация о процессах и потоках
Профайлер приложений
Статистическое прфилирование
Подсчет вызовов и отслеживание пар вызовов с графическим представлением
Поддерживает разделяемые библиотеки
Слайд 31
Компилятор GCC v3.3.1
QNX поддерживает оптимизированный компилятор GCC v3.3.1,
обеспечивая совместимость с последними разработками сообщества GNU
Двойная реализация дает
разработчикам дополнительную возможность выбора
2.95.3 (по умолчанию): обратная совместимость (в т.ч. C++)
3.3.1: все преимущества новых функций
Совместимость с промышленными стандартами
Поддержка стандарта C99 (препроцессирование, проверка формата)
Поддержка стандарта ABI (Application Binary Interface) для C++
Улучшенные механизмы генерации кода
Улучшенные внутренние механизмы правления памятью
Оптимизация на основе профилей
Улучшенная производительность препроцессора
В среднем на 6-8% быстрее чем у v.2.95.3
Оптимизация для процессоров: PowerPC, ARM, SH4, x86, Pentium
Слайд 32
QNX IDE: разработчик кода C/C++
Список идентифика-торов позволяет перейти
к любой точке в исходном тексте
Щелкните два раза, чтобы
построить проект для любой платформы
Наведите указатель мыши на функцию, чтобы посмотреть ее аргументы и нужные заголовки, или на имя переменной, чтобы увидеть ее тип
Закладки и задачи
Задание точек останова перед компиляцией
Идентификация ошибок и предупреждений компилятора с первого взгляда
Идентификация ключевых слов, синтаксиса и парных скобок с первого взгляда
Отслеживание всех ошибок и задач из единого списка
Слайд 33
QNX IDE: символьный отладчик + анализатор ОЗУ
Перейдите к
любой точке исходного текста
Наведите указатель мыши
на имя переменной,
чтобы увидеть ее значение
Редактируйте исходный текст прямо из отладчика
Щелкните здесь, чтобы посмотреть точки останова, переменные, память, регистры,
и т.п.
Щелкните два раза, чтобы задать точку останова
Отслеживайте каждый поток независимо, или наблюдайте передачу управления между потоками
Используйте панель инструментов, чтобы запустить/остановить процесс или задать точку останова
Слайд 34
QNX IDE: монитор целевых систем
Просмотр окружения для каждого
процесса
Использо-вание процессора и "кучи" процессами
Просмотр отношений блокирования
Сортировка и анализ
потоков по различным атрибутам
Использо-вание памяти конкретным процессом
Системная информация и использование памяти
Слайд 35
QNX IDE: удобный профилировщик кода
Сортировка результатов по общему
времени, процентной доле от общего времени, числу вызовов и
т.п.
Определение строк кода, потребляющих наибольшее количество процессорноговремени
Дерево вызовов помогает сразу же оценить динамическую структуру выполнения приложений
Определение наиболее загруженных потоков
Слайд 36
QNX IDE: анализатор ОЗУ
Просмотр динамики изменений в использовании
памяти
Отслежива-ние операций распределе-ния памяти
Просмотр объема свободной и исполь-зуемой памяти
– как в общем, так и для конкретных диапазонов
Локализация переполнения буферов и запуск отладчика
Слайд 37
QNX IDE: анализатор покрытия кода
Определяет используемые ветви кода
Указывает
разработчикам, каким участкам кода уделять внимание для отладки и
анализа производительности
Упрощает контроль качества, оптимизацию, исправление ошибок и обслуживание
Методология контроля качества в военных, автомобильных и медицинских приложениях
Инструмент оптимизации в сетевых приложениях
Удобно для подразделений обслуживания и исправления ошибок, не участвовавших в разработке кода
Интегрированный поддерживаемый компонент, в отличие от компонентов "третьих" сторон, дает клиентам уверенность
QSS – единственный производитель, в IDE которого интегрирован инструментарий анализа покрытия кода
Слайд 38
QNX IDE: анализатор покрытия кода
Просмотр сессии: "живые" результаты
бинарного покрытия, вплоть до отдельных функций
Отладка:
просмотр запущенных прцессов
Свойства сессии:
быстрая оценка
Интегрирован в IDE
Интегрирован с редактором кода: графическое представление покрытия непосредственно в исходном тексте
Слайд 39
QNX IDE: отчет о покрытии кода
Генератор отчетов:
Отчеты
в формате HTML для дальнейшего анализа, по каждой сессии
Статистика для контроля качества
Слайд 40
Диагностическая версия ядра
Microkernel
Диагностическая версия ядра ведет журнал событий,
фильтрует их и сохраняет в буферах, содержимое которых можно
сохранять и анализировать
Смена
состояний
Прерывания
Создание
процесса/потока
Системные
вызовы
Системный профайлер
События
Фильтры "On/Off"
Статические фильтры событий
Пользовательские фильтры
E1
E2
E3
E4
E5
E6
Буферы событий
Сбор данных
Файл
Сеть
Слайд 41
QNX IDE: системный профайлер
Новое окно статистики
Табличное представление
Статистические выборки
Активность владельцев событий
Всплывающие подсказки
Дополнительные сведения (процессор,
PID)
Текстовые пояснения
Улучшенный интерфейс упрощает навигацию
Более прозрачен
Меньше элементов
Поддержка разбиения окон и прокрутки
А также…
Фильтры пост-обработки переработаны с учетом расширяемости
Изменение временного масштаба, выбор нужных процессов, создание нестандартных представлений
Слайд 42
Системный профайлер:
представление "Активность CPU"
Разбиение активности CPU по
элементам трассировки
% активности CPU от общего времени
Слайд 43
QNX IDE: построитель встраиваемых конфигураций
Дерево
файлов
"Мастер"
построения
Слайд 44
Поддержка русского языка в QNX
SWD Cyrillic Pack для
QNX6 –
полная русификация,
включая текстовые консоли
Слайд 45
QNX помогает экономить
QNX как средство сокращения срока разработки
и времени выведения на рынок (TTM) нового продукта
QNX и
сокращение суммарной стоимости владения (TCO)
TCO = Total Cost of Ownership, "суммарная стоимость владения"
TTM = Time-To-Market, "время выхода на рынок"
Слайд 46
Жизненный цикл продукта
Этап презентации
Этап роста
Этап зрелости
Этап спада
Время
Объем
продаж
Этап разработки
Чем
короче,
тем лучше
Чем длиннее,
тем лучше
Слайд 47
Как ОС может сократить TTM?
Разработка
оборудования
Разработка
ПО
Интеграция
АО и ПО
Освоение
инструментария
Разработка
оборудования
Разработка
ПО
Интеграция
АО и
ПО
Освоение
инструментария
!
Инструментарий
Методология
Сервисы
Инструментарий
Методология
Встраиваемость
Сервисы
Распараллеливание
Макетные платы
Сервисы
Инструментарий
Методология
Переносимый код
Готовые решения
Распараллеливание
Сервисы
Выигрыш!
Разработка
оборудования
Разработка
ПО
Интеграция
АО и ПО
Слайд 48
QNX как средство сокращения TTM
Слайд 49
Из чего складывается TCO
Стоимость инструментария
Стоимость обучения
Ресурсы на разработку
(время, персонал, рабочие места, поддержка, консалтинг и т.п.)
Стоимость комплектующих
и сборки
Стоимость сопровождения
Цена продукта
Стоимость внедрения (монтаж, пусконаладка, обучение персонала)
Стоимость отказов (потери на простоях, ликвидация последствий и т.п.)
Стоимость обслуживания (поддержка, профилактика, ремонт, модернизация)
Слайд 50
QNX как средство сокращения TCO
Слайд 51
Небольшое резюме
Исследования/
разработка
Внедрение/
поддержка
Защита
памяти
SMP
Модульность
Распределенные
вычисления
POSIX-
совместимость
Не надо
"пересобирать" ядро
Ранняя диагностика
ошибок
Динамические
апгрейды
Архитекторы
Разработчики
Тестеры
Контроль качества
Сервисные инженеры
Инженеры поддержки
Генеральный директор / Владелец продукта
Тестирование/
интеграция