Concepto de recursos
Cuando un proceso A solicita un recurso que
está ocupado por otro proceso B, pasa a un estado de espera. Si B también está
en estado de espera, esperando un recurso que tiene A, los dos procesos están
en deadlock.
Un sistema consiste en un número finito de
recursos que deben distribuirse entre varios procesos que compiten. Los
recursos se dividen en varios tipos, cada uno de los cuales consiste en cierta
cantidad de ejemplares idénticos (unidades de recursos). Si un proceso solicita
un ejemplar de un tipo de recurso, la asignación de cualquier ejemplar del
tipo, satisface la solicitud.
Un proceso solo puede utilizar un recurso,
siguiendo esta secuencia:
La solicitud y liberación, son llamadas al
SO. Una tabla del sistema registra si cada recurso está libre o asignado. Si un
proceso solicita un recurso ocupado, se lo coloca en la cola de procesos que
esperan ese recurso.
Los recursos pueden ser físicos
(impresoras, memoria, ciclos de CPU), o lógicos (archivos, semáforos,
monitores).

En un bloque mutuo, los procesos nunca
terminan su ejecución y los recursos del SO quedan acaparados.
Puede llegar a ocurrir bloqueo mutuo si
se cumplen simultáneamente las cuatro condiciones siguientes:
Mutua exclusión: Al menos un recurso debe adquirirse de
forma no compartida, o sea, solo puede usarlo un proceso a la vez. Si otro
proceso lo solicita, debe esperar.
Retener y esperar: Debe existir un
proceso que haya adquirido al menos un recurso y esté esperando para adquirir
recursos adicionales, que ya fueron otorgados a otros procesos.
No expropiación: Los recursos no se pueden arrebatar, es
decir, la liberación es voluntaria por parte del proceso que adquirió el
recurso.
Espera circular: Debe existir un conjunto {P0, P1, … , Pn} de procesos
en espera tal que P0 espera un recurso adquirido por P1,
P1 espera uno adquirido por P2, … , Pn
espera uno adquirido por P0.