This document proposes a minimum process checkpointing algorithm for mobile distributed systems. Key points:
- It captures partial dependencies by piggybacking dependency vectors onto messages to minimize the number of processes that must checkpoint.
- It uses mutable checkpoints initially to minimize wasted effort if a process fails to checkpoint. Processes then convert mutable to tentative checkpoints.
- It buffers messages sent after a process checkpoints to avoid inconsistencies from processes checkpointing at different times.
- On failure, it avoids discarding the entire checkpoint if possible by only forcing processes dependent on the failed process to abort their checkpoints.