3OS

Лексикон 3ОС. Объект


Определение - характеристика


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

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

В 3ОС под объектом также понимается некая совокупность функционально зависимых экземпляров базового (или эквивалентного ему) класса, состоящая из двух типов модулей: завершенного полностью (удаленный объект) и незавершенного относительно кода (объект-"тень") или данных (объект-"иждивенец") экземпляров класса; во время исполнения представляющих собой единый, рассредоточенный по нескольким адресным пространствам объект.
  Первый из них (УО) является системным референсным объектом и выступает в качестве сервера принадлежащих ему (сосредоточенных в нем) ресурсов. В качестве клиента выступают испытывающие незавершенность (вплоть до момента их первого обращения к УО) ТО и ИО, которые на период исполнения являются полноценными (полностью эквивалентными УО) экземплярами класса.


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

Каждый объект, рассматривающийся в качестве УО, обязан иметь уникальный идентификатор.


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


Удаленный доступ (УД) - предоставление доступа к данным или методам удаленного объекта для их совместного использования с вызывающим объектом. Реализуется с помощью организации виртуального адресного пространства, совладельцем которого выступает поток-владелец вызывающего объекта. Обеспечивает псевдо-связь методов и данных двух совмещаемых объектов, один из которых является запрашиваемым удаленным объектом, а второй - "точкой вызова".

Доступность УО определяется правами доступа к каждому из методов удаленного объекта, регламентация которых выполняется самим удаленным объектом.

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


Точка вызова - объект, имеющий класс эквивалентный классу удаленного вызываемого объекта, но испытывающий незавершенность относительно принадлежащих классу методов (объект-"тень") или данных (объект-"иждивенец") класса.

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


Незавершенность объекта - физическое отсутствие конструкций класса: членов (данных) или методов класса (кода).


Теневой объект (ТО, объект-"тень") - экземпляр произвольного класса, испытывающий незавершенность относительно методов работы с собственными данными и инициирующий вызов методов удаленного объекта. Секция VMT ТО остается несуществующей на протяжении всей жизни ТО.


Объект-"иждивенец" (ИО) - экземпляр произвольного класса, испытывающий незавершенность относительно собственных данных и инициирующий вызов данных удаленного объекта. Секция VMT ИО остается несуществующей до первого обращения к УО.


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


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


Транзакционный вызов - способ вызова удаленного объекта, при котором происходит групповая передача данных запрашивающему их потоку. Используется исключительно при работе с объектами-"иждивенцами".