Sartomiki.net

  • Aumenta dimensione caratteri
  • Dimensione caratteri predefinita
  • Diminuisci dimensione caratteri

Deadlock

E-mail Stampa PDF
Valutazione attuale: / 0
ScarsoOttimo 

navi incagliateSono un insieme di processi bloccanti che hanno acquisito una eisorsa e sono in attesa di riceverne un'altra che però è a sua volta bloccata dallo stesso insieme.
Un deadlock si può presentare nel caso in cui si verifichino quattro condizioni contemporaneamente:
-mutua esclusione, nel senso che un dato può essere usato da un solo processo alla volta.
-hold & wait, nel senso che un processo che trattiene una risorsa è in attesa di un'altra trattenuta da altri processi
-no preemprion, nel senso che una risorsa può essere rilasciata da un solo processo che la utilizza
-attesa circolare, esiste un insieme di processi che attendono una risorsa.

Gestione dei Deadlock
Esistono diversi modi per gestire i deadlock: ad esempio si può imporre che il sistema non entri mai in deadlock oppure lasciare che il deadlock subentri e poi effettuare un'operazione di recovery (starvation); oppure ignorare il problema e fare in modo che esista una probabilità bassissima di deadlock.
Per prevenire i deadlock e quindi diminuirne la loro probabilità bisogna vincolare le richieste che possono essere effettuate: per fare questo si usano diverse tecniche.
Request All First (RAF): i processi devono acquisire tutte le risorse necessarie prima di iniziare l'esecuzione.
Release Before Request(RBF): tutti i processi possono acquisire risorse solo se non ne hanno già acquisite altre e devono rilasciare le risorse già utilizzate.
No Preemption: Se un processo richiede una richiesta non disponibile deve rilasciare tutte quelle di cui ha già fatto richiesta. Le risorse liberate sono aggiunte alle risorse che un processo deve acquisire. Il processo viene messo in pausa e risvegliato quando tutte le risorse richieste sono libere.
Attesa circolare: Impone una relazione di ordinamento totale tra le risorse. Ogni processo deve richiedere le risorse in un certo ordine. Nel caso in cui non trovi una risorsa deve liberare tutte quelle precedentemente acquisite.

Evitare i Deadlock
Un metodo è quello di applicare l'algoritmo del banchiere. Si prova a simulare l'assegnazione per decidere se è sicuro. Si esamina dinamicamente lo stato del grafo di allocazione per verificare che non ci siano cicli. Si richiede che il sistema abbia alcune informazioni sempre disponibili e si assegna un numero massimo di risorse. Lo stato di allocazione di una risorsa è definito dal numero di risorse disponibili.
Nel momento in cui viene chiesta al sistema una risorsa, il sistema verifica se quell'operazione potrebbe portare a uno stato non sicuro e in tal caso la risorsa non viene assegnata. Ogni applicazione deve dichiarare il massimo utilizzo di risorse. Nel caso in cui tale limite viene superato il processo viene bloccato.

Rilevazione dei deadlock
Nel caso in cui si permetta al sistema di entrare in uno stato di deadlock è essenziale che essi vengano rilevati. Ad intervalli di tempo regolari viene eseguito un algoritmo di rilevazione dei deadlock e nel caso in cui venga rilevato un ciclo viene applicato il sistema di recovery. Questo sistema prevede l'identificazione di una vittima, in base alla priorità e con il meccanismo di rollback viene riportato a uno stato precedente considerato sicuro. E' possibile che si abbia starvation.


Per le immagini Ringraziamo ©imapix


blog comments powered by Disqus
 

http://sartomiki.net/modules/mod_fuofb/assets/it/find-us-on-facebook-1.png

Follow me

Amici

Chi è online

 6 visitatori online

Siti amici

Banner

Notizie flash

Da oggi avete la possibilità di commentare tutti gli articoli presenti sul sito!! Scrivete le vostre opinioni!

PUBBLICITA'