Un Resource Allocation Graph (in breve RAG) è un modello astratto per la determinazione e la rappresentazione di eventuali situazioni di deadlock. Il RAG è un grafo dove:
Se il RAG non contiene cicli, non sono presenti deadlock. Se presenta cicli, possiamo distinguere due casi:
Una tecnica di prevenzione del deadlock è la prevenzione dinamica; tale tecnica consta di due alternative: algoritmo del banchiere o algoritmo con RAG (utilizzabile solo nel caso in cui le risorse presentano una sola istanza).
Per la seconda alternativa, ovvero l'algoritmo con RAG, si aggiunge una nuova tipologia di arco nel RAG: un arco tratteggiato dal processo alla risorsa, che significa che tale processo potrebbe richiedere tale risorsa. L'algoritmo con RAG quindi può distinguere situazioni dette safe, se non sono presenti cicli, e situazioni dette unsafe, se sono presenti cicli nel RAG. Non sempre uno stato unsafe significa presenza di deadlock, ma il deadlock si può verificare solo in uno stato di unsafe.
Tale algoritmo presenta una complessità , dove indica il numero di processi.