Cuando múltiples procesos necesitan trabajar juntos (por ejemplo, compartir datos), surgen dos necesidades fundamentales.
¿Cómo intercambian información los procesos?
¿Cómo se coordina el orden de sus acciones?
Ocurre cuando múltiples procesos acceden y manipulan los mismos datos compartidos, y el resultado final depende del orden exacto en que se ejecutan sus instrucciones.
Analogía: Dos personas intentando editar el mismo documento de texto a la vez sin coordinación. El resultado puede ser un desastre.
Sucede cuando dos o más procesos se bloquean mutuamente, cada uno esperando un recurso que el otro proceso tiene. Ninguno puede avanzar.
Analogía: Dos personas que se encuentran en una escalera estrecha. Ninguna quiere retroceder para dejar pasar a la otra. Quedan atrapadas.
El SO crea una región de memoria a la que ambos procesos pueden acceder. Es rápido pero requiere sincronización manual.
Los procesos se comunican enviándose mensajes. El SO gestiona la entrega. Es más lento pero más seguro y simple de usar.
Son herramientas para evitar los problemas de concurrencia y garantizar el orden correcto.