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

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

Модель защиты объектов Е1 основана на трех предположениях:

  1. Методы объекта не имеют непосредственного доступа к состоянию других объектов (требование изоляции объектов).
  2. Объекты могут взаимодействовать только посредством вызова методов.
  3. Вызовы методов контролируются ОС, которая может проверить соответствие каждого вызова действующей политике контроля доступа.

Эти предположения обеспечиваются, соответственно, тремя механизмами: домены защиты, междоменные вызовы и механизм контроля доступа.

Домены защиты

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

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

Очевидно, что 4-гигабайтное адресное пространство 32-битных процессоров не позволяет вместить весь код и данные распределенной вычислительной системы. Для реализации ОС на основе единого адресного пространства требуется аппаратная платформа c широким пространством виртуальных адресов. Поэтому Е1 ориентирована на использование микропроцессоров с 64-битной адресацией памяти.

Заметим, что в принципе модель распределенных объектов Е1 может быть успешно реализована и в рамках модели изолированных адресных пространств. В этом случае для организации взаимодействия объектов могут использоваться косвенные ссылки [47], позволяющие осуществлять передачу управления между адресными пространствами. Тем не менее, единое адресное пространство позволяет построить более простую и удобную реализацию. Анализ преимуществ ОС на основе единого адресного пространства можно найти в работах [10, 22].

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

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

При объединении объектов в домены следует учитывать следующие факторы:

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

В соответствии с этими факторами, в один домен следует помещать интенсивно взаимодействующие объекты, реализующие общую функциональность.

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

Copyright E1 Team 2003
mail:team@E1OS.org