C/R Taxonomy
C/R solutions can be ordered from those with the most encompassing saved state to the least. The operating system encompasses the entire state of the hardware; the corresponding C/R solution is to use virtual machines and capture the state of the operating system. One level below the operating system lies the environment; each program that might need checkpointing will reside in an environment. The state of the environment and processes executing in that environment can be encapsulated using a container-based C/R solution. Next, process-level solutions focus on saving and restoring the state of a program's processes. Finally, we arrive where we started, with ad-hoc solutions that save only programmer-defined parts of the application's state.
Any solution that does not save the state of the entire machine might require kernel state information to be saved as well. Kernel-modifying C/R does not fit neatly into the hierarchy and may be part of a C/R at different levels. For a reference that describes a classification of C/R based on system transparency, which is similar but not identical to the notion of state-size used here, see Arora, Bangalore, and Mernik (2011).