Contents Index Search Previous Next
The partitions of a distributed program are classified
as either active or passive.
is a partition as defined in 10.2
A passive partition
is a partition that has no thread of control
of its own, whose library units are all preelaborated, and whose data
and subprograms are accessible to one or more active partitions.
A passive partition shall include only library_item
that either are declared pure or are shared passive (see 10.2.1
An active partition shall be configured on a processing
node. A passive partition shall be configured either on a storage node
or on a processing node.
The configuration of the partitions of a program
onto a distributed system shall be consistent with the possibility for
data references or calls between the partitions implied by their semantic
Any reference to data or call of a subprogram
across partitions is called a remote access
is elaborated as part of the elaboration of each partition that includes
it. If a normal library unit (see E.2
state, then a separate copy of the state exists in each active partition
that elaborates it. The state evolves independently in each such partition.
active partition terminates
when its environment task terminates.
A partition becomes inaccessible
if it terminates or if it is
. An active partition is aborted when its environment task
is aborted. In addition, if a partition fails during its elaboration,
it becomes inaccessible to other partitions. Other implementation-defined
events can also result in a partition becoming inaccessible.
For a prefix
D that denotes a library-level declaration, excepting a declaration of
or within a declared-pure library unit, the following attribute is defined:
Denotes a value of the type universal_integer
that identifies the partition in which D was elaborated. If D denotes
the declaration of a remote call interface library unit (see E.2.3)
the given partition is the one where the body of D was elaborated.
Bounded (Run-Time) Errors
It is a bounded error for
there to be cyclic elaboration dependences between the active partitions
of a single distributed program.
The possible effects
are deadlock during elaboration, or the raising of Program_Error in one
or all of the active partitions involved.
An implementation may allow multiple active or
passive partitions to be configured on a single processing node, and
multiple passive partitions to be configured on a single storage node.
In these cases, the scheduling policies, treatment of priorities, and
management of shared resources between these partitions are implementation
An implementation may allow separate copies of
an active partition to be configured on different processing nodes, and
to provide appropriate interactions between the copies to present a consistent
state of the partition to other active partitions.
In an implementation, the partitions of a distributed
program need not be loaded and elaborated all at the same time; they
may be loaded and elaborated one at a time over an extended period of
time. An implementation may provide facilities to abort and reload a
partition during the execution of a distributed program.
An implementation may allow the state of some
of the partitions of a distributed program to persist while other partitions
of the program terminate and are later reinvoked.
3 Library units are grouped
into partitions after compile time, but before run time. At compile time,
only the relevant library unit properties are identified using categorization
4 The value returned by
the Partition_ID attribute can be used as a parameter to implementation-provided
subprograms in order to query information about the partition.
Contents Index Search Previous Next Legal