Keykos Object


Here is a Keykos domain serving as a Keykos object. In the code segment is machine code that runs in user mode and defines the behavior of the object. In the data segment is the state of the object. The arrows denote capabilities held by the thing without the arrow head. The box labeled “segment” is a memory segment which is the concatenation of the code and data segments. That segment forms the address space of the program in the code segment. The domain holds one set of register values including a program counter. None of the arrows shown are ‘held’ by the program but all of the capabilities in the C-list are owned by the program. The upper left capability pointing to the domain proper is held by someone who is able thereby to send a message that will be interpreted by the code that the domain obeys. There are often duplications of this collection except the code segment and perhaps the meter is shared. The upper left arrow is probably held in one or several C-lists of other domains.

All about meters

Note that there is no stack in sight. This describes how a continuation capabilities serve the purpose normally served by a platform managed stack.

There are kernel objects as well and the code that defines their behavior is in the kernel. At a lower abstraction level the domain itself is a kernel object along with the segments and the meter. The state of a domain resides not in segments but in nodes which are metaphorically “capability pages” that hold capabilities instead of data.