- The partitions of a distributed program are classified as either active
- An active partition 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_items that either are declared
pure or are shared passive (see 10.2.1 and E.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
- 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 dependences. Any reference
to data or call of a subprogram across partitions is called a remote access.
- A library_item is elaborated as part of the elaboration of each partition
that includes it. If a normal library unit (see E.2)
has state, then a separate copy of the state exists in each active partition
that elaborates it. The state evolves independently in each such partition.
- An active partition terminates when its environment task terminates. A
partition becomes inaccessible if it terminates or if it is aborted. 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 defined.
- 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 pragmas.
(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.
-- Email comments, additions, corrections, gripes, kudos, etc. to:
Magnus Kempe -- Magnus.Kempe@di.epfl.ch
Page last generated: 95-03-12