The key from the domain’s keeper slot is called when the domain encounters difficulty in executing instructions.
Program interrupts (beyond address translation faults) and Supervisor Calls (SVCs) cause the domain’s keeper to be called.
The domain keeper may thus emulate environments provided by other operating systems, or provide debugging services.
The domain service key designates a domain.
It provides authority to retrieve and replace parts of the state of the domain including the keys in the general and special slots.
The domain service key provides complete access to the state of the computation within the domain, and authority to intervene therein.
The code that interprets the domain service key invocation is in the microkernel, in contrast to the code which interprets the domain start key invocation, which is the domain code.
The domain code (obeyed by the domain) has no control over and is not involved in interpreting these domain service key invocations.
The domain service key is used to initialize a domain and to intervene if the domain’s program should not behave as expected.
Many domains hold their own domain service key.
One order on a domain service key yields a start key to that domain.
This order also takes a one byte value, the data byte.
The start key includes this byte, which is delivered along with messages delivered via that start key.
A segment has some specific size which is a power of sixteen.
A segment is either a page or is compound.
A compound segment comprises sixteen equal-size portions.
To a compound segment there are both a segment key and a segment service key.
Page keys and segment keys are memory keys (While a page is a segment, a page key is not a segment key.
A page key is, however, a memory key).
The memory key to a compound segment is a node key, fetch key, sense key (q.v.) or segment key designating the node that is the root of the segment.
The sixteen portions of a compound segment S are each represented by the key from one of sixteen component slots in S accessible via the segment service key to S.
To the segment key holder the segment appears as the seamless concatenation of the sixteen portions.
A fetch or store reference to a portion of S via the segment key to S has the effect of a fetch or store reference via the key from the corresponding component slot.
These keys are typically memory keys to smaller segments.
A fetch or store reference to a portion of a segment whose component slot key is not a memory key is invalid .
Store references via read-only memory keys are also invalid.
Invalid fetch or store references to segments cause invocations of the key from the segment’s keeper slot or lacking that, the referencing domain’s keeper slot.
The referencing domain is left in the state just before the reference was made.
The invocation message includes the address within the segment to which the reference occurred, a segment service key, and a resume key to the referencing domain.
Domain service
Segment service
Meter service
Within a meter appear -
To build a segment or meter it suffices merely to place the appropriate keys in a new node, and request the segment key or meter key by an order on the node key.
To limit the number of programs that know how domains are built from nodes, getting a domain service key takes a special key: the domain tool key q.v..
The domain service key is used to install the parts of a domain.
Typically the domain service key is obtained from a domain creator, which is the only type of object holding the domain tool key.Role of nodes in the special objects