Information Technology Reference
In-Depth Information
by Nienaltowski [25], introduces the import operation to solve this issue. Applied to
o the import operation creates a copied object structure that mirrors the original object
structureinawaythat o and all the objects reachable from o through non-separate
references are replaced with copied objects that are handled by q . This data structure
then gets attached to the destination of the attachment. The import operation computes
the non-separate version of an object structure.
Clarification 2 (Deep import operation). The import operation potentially results in a
copied object structure that contains both copied and original objects. This can be an
issue in case one of the copied objects has an invariant over the identities of objects, as
shown in example 3.
Example 3 (Invariant violation as a result of the import operation). Imagine two ob-
jects x and y handled by one processor and another object z handled by another pro-
cessor. Object x has a separate entity a that points to z and a non-separate entity b that
points to y . Object z has a separate entity c that points to y . Object x has an invariant
with a query a
b . An import operation on x executed by a third processor will result
in two new objects x and y on the third processor. The reference a of object x will
point to the original z . The reference b of object x will point to the new object y .This
situation is illustrated in Fig. 2. Now object x is inconsistent, because a
.
c
=
.
c and b identify
different objects, namely y and y .
x : X
x' : X
z : Z
a : separate Z
b : Y
a : separate Z
b : Y
c : separate Y
y : Y
y' : Y
Fig. 2. Invariant violation as a result of the import operation
The deep import operation is a variant of the import operation that does not mix the
copied and the original objects.
Instead of copying only the objects that are reachable through non-separate references,
the deep import operation makes a full copy of the object structure. The deep importing
processor handles all the copies of the objects that are non-separate with respect to
the object to be imported. Each other separate object is handled by the processor of
the respective original object. The deep import operation does not show the issue with
invariants. The drawback of the deep import operation is that more objects must be
copied. Nevertheless, we use the deep import operation in our formalization because we
cannot tolerate violated invariants. Once routines complicate the deep import operation
a bit. Consider a processor p that wants to deep import an object o handled by a different
processor q . For each non-separate once function f of each copied object the following
must be done: if a non-separate once function f is fresh on p and non-fresh on q ,then f
Search WWH ::




Custom Search