Spec-Zone.ru › Ada 2022
Руководство по Ada (Ada 2022)

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.

Ограниченные (временные) ошибки

Возникновение циклических зависимостей обработки между активными разбиениями одной распределенной программы является ограниченной ошибкой. Возможные последствия в каждом из участвующих разбиений — тупик при обработке или возникновение исключения Communication_Error или Program_Error.

Разрешения реализации

Реализация может позволить несколько активных или пассивных разбиений быть сконфигурированными на одном процессорном узле, и несколько пассивных разбиений на одном узле хранения. В этих случаях политики планирования, обработка приоритетов и управление общими ресурсами между этими разбиениями определяются реализацией.
Реализация может разрешить конфигурирование отдельных копий активного разбиения на различных процессорных узлах и обеспечить соответствующие взаимодействия между копиями для представления согласованного состояния разбиения для других активных разбиений.
В реализации разбиения распределённой программы могут загружаться и обрабатываться в разное время; они могут загружаться и обрабатываться по одному в течение длительного периода. Реализация может предоставить средства для прерывания и повторной загрузки разбиения во время выполнения распределённой программы.
Реализация может позволить сохранение состояния некоторых разбиений распределённой программы, в то время как другие разбиения программы завершаются и позднее вызываются повторно.
ПРИМЕЧАНИЕ 1 Библиотечные единицы группируются в разбиения после компиляции, но до времени выполнения. Во время компиляции с помощью аспектов категоризации определяются только соответствующие свойства библиотечных единиц.
ПРИМЕЧАНИЕ 2 Возвращаемое значение атрибута Partition_Id может быть использовано в качестве параметра для подпрограмм, предоставляемых реализацией, для запроса информации о разбиении.


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API