Cтраница 2
Программа, обладающая ссылкой на пакет-преобразователь, может вызвать активизацию соответствующего объекта домен в результате первого вызова операции пакета. После этого, пока объект домен остается активизированным, общие операции данного разделяемого и повторно входимого объекта домен могут повторно вызываться из того же пакета или других пакетов или задач, принадлежащих тип же программе иди независимым программам. [16]
![]() |
Дескриптор уточнения как префикс к дескриптору объекта. Доступ к объекту уточнение осуществляется через дескриптор доступа Refined AD, в то время как доступ ко всему объекту через Object AD. [17] |
Например, показано более подробно в разд. Ада доступна как уточнение объекта домен, который представляет объединение видимой и приватной части пакета. [18]
Объект домен Club Portfolio имеет как видимую, так и приватную части. Читателю рекомендуется подробно рассмотреть объекты, указываемые из этого объекта домен, и сравнить их с объектами, подразумеваемыми программой на языке Ада, и обсуждением, проведенным ранее в этой главе. [19]
Каждый объект домен содержит AD объекта локальных данных, в котором находятся значения констант всех процедур домена. Команда CALL копирует AD объекта локальных данных ( расположенный по фиксированному смещению в объекте домен) в новый объект контекст в качестве одного из действий вызова процедуры. Таким образом, когда процедура начинает исполнение, объект локальных данных можно адресовать. Каждый исполняющийся процесс в системе 1432 использует тот же объект глобальных констант, что сделано прежде всего для того, чтобы исключить дублирование популярных констант в различных объектах локальных данных системы. [20]
Программа, обладающая ссылкой на пакет-преобразователь, может вызвать активизацию соответствующего объекта домен в результате первого вызова операции пакета. После этого, пока объект домен остается активизированным, общие операции данного разделяемого и повторно входимого объекта домен могут повторно вызываться из того же пакета или других пакетов или задач, принадлежащих тип же программе иди независимым программам. [21]
Последний снимок, изображенный на рис. 4.19, показывает состояние структуры объектов сразу же после входа в процедуру Add. Объект процесс указывает на новый объект контекст, а тот в свою очередь указывает на объект домен пакета Purchase. В приватной части объекта домен существуют дескрипторы доступа, указывающие на объект очереди и на элемент очереди. [22]
Может потребоваться обращение к различным компонентам внутри объекта домен как к части непосредственно адресуемого пространства процессора. Вызванная процедура может сделать такую компоненту непосредственно адресуемой путем исполнения команды ENTER ACCESS ENVIRONMENT, чтобы скопировать значение AD текущего объекта домен в один из регистров входа. В процессоре существует регистр текущего домена. При исполнении команды CALL, ведущей к смене доменов, в этот регистр записывается новое значение AD, указывающее на базу приватной части нового домена. Это значение остается верным при различных вызовах процедур внутри домена, что используется процессором для ускорения обработки подобных вызовов. [23]
Дескрипторы доступа, находящиеся в домене D - это в основном дескрипторы доступа к объектам типа команды и дескрипторы доступа к другим ( внешним) доменам, к которым могут быть обращения при исполнении объектов типа команды, указываемых D. В дополнение к этому домен может содержать другие постоянные и переменные дескрипторы доступа, а также переменные, которые представляют информацию, доступную всем объектам типа команды, находящимся внутри домена. Поскольку объект домен доступен на запись, постоянная информация должна находиться в отдельном объекте, чей AD находится внутри домена. На рис. 4.12 показан простой случай домена, содержащего только дескрипторы доступа к объектам типа команды и один дескриптор доступа к объекту постоянных данных. [24]
Последний снимок, изображенный на рис. 4.19, показывает состояние структуры объектов сразу же после входа в процедуру Add. Объект процесс указывает на новый объект контекст, а тот в свою очередь указывает на объект домен пакета Purchase. В приватной части объекта домен существуют дескрипторы доступа, указывающие на объект очереди и на элемент очереди. [25]
Объекты, хранящиеся в файлах долговременной памяти, могут иметь сложные структуры. Примером композиции может служить откомпилированное представление пакета на языке Ада на библиотечном уровне. Оно будет состоять из объекта домен и связанных с ним объектов команды, объекта константы и объектов, представляющих собственные структуры данных, если такие имеются. [26]
Как указывалось в коротком введении в разд. Читателю следует заметить, что объект домен ( далее называемый просто доменом) доступен на чтение и запись. Стало быть, любая часть домена, к которой есть доступ, может быть изменена, за исключением гнезд AD, не имеющих права на удаление. [27]
После добавления нового объекта контекст в цепочку объектов контекста записывается информация в некоторые гнезда дескрипторов доступа. Вначале копия дескриптора доступа Private AD помещается в гнездо AD определяющего домена и также во внутренний регистр текущего домена. Кроме того, в новый объект контекст копируется следующая информация, получаемая из вновь введенного объекта домен ( см. также разд. [28]
В результате компиляции этот объект вместе с объектами, содержащими его данные, и связанными объектами типа команды построен как пассивный набор ( смесь) отдельных объектов. Его присутствие в пассивной памяти отмечается в справочнике, хранящемся в пассивной памяти. Когда пакет инициализируется для первоначального использования, неявно активизируется соответствующий объект домен: его версия помещается в активное пространство, где оча обновляется либо во время инициализации, либо в результате выполнения последующих вызовов, либо в обоих случаях. В течение каждого активного периода тот же самый объект домен, одинаковый с точки зрения идентификации, типа и структуры, существует и как активный, и как пассивный объект. [29]