In a fundamental sense, there are exactly two ways that a key can be used:
Programming note: It is useful to think of building structures that the kernel interprets as a third way of using keys.
A more intuitive description is to say that keys F and N each point to (designate) a common object with the ability to store parameters, and that F and N contain some other component that distinguishes them. (e.g. F may be a fetch key and N a node key to the same node.)
When using this second description, it is important to recognize that the characteristics of the object may be very different when viewed through the two keys. (e.g. A segment key and a meter key may both designate the same node.)
If keys are thought of as designating objects, they can be described as having up to three components:
The following list describes the keys that are implemented in the kernel. These keys may be divided into two classes. The start and resume keys are gate keys, all others are primary keys. KeyKOS Object Reference (KL230) defines the effects of invoking each type of primary key.
A gate key designates a node that will be interpreted as the root of domain. It is important to note that a gate key restricts the holder merely to starting the domain program and offering some data and authority. The starting address is specified by the started domain.
A fetch key only allows keys to be retrieved from the node.
A sense key only allows keys to be retrieved from the node. The operation of retrieving a key from the node may be accompanied by an attenuation of the authority of the fetched key (only sensory versions of keys may be retrieved by use of a sense key).
A domain key provides the holder with some authority to the node viewed as the root of a domain. It also gives certain authority over the two other nodes that make up the domain.
The start and resume keys provide the authority to invoke the node viewed as the root of a domain.
A segment key provides authority to access the segment defined by the node.
A meter key provides authority to consume the resources defined by the contents of certain slots of the node.
The value in a data key is frequently interpreted or produced by the kernel. In these situations the value is interpreted in binary and the bits numbered by negative integers. The unit's position is -1, the two's position is -2, the four's position is -3, etc.
A node range key (or page range key) is a closely held key that provides the holder with strong authority over a group of nodes (or pages). It is used to allocate space on disks.
Miscellaneous keys are several individual keys that provide special services (that are implemented by the kernel, as described in Chapter 3).