In molte applicazioni un processo può avere bisogno di accedere in modo esclusivo non ad una sola risorsa bensi' a molte. Supponiamo che un processo A necessiti della risorsa r1 e la ottiene, analogamente un processo B necessità e ottiene la risorsa r2. A questo punto A chiede l'uso della risorsa r2 ma la otterrà solo quando verrà rilasciata da B , sfortunatamente B chiede l'uso di r1 che è già in uso da A,a questo punto i processi entrano in attesa per un tempo infinito. Una situazione di questo tipo è detta deadlock. Per evitare lo stallo esistono almeno tre strategie: 1.Prevenzione 2.Riconoscimento e recupero 3.Indifferenza
Si impediscono le condizioni ritenute critiche per il sistema. Si considerano in maniera accurata gli accessi esclusivi ad una risorsa, si evitano gli accumuli di risorse, cosa che però è molto difficile da eliminare, le inibizioni del pre-rilascio e l'attesa circolare. La prevenzione si può fare ad ogni richiesta di accesso, verificando se questo può portare ad uno stallo, ma in questo caso la verifica è un onore pesante e in caso affermativo non è ben chiaro cosa bisogna fare. Si può anche chiedere preventivamente ad ogni processo quali risorse impiegherà in modo da ordinarli in maniera conveniente.
Si ammette e si tollera il verificarsi di uno stallo avendo però la capacità di invocare una procedura di recupero.