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