From time to time, KeyKOS takes a system-wide checkpoint - which is a record of the state of all pages and nodes. The checkpoint represents the state of the system at a single instant of time.
At any one instant two states of the system are available: the current state and the state at the last checkpoint. In normal operation, checkpoint states are not referred to. The current state is represented, in part, by information in volatile memory (e.g., in machine registers); the checkpointed state is represented only in non-volatile memory.
The kernel takes a checkpoint on two occasions: when the space reserved to hold the checkpoint state is nearly full, and when the Checkpoint Key is invoked.
After a checkpoint has been taken, the pages and nodes that have changed since the previous checkpoint are copied from the checkpoint area to their "home positions" in a process called migration. This work is overlapped with normal execution and takes place under the control of a domain using the External Migrator Tool key. The External Migrate Tool key must be properly used to ensure that these checkpoints may continue to be taken.
If it is necessary to take another checkpoint before the above copying activity has finished, there may be a delay in normal processing.
When KeyKOS recovers from a failure, it restarts from the state at the last checkpoint. With the exception of the journal page and pages that have been saved with the journalize page key, all pages and nodes are restored to their state at the time of the last checkpoint. Domains with TRUE process-running bits will begin running from their checkpointed state.
Of necessity, certain things are not backed up. These include the real time clock, the wait objects accessed with the bwait key, charge sets, devices, and things outside of KeyKOS, such as the memory of users.