E1Distributed operating system project
ГлавнаяАрхитектура Е1ДокументыКоманда
Rus
Eng
Арх...Распределенный объект
Архитектура E1
Концепциии E1
Распределенный объект
Обзор архитектуры
Домены защиты
Междоменные вызовы
Потоки
Компонентные сервисы
Репликация
Разработка ПО
Архитектура распределенного реплицированного объекта

Распределенный объект является основной абстракцией Е1. Все сервисы, предоставляемые ОС, а также прикладное ПО строятся из распределенных объектов.

Все объекты в Е1 находятся в едином виртуальном 64-битном адресном пространстве >>. Каждый объект предоставляет один или несколько интерфейсов, состоящих из набора методов. Каждый интерфейс распределенного объекта доступен по своему уникальному 64-битному адресу. Любой объект, владеющий этим адресом, может вызывать методы данного интерфейса из любого узла сети. Все интерфейсы в Е1 содержат стандартный метод навигации, позволяющий получить указатель на любой другой интерфейс того же распределенного объекта.

Объекты в Е1 могут быть физически распределенными, т.е. хранить частичную или полную копию состояния в нескольких узлах. Часть состояния объекта, хранящаяся в узле вычислительной системы, называется репликой распределенного объекта. Распространение состояния объекта между репликами и синхронизация реплик называется репликацией объекта.

Архитектура распределенного объекта Е1 направлена на разделение семантики объекта и стратегии репликации. Разработчик объекта реализует только его семантику, т.е. функциональность в локальном, нереплицированном, случае, а алгоритм репликации разрабатывается отдельной стороной - поставщиком стратегии репликации. При этом стратегия репликации может быть универсальной, т.е. применяться для различных классов объектов. В то же время, для объектов одного класса могут применяться различные стратегии репликации.

Следуя данной цели, авторы предлагают архитектуру распределенного объекта, в которой семантика объекта и стратегия репликации реализуются различными структурными элементами. Распределенный объект представляет собой набор взаимодействующих локальных объектов. Локальный объект ограничен одним узлом распределенного вычислительного комплекса. Семантика распределенного объекта и его стратегия репликации реализуются различными локальными объектами, размещаемыми в узлах, в которых существуют реплики распределенного объекта. Отметим, что подобная архитектура распределенного объекта имплементирована в системе объектно-ориентированного промежуточного ПО Globe [50].

Структура локального объекта подобна структуре объекта языка С++ [52]. Он состоит из части фиксированной длины, содержащей поля данных и указатели на интерфейсы (таблицы методов), и структур данных, динамически выделяемых объектом в куче или стеке. В терминах С++, интерфейсы локального объекта представляют собой чисто виртуальные базовые классы, от которых пронаследован объект. Заметим, что аналогичным образом абстракция интерфейса реализована в компонентной модели COM[33].

Архитектура распределенного объекта показана на рисунке.

Распределенный объект (а)
(a)

Распределенный объект (b)
(b)

Архитектура распределенного объекта. a. Распределенный объект с единственной репликой; b. Распределенный объект с несколькими репликами

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

Во время создания ссылки на распределенный объект (>>) из узла, в котором отсутствует реплика данного объекта, в этом узле создается новая реплика. Структура распределенного объекта с несколькими репликами показана на рисунке b. В каждый узел, в котором представлен распределенный объект, помещается экземпляр объекта семантики. Во всех узлах объекты семантики данного распределенного объекта располагаются по одному и тому же виртуальному адресу, что обеспечивает глобальную доступность интерфейсов распределенного объекта по их адресам в глобальном 64-битном адресном пространстве. Для поддержания целостности распределенного объекта, объекты семантики в каждом узле дополняются локальными объектами репликации, реализующими протокол репликации распределенного объекта.

Для этого объект репликации подменяет реализации интерфейсов объекта семантики собственными реализациями, что позволяет ему обрабатывать вызовы методов распределенного объекта. При обработке вызова объект репликации может обращаться к объекту семантики для выполнения необходимых операций над локальным состоянием объекта, а также взаимодействовать с удаленными объектами репликации для синхронизации реплик и удаленного выполнения операций. Подмена интерфейсов прозрачна для других объектов и может мыслиться как агрегирование объектом репликации объекта семантики. Такая архитектура позволяет избежать накладных расходов, связанных с поддержкой объекта репликации, для объектов, которые представлены только в одном узле, т.е. фактически не являются распределенными. Если впоследствии у распределенного объекта снова остается одна реплика, объект репликации может быть уничтожен.

Описанная архитектура распределенного объекта обладает двумя важными свойствами. Во-первых, она эффективно разделяет семантику объекта и стратегию репликации. Во-вторых, она не накладывет каких-либо существенных ограничений на используемые алгоритмы репликации. Для каждого объекта может применяться стратегия репликации, обеспечивающая при заданных характеристиках надежности максимально эффективный доступ к объекту с учетом его семантики.

Объекты классов

Классы локальных объектов в E1 описываются объектами специального типа объектами классов. Инкапсуляция свойств класса в объекте позволяет реализовать динамическую загрузку классов. Для этой же цели служат фабрики классов в COM [33] и Corba [37].

Объект класса хранит имплементации интерфейсов и предоставляет методы для создания и уничтожения объектов-экземпляров данного класса.

Каждый класс описывается уникальным идентификатором. Классы хранятся в специальном хранилище - репозитории классов. Для создания экземпляра класса в памяти необходимо предварительно загрузить объект класса с соответствующим идентификатором из репозитория. Как и другие системные сервисы Е1, репозиторий классов является распределенным объектом. Общий репозиторий используется всеми узлами системы.

Каждый распределенный объект состоит из локальных объектов двух типов - объектов семантики и объектов репликации. В Е1 нет понятия класса для распределенных объектов. При создании нового распределенного объекта указывается класс соответствующего объекта семантики, который может отождествляться с классом всего распределенного объекта, поскольку именно объект семантики инкапсулирует полезную функциональность распределенного объекта. При этом для распределенных объектов одного класса могут использоваться различные классы объектов репликации (реализующие, соответственно, различные стратегии репликации).

Copyright E1 Team 2003
mail:team@E1OS.org