М. Л. ПЛЕССЕР
Московский инженерно-физический институт (государственный университет)
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРОМЕЖУТОЧНОГО СЛОЯ ДЛЯ РАСПРЕДЕЛЕННЫХ СИСТЕМ РЕАЛЬНОГО ВРЕМЕНИ
Рассматривается программное обеспечение промежуточного слоя (middleware), разработанное для создания распределенных кроссплатформенных систем реального времени.
В настоящее время все большее распространение получают распределенные вычислительные системы: создаваемые на их основе решения отличаются высокой производительностью, гибкостью, масштабируемостью и отказоустойчивостью. Для того чтобы поддержать представление различных компьютеров и сетей в виде единого целого, наиболее удобным является подход, предусматривающий введение отдельного уровня программного обеспечения, обеспечивающего для вышележащих сервисов базовых функций для прозрачной взаимосвязи [1,2]. К сожалению, наиболее распространенные реализации middleware являются либо недостаточно переносимыми между различными ОС (COM), либо сложными в использовании и дорогостоящими эффективными реализациями (CORBA).
Для поддержки разработки распределенных кроссплатформенных систем реального времени была создана собственная реализация программного обеспечения промежуточного слоя (прикладного ядра), основанная на компонентно-ориентированной модели. Поддержка базовой компонентно-ориентированной модели с управлением жизненным циклом объектов и функциями динамического приведения типов составляет первый, базовый архитектурный слой реализации ядра. Отличительной особенностью применяемой компонентной модели является введения понятия схемы объекта, определяющей базовый набор типизированных параметров, необходимых для создания компонента. За счет использования механизма шаблонов языка C++ осуществляется строгий контроль типов этапа компиляции.
Второй архитектурный слой поддерживает работу с различными видами апартаментов [1,2]. В рамках данного слоя поддерживается маршалинг синхронных, асинхронных и отложенных синхронных вызовов, работа с персональными таймерами компонентов. Особенностью применяемого подхода является использование расширяемого набора каналов вызова — компонентов, реализующих транспорт сериализованных данных вызова между апартаментами. Для вызовов в пределах одного процесса таким каналом разделяемая память, для работы с удаленными апартаментами предусмотрены механизмы сетевого транспорта и транспорта с использованием пайпов. Отличительной особенностью реализации данного уровня является поддержка методики proxy/stub без явного формирования кода для заглушек и выделенных определений экспортируемых интерфейсов, что позволяет вести разработку практически в парадигме обычного объектно-ориентированного программирования на C++.
Третий уровень представлен различными системными службами. Наиболее значимыми из них являются служба времени и служба внешних связей.
Служба времени используется для обеспечения синхронизации логического времени между различными узлами в сети. Реализация этого сервиса основана на использовании комбинации алгоритмов Кристиана и Беркли для выделенного сервера времени. При этом модель активного опроса используется при старте или перезапуске сервера времени для определения текущего максимума логического времени в кластере, в стационарном состоянии системы применяется сервер времени пассивен.
Служба внешних связей предназначена для публикации информации о собственном процессе (точке) в распределенной системе, сборе информации об опубликованных точках и установлении каналов связи с внешними апартаментами, содержащих компоненты, используемые в рамках текущей точки. Для публикации используется механизм широковещательной сетевой передачи.
Использование разработанного программного обеспечения промежуточного слоя позволило создать высокопроизводительную информационную систему для анализа потоков видеоинформации в реальном времени.
Список литературы
1. Ван Распределенные системы. Принципы и парадигмы. – СПб.: Питер, 2003 – 877 с.
2. Конструирование распределенных объектов. Методы и средства программирования интероперабельных объектов в архитектурах OMG/CORBA, Microsoft/COM и Java/RMI. : Пер. с англ. – М.: Мир, 2002 – 510 с.


