preserving context-independence

Norman Hardy norm@netcom.com
Sat, 4 Apr 1998 11:46:25 -0800


At 18:02 -0500 4/3/98, Jonathan S. Shapiro wrote:
>There remains an unresolved question.
>
>Consider an address space that is an LSS 6 node (28 bits).  Let slot 0
>of that node holding a red segment key to a kept red segment whose
>format key says it is LSS 4 (20 bits).
>
>Which keeper gets invoked when the following code is executed:
>
>
>	int i = *((int *) (1 << 20))
>
>the domain keeper, or the red segment keeper?
>
>Note that the address specified falls just outside the LSS 4 segment,
>but within the range that should have been covered by that slot of the
>LSS 6 node.
>
>
>shap

Here is my "Rhetorical" answer:

Slot 0 of the first node defines addresses 0x0XXXXXX which includes the
referenced addres: 0x100000. What ever key is in slot 0 has thus the
opportunity to define the meaning of that reference. Thus the fault goes to
the keeper of the second node who may modify the lss of the node via the
format key in the second node, so as to appear that the lss was always
large.

Rationale:
Faulting the domain would reveal the lss in the format key of the red node
and violate encapsulation, in my view. The whole point of keeping the lss
in the node instead of the segment key is to be able to change it,
transparantly to the holder of the red segment key. Otherwise it could have
been more like the black segment node where the lss value was coded in each
segment key thereto.

Norman Hardy  <http://www.mediacity.com/~norm>