This document discusses various algorithms for achieving mutual exclusion in distributed systems. It begins by defining mutual exclusion and describing how it is achieved in centralized systems using techniques like semaphores. It then presents several algorithms for distributed mutual exclusion, including a token ring algorithm, the Ricart-Agrawala algorithm using message passing and logical clocks, Lamport's algorithm also using message passing and timestamps, and a decentralized algorithm based on distributed hash tables. It analyzes the characteristics and tradeoffs of each approach.