1. Time is an important metric in distributed systems for consistency, transactions, and debugging. Hardware clocks can drift and skew over time compared to each other. 2. Several clock synchronization algorithms aim to minimize clock differences, including Cristian's method of periodically querying a time server, Berkeley's algorithm of polling slaves and adjusting, and NTP's hierarchical structure. 3. Logical clocks provide a partial ordering of events without exact timestamps, using happened-before relationships and monotonically increasing counters. Vector clocks extend this to multiple processes. 4. A global state represents all local process states and message contents at a consistent cut, where all message sends are recorded before corresponding receives. This is needed for tasks like distributed garbage collection