A snapshot algorithm is used to create a consistent snapshot of the global state of a distributed system. These algorithms are not practically possible, due to the lack of both a globally shared memory and a lack of a global clock.