  Contention resolution addresses the challenge of coordinating access by
multiple processes to a shared resource such as memory, disk storage, or a
communication channel. Originally spurred by challenges in database systems and
bus networks, contention resolution has endured as an important abstraction for
resource sharing, despite decades of technological change. Here, we survey the
literature on resolving worst-case contention, where the number of processes
and the time at which each process may start seeking access to the resource is
dictated by an adversary. We highlight the evolution of contention resolution,
where new concerns -- such as security, quality of service, and energy
efficiency -- are motivated by modern systems. These efforts have yielded
insights into the limits of randomized and deterministic approaches, as well as
the impact of different model assumptions such as global clock synchronization,
knowledge of the number of processors, feedback from access attempts, and
attacks on the availability of the shared resource.
