- •Расчетно-графическая работа (пояснительная записка)
- •Задание на выполнение расчётно-графической работы
- •Реферат
- •Раздел 1. Ос реального времени 10
- •Список сокращений и терминов
- •1.2.1 Общие сведения об операционной системе qnx
- •Введение
- •Раздел 1. Ос реального времени
- •1.1 Области применения ос в реальном времени
- •1.2 Операционная система реального времени qnx
- •1.2.2 Версии qnx
- •Роздел 2. Розработка алгоритмов для систем управления движением bigdog
- •2.1. Диаграмма последовательности
- •2.2. Алгоритм работы сервера
- •2.2.1. Алгоритм взаимодействия с клиентом
- •2.3. Алгоритм работы клиента
- •Раздел 3. Принципы реализации программы
- •3.1. Выбор языка и среды разработки
- •3.2. Сетевое взаимодействие
- •3.3. Порядок клиент-серверного взаимодействия
- •3.4. Легирования
- •Раздел 4. Эксперимент
- •4.1 Описание экспериментальной установки
- •4.2 Результаты эксперимента
- •Список используемых источников
1.2.2 Версии qnx
QNX 2.x - это ОС, выпущенная фирмой QSSL в середине 80-х, в настоящее время практически не применяется.
QNX 4.2x - наиболее популярная до последнего времени ОС, она же наиболее распространена в России. С её помощью построено очень много встраиваемых систем, систем SCADA, она очень успешно применяется в решениях задач автоматизации и управления, там где необходима высокая надёжность. Эта система была разработана специально для "mission critical appliances" – то есть для применения в критических ситуациях, там где на другие операционные системы нельзя рассчитывать.
Neutrino - это новое поколение систем реального времени, построенных на идеях и архитектуре QNX. Real time Platform (RtP) – свободно распространяемый вариант QNX Neutrino, который можно свободно использовать в не коммерческих целях. То есть её можно бесплатно использовать для тестирования, апробирования идей, разработки freeware и для персонального применения [2].
Neutrino изначально задумывалась как операционная система для глубоко встраиваемых систем, всё делалось c тем расчётом, чтобы она могла грузиться откуда годно (хоть из постоянного запоминающего устройства), должна работать на большом разнообразии компьютерных архитектур. Поэтому изменена система загрузки. Теперь вместо отдельного ядра c основными процессами и скрипта sysinit всё заделано в один загружаемый модуль. Причём система получилась настолько гибкой, что даже можно обойтись без менеджера процессов, если они не нужны, оставив только одно микроядро. В RtP реализована загрузка через diskboot, добавлена система депозитариев. Следует отметить революционную концепцию нано ядра, размером всего в 32 Кб.
Операционная система реального времени (ОСРВ) QNX Neutrino предлагает проверенную десятилетиями модульную программную платформу, которая обеспечивает высокий уровень надёжности, производительности и компактности. Она легко адаптируется к нестандартного оборудования и встраивается в устройства с ограниченными ресурсами - и при этом она проста в использовании. Используя QNX, вы сможете не только эффективно решать поставленные перед вами задачи, но и получите существенный выигрыш как по удобству и скорости разработки, так и по простоте обслуживания и сопровождения ваших целевых приложений [3].
Роздел 2. Розработка алгоритмов для систем управления движением bigdog
2.1. Диаграмма последовательности
После запуска сервера, он переходит в режим ожидания подключений клиентов. После подключения клиента, сервер создаёт новый поток, который проводит приём сообщений от клиента. После завершения процедуры информационного взаимодействия поток прекращает свою деятельность.
Рис.2 Диаграмма взаимодействия клиент - сервер
2.2. Алгоритм работы сервера
Работа алгоритма заключается в следующем:
Сначала создаются TCP−сокеты вызовом функции socket(). Потом происходит привязывание сокета к прослушиваемому порту вызовом функции bind(). Перед вызовом bind() нужно объявить структуру sockaddr_in, очистить её (при помощи memset()), затем sin_family (PF_INET или PF_INET6) и заполнить поля sin_port (прослушиваемый порт, указать в виде последовательности байтов).
Дальше производится подготовка сокета к прослушиванию в объект соединений при содействия вызова listen() и воспринимаются входящие соединения через вызов accept(). Это блокирует сокет до получения поступающего соединения, после чего отдаёт дескриптор сокета для принятого соединения. Начальный дескриптор остаётся прослушиваемым дескриптором, а accept() имеет возможность быть обусловлен вновь для данного сокета в любое время (пока он закрыт).
Соединение с удалённым хостом, которое может быть создано при помощи write() и read().Происходит приём сообщений.
Итоговое закрытие каждого открытого сокета, который больше не нужен, происходит при помощи close().
Рис.3. Блок - схема алгоритма работы приложения «сервер»
