Vai al contenuto

Resource Allocation Graphs

Da Wikipedia, l'enciclopedia libera.
Versione del 19 lug 2015 alle 15:14 di Pleasant94 (discussione | contributi) (Nuova pagina: thumb|Esempio di RAG Un ''Resource Allocation Graph'' (in breve RAG) è un modello astratto per la determinazione e l'eliminazion...)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)
Esempio di RAG

Un Resource Allocation Graph (in breve RAG) è un modello astratto per la determinazione e l'eliminazioni di situazioni di deadlock. Il RAG è un grafo dove:

  • indica il numero di nodi: cerchi per indicare i processi e rettangoli per indicare le risorse; all'interno dei rettangoli verranno indicate con dei pallini il numero di istanze corrisondenti a tale risorsa.
  • indica il numero di archi: dal processo (cerchio) alla risorsa (rettangolo) significa che il processo richiede tale risorsa; dalla risorsa al processo indica che tale risorsa è detenuta da quel processo.

Se il RAG non contiene cicli, non sono presenti deadlock. Se presenta cicli, possiamo distinguere due casi:

  1. La risorsa ha una sola istanza, pertanto si avrà una situazione di deadlock.
  2. Ci sono più istanze, allora la determinazione del deadlock dipende dallo schema di allocazione.

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.