Справочник по Ada 95
E.1 Разделы
Разделы распределенной программы классифицируются как активные или пассивные.
Правила после компиляции
Активный раздел — это раздел, определенный в 10.2. Пассивный раздел — это раздел, не имеющий собственной нити управления, все библиотечные единицы которого предварительно разработаны, а данные и подпрограммы доступны одному или нескольким активным разделам.
Пассивный раздел должен содержать только library_itemы, которые либо объявлены чистыми, либо являются общими пассивными (см. 10.2.1 и E.2.1).
Активный раздел должен быть настроен на процессорном узле. Пассивный раздел должен быть настроен либо на узле хранения, либо на процессорном узле.
Конфигурация разделов программы на распределенной системе должна соответствовать возможности обращения к данным или вызовам между разделами, подразумеваемым их семантическими зависимостями. Любое обращение к данным или вызов подпрограммы через разделы называется удаленным доступом.
Динамическая семантика
library_item разрабатывается как часть разработки каждого раздела, который его включает. Если обычная библиотечная единица (см. E.2) имеет состояние, то отдельная копия состояния существует в каждом активном разделе, который её разрабатывает. Состояние развивается независимо в каждом таком разделе.
Активный раздел завершается, когда завершается его окружение. Раздел становится недоступным, если он завершается или если он прерывается. Активный раздел прерывается, когда его окружение прерывается. Кроме того, если раздел терпит неудачу во время разработки, он становится недоступным для других разделов. Другие события, определённые реализацией, также могут привести к тому, что раздел станет недоступным.
Для префикса D, обозначающего объявление на уровне библиотеки, за исключением объявления или внутри объявленной чистой библиотечной единицы, определён следующий атрибут:
- D'Partition_ID
- Обозначает значение типа universal_integer, которое идентифицирует раздел, в котором D был разработан. Если D обозначает объявление библиотечной единицы интерфейса удалённого вызова (см. E.2.3), данный раздел — это тот, где был разработан код D.
Ограниченные (временные) ошибки
Возникновение циклических зависимостей разработки между активными разделами одной распределенной программы является ограниченной ошибкой. Возможные последствия — тупиковая ситуация во время разработки или повышение Program_Error в одном или во всех активных разделах, участвующих в этом.
Разрешения реализации
Реализация может позволять несколько активных или пассивных разделов на одном процессорном узле и несколько пассивных разделов на одном узле хранения. В этих случаях политики планирования, обработка приоритетов и управление общими ресурсами между этими разделами определяются реализацией.
Реализация может разрешать конфигурирование отдельных копий активного раздела на разных процессорных узлах и обеспечивать соответствующие взаимодействия между копиями для представления согласованного состояния раздела другим активным разделам.
В реализации разделы распределённой программы не обязательно загружать и разрабатывать одновременно; их можно загружать и разрабатывать по одному в течение длительного времени.
Реализация может предоставить возможности для прерывания и повторной загрузки раздела во время выполнения распределённой программы.
Реализация может разрешить сохранение состояния некоторых разделов распределённой программы, в то время как другие разделы программы завершаются и позднее вызываются повторно.
ПРИМЕЧАНИЯ
3 Библиотечные единицы группируются в разделы после компиляции, но до времени выполнения. Во время компиляции с помощью категорийных директив идентифицируются только соответствующие свойства библиотечных единиц.
4 Возвращаемое значение атрибута Partition_ID может использоваться в качестве параметра для подпрограмм, предоставляемых реализацией, для запроса информации о разделе.