- •2. Ядра и операционные системы реального времени
- •2.1. Задачи, процессы, потоки
- •2.2. Основные свойства задач
- •2.3. Планирование задач
- •2.4. Синхронизация задач
- •2.5. Тестирование
- •2.6. Можно ли обойтись без ОС РВ?
- •3. Обзор некоторых операционных систем реального времени
- •3.1. Linux реального времени
- •3.2. Операционные системы реального времени и Windows
- •3.3. Операционная система QNX
- •3.4. Проект Neutrino
- •4.1. Организация промышленных систем
- •4.2. Аппаратная архитектура
- •4.3. Стандарты шин
- •4.4. Технологии VME и PCI
- •4.5. Мезонинные технологии
- •4.6. Полевые системы
- •4.7. Программное обеспечение промышленных систем
- •4.8. Управление производством
- •Часть 2. ПРОЕКТИРОВАНИЕ СРВ
- •5. UML проектирование систем реального времени
- •5.1. Объектно-ориентированные методы и UML
- •5.2. Метод и нотация
- •5.3. Системы и приложения реального времени
- •6. Обзор нотации UML
- •6.1. Диаграммы UML
- •6.2. Диаграммы прецедентов
- •6.3. Нотация UML для классов и объектов
- •6.4. Диаграммы классов
- •6.5. Диаграммы взаимодействия
- •6.6. Диаграммы состояний
- •6.7. Пакеты
- •6.8. Диаграммы параллельной кооперации
- •6.9. Диаграммы развертывания
- •6.10. Механизмы расширения UML
- •7.1. Среды для параллельной обработки
- •7.2. Поддержка исполнения в мультипрограммной и мультипроцессорной средах
- •7.3. Планирование задач
- •7.4. Вопросы ввода/вывода в операционной системе
- •7.6. Технология World Wide Web
- •7.7. Сервисы распределенных операционных систем
- •7.8. ПО промежуточного слоя
- •7.9. Стандарт CORBA
- •7.10. Другие компонентные технологии
- •7.11. Системы обработки транзакций
- •8. Разбиение на задачи
- •8.1. Вопросы разбиения на параллельные задачи
- •8.2. Категории критериев разбиения на задачи
- •8.3. Критерии выделения задач ввода/вывода
- •8.4. Критерии выделения внутренних задач
- •8.5. Критерии назначения приоритетов задачам
- •8.6. Критерии группировки задач
- •8.7. Пересмотр проекта путем инверсии задач
- •8.8. Разработка архитектуры задач
- •8.9. Коммуникации между задачами и синхронизация
- •8.10. Спецификация поведения задачи
- •9. Проектирование классов
- •9.1. Проектирование классов, скрывающих информацию
- •9.2. Проектирование операций классов
- •9.3. Классы абстрагирования данных
- •9.4. Классы интерфейса устройства
- •9.5. Классы, зависящие от состояния
- •9.6. Классы, скрывающие алгоритмы
- •9.7. Классы интерфейса пользователя
- •9.10. Внутренние программные классы
- •9.11. Применение наследования при проектировании
- •9.12. Примеры наследования
- •9.13. Спецификация интерфейса класса
- •10. Детальное проектирование ПО
- •10.1. Проектирование составных задач
- •10.2. Синхронизация доступа к классам
- •10.4. Логика упорядочения событий
- •11.1. Теория планирования в реальном времени
- •11.2. Развитие теории планирования в реальном времени
- •11.5. Пример анализа производительности с помощью анализа последовательности событий
- •11.6. Пример анализа производительности с применением теории планирования в реальном времени
- •11.8. Пересмотр проекта
- •11.9. Оценка и измерение параметров производительности
- •12. ЗАКЛЮЧЕНИЕ
- •СПИСОК ЛИТЕРАТУРЫ
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
137 |
Роль клиентской заглушки из RPC играет клиентский замести- тель (Client proxy) – рис.7.16. Заместитель предоставляет клиентско- му объекту тот же интерфейс, что и серверный объект, и скрывает от клиента все детали коммуникации. Соответственно серверный замес- титель выполняет функцию серверной заглушки, пряча детали ком- муникации от серверного объекта. Серверный заместитель вызывает метод объекта. Если серверного объекта не существует, заместитель создает его.
Разные серверные объекты могут предоставлять один и тот же интерфейс, а значит, и обслуживать данный запрос клиента. Сервер- ный объект, который будет обрабатывать запрос, выбирается во вре- мя выполнения.
7.9. Стандарт CORBA
CORBA (Common Object Request Broker Architecture – единая ар-
хитектура брокера объектных запросов) – это стандарт открытых сис- тем, разработанный группой Object Management Group (OMG), кото-
рый обеспечивает взаимодействие между объектами на гетерогенной платформе. Брокер объектных запросов (ORB) выполняет функции ПО промежуточного слоя, поддерживающего отношения вида кли- ент-сервер между распределенными объектами. Серверные объекты предоставляют сервисы, которые клиенты могут запрашивать с по- мощью ORB. В общем случае клиенты и серверы - это всего лишь ро- ли объектов. Таким образом, объект способен выступать в роли кли- ента в отношениях с одним объектом и в роли сервера – в отношени- ях с другим. С помощью ORB клиентский объект в состоянии вызы- вать операции серверного объекта, не зная, где тот находится, на ка- кой платформе (аппаратной или программной) исполняется, какие
коммуникационные протоколы нужны для связи с ним и на каком языке он написан.
7.9.1. Брокер объектных запросов. Клиент, имеющий ссылку на серверный объект, может вызывать любые сервисы (операции интер- фейса), поддерживаемые этим объектом, через посредство ORB. ORB обладает следующими достоинствами:
§прозрачностью местоположения. ORB определяет местопо- ложение объекта по ссылке на него;
www.pdffactory.com
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
138 |
§прозрачностью реализации. Клиент не должен знать, как реа- лизован серверный объект, на каком языке он написан, на ка- кой аппаратной и программной платформе исполняется;
§прозрачностью состояния выполнения объекта. Если сервер- ный объект неактивен, то ORB активизирует его перед дос- тавкой запроса;
§прозрачностью коммуникационного механизма. Клиент не знает, какой протокол будет использовать ORB.
7.9.2. Язык определения интерфейса в СОRВА. Интерфейс сер-
верного объекта описывается на языке определения интерфейсов (Interface Definition Language – IDL), не зависящем от конкретных язы-
ков программирования. Интерфейс определяется независимо от реа- лизации. Спецификации, записанные на IDL, затем переводятся на язык реализации. Реализация объекта кодируется сразу на целевом языке. Группа OMG разработала стандартные отображения IDL на различные языки программирования, в том числе С, C++, Ada 95 и Java. Компиляторы IDL генерируют клиентские заглушки и сервер- ные каркасы, аналогичные описанным выше клиентским и серверным заместителям. Клиентская заглушка создает запрос и передает его от имени клиента. Серверный каркас получает запрос и доставляет его объекту, реализация которого должна удовлетворять правилам CORBA. Функциональность, обеспечиваемая заглушками и каркасами в CORBA, похожа на заглушки, применяемые в RPC.
Программная заглушка выполняет маршалинг параметров при- мерно так же, как при вызовах удаленных процедур. Высокоуровне-
вые типы данных перед отправкой необходимо упаковать в такие структуры, которые можно передать по сети, например в поток бай- тов. Принимающий каркас должен распаковать входящее сообщение
ивызвать запрошенную операцию серверного объекта.
7.9.3.Статическое и динамическое связывание. В случае стати-
ческого вызова заглушки и каркасы заранее скомпонованы с ис- полняемыми файлами. Статические интерфейсы определены в IDL- описаниях, созданных разработчиком. Эти описания транслируются в код заглушек, каркасов и заголовочных файлов, как определено в правилах отображения на конкретный язык. Такой подход проиллю- стрирован на рис.7.17.
www.pdffactory.com
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
139 |
Большую гибкость обеспечивает динамическое связывание. В этом случае клиентский объект во время выполнения решает, с каким серверным объектом он будет общаться. Сервер регистрирует IDL- описания в репозитарии интерфейсов, который можно опрашивать во время выполнения.
Рис. 7.17. Архитектура CORBA
Клиент пользуется интерфейсом динамического вызова (см. рис, 7.17), который представляет собой обобщенную заглушку, не зави- сящую от IDL-описания интерфейса вызываемого объекта. Подобный подход позволяет клиенту обращаться к объекту во время выполне- ния, ничего не зная о его интерфейсе на стадии компиляции.
CORBA поддерживает также интерфейс динамического каркаса на стороне сервера, то есть механизм динамического связывания для серверов, которые должны обрабатывать входящие запросы на об- служивание от объектов, не имеющих скомпилированных из IDL- описаний каркасов. Это полезно для общения с такими внешними объектами, как шлюзы или браузеры.
7.9.4. Сервисы CORBA. Брокер объектных запросов позволяет клиенту прозрачно вызывать операцию серверного объекта, предос- тавляя службу имен. Когда создается объект CORBA, ему присваива- ется уникальная объектная ссылка. Получить ссылку можно с по- мощью просмотра каталога. Иными словами, служба имен CORBA
www.pdffactory.com
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
140 |
дает ссылку на поименованный объект, а клиент затем вызывает опе- рацию этого объекта. Служба имен включает такой сервис каталогов, который аналогичен телефонному каталогу «белые страницы».
Другой сервис, предоставляемый CORBA, – это трейдинг. Он позволяет получить ссылку на объект путем сопоставления характе- ристик известных объектов (например, типа обслуживания) с харак- теристиками, посланными клиентом. Сервис трейдинга, следователь- но, сводится к сервису каталогов, аналогичному телефонным «жел- тым страницам».
7.9.5. Интеграция унаследованных приложений в каркас распре-
деленных объектов. Многие унаследованные приложения достаточно сложно интегрировать в каркас, состоящий из распределенных объек- тов. Один из применяемых для этой цели методов состоит в написа- нии объектов-оберток (wrappers). Объект-обертка – это объект рас- пределенного приложения, который обрабатывает запросы клиентов к унаследованной программе. Обертки регистрируют свои сервисы в службе имен, поэтому в состоянии получать запросы от клиентов.
Большинство унаследованных приложений создавались как ав- тономные программы. В некоторых случаях унаследованный код до- пустимо модифицировать, чтобы объекты-обертки могли получить доступ к нему. Однако часто это неприемлемо, так как документации практически нет, а разработчики уже недоступны. Поэтому обертки обычно общаются с унаследованным кодом при помощи таких гру- бых механизмов, как файлы – последовательные или индексирован- ные. Обертывающий объект должен читать и модифицировать фай- лы, создаваемые унаследованным приложением. Если унаследован- ное приложение пользуется базой данных, то к ней легко обратиться с помощью оберток, скрывающих детали доступа. Например, в слу- чае реляционной базы данных обертка способна содержать предло- жения на языке SQL для доступа к базе. Возможен и такой вариант,
когда обертка имитирует ввод с клавиатуры или переадресует на себя вывод, направленный на экран или принтер.
7.10. Другие компонентные технологии
Помимо CORBA, существуют и другие распределенные техноло-
гии, например ActiveX и СОМ от компании Microsoft и JavaBeans и Jini от компании Sun.
www.pdffactory.com
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
141 |
7.10.1.Технология СОМ. DCOM – это предложенная Microsoft распределенная объектная технология, построенная на основе архи- тектуры СОМ (Component Object Model – компонентная модель объ- ектов). СОМ предоставляет каркас для взаимодействия приложений в среде Windows. DCOM позволяет клиенту общаться с компонентом, находящимся в удаленном узле, перехватывая вызовы клиента и пе- реадресуя их серверу. И СОМ, и CORBA включают язык IDL, но CORBA задумана как стандарт, тогда как СОМ – патентованная тех- нология, работающая только на платформе Windows.
Компоненты ActiveX – это исполняемые программы, которые со- гласуются со стандартом Microsoft СОМ и функционируют на плат- форме Windows. Их можно загрузить и выполнить внутри СОМ- совместимых контейнеров. Примером такого контейнера служит
Web-браузер Internet Explorer.
7.10.2.Технология JavaBeans. JavaBeans представляет собой компонентную технологию на базе языка Java, предназначенную для специализированных приложений. JavaBeans – это компоненты поль- зовательского интерфейса на стороне клиента, a Enterprise JavaBeans
–компоненты на стороне сервера. Bean-компонент, состоящий из на- бора классов и ресурсов.
Из bean-объектов удобно собирать приложения с помощью спе- циального инструментального средства. Во время сборки разрешает- ся наблюдать за поведением объекта (это называется интроспекцией) и адаптировать его для конкретных нужд. Bean-объекты могут гене- рировать или обрабатывать входящие события. Инструмент сборки способен определять, какие события генерирует и получает объект, а также связывать объекты-отправители с объектами-получателями. Адаптированные и связанные bean-объекты допустимо сохранить для последующего использования.
7.10.3.Технология Jini. Jini (Java Intelligent Network Infrastructure
–сетевая интеллектуальная инфраструктура Java) – это технология соединения для встроенных систем и сетевых приложений, цель ко- торых – упростить взаимодействие компьютеров и других устройств. Jini предназначена для сотовых телефонов, цифровых камер, телеви- зоров и видеомагнитофонов. Она использует технологию Java, а уст- ройства соединяются посредством Java RMI.
Jini предоставляет службу поиска, выступающую в роли брокера между сервис-провайдерами и клиентами. В состав данной техноло-
www.pdffactory.com