Los semáforos son variables que permiten la sincronización y exclusión mutua entre procesos al controlar el acceso a recursos compartidos. Fueron introducidos por Edsger Dijkstra en 1965 y permiten tres operaciones: inicialización, espera (P) y señal (V). Los semáforos implementan colas para procesos bloqueados y desbloqueados para controlar el acceso a recursos de forma ordenada.