2010-03-21 11 views

risposta

18

Si potrebbe guardare come:

Evitare: Non condividere risorse tra processi/discussioni mulitple

Prevenire: Quando accsessing risorse condivise, utilizzare un semaforo. Se blocchi più semafori, assicurati di sbloccare nell'ordine inverso al blocco. Assicurati sempre di gestire gli errori all'interno delle sezioni critiche in modo che il semaforo venga rilasciato in tutte le condizioni.

3

Deadlock Avoidance: mezzi, ogni volta che viene effettuata una richiesta per una particolare risorsa da un particolare processo, si guardano le risorse disponibili, se la risorsa futuro ha bisogno per il processo di risorse già in uso, determinare la possibilità di un deadlock nel caso in cui la risorsa sia concessa. Se possibile, non concedere la risorsa, se non possibile, quindi concedere la risorsa.

Prevenzione dei deadlock: assicurarsi che non sia soddisfatta almeno una delle condizioni per il blocco critico in qualsiasi momento. Questo può essere ottenuto nel modo in cui le risorse sono richieste e concesse nel sistema.

20

Deadlock:

Un deadlock è una situazione in cui due o più azioni concorrenti sono tutte in attesa per l'altro per finire, e quindi né fa mai. Può anche essere definito come un insieme di processi bloccati ciascuno in possesso di una risorsa e in attesa di acquisire una risorsa detenuta da un altro processo nel set.

Ad esempio, se esiste un sistema con due unità disco. Se sono presenti due processi P1 e P2, ciascuno dei quali contiene un'unità disco e ciascuno ha bisogno dell'altro, quindi si verifica la situazione di stallo. Le seguenti condizioni si svolgeranno simultaneamente in caso di stallo:

• Mutua esclusione: solo un processo alla volta può utilizzare una risorsa

• Tenere premuto e attendere: un processo che detiene almeno una risorsa attende di acquisire ulteriori risorse possedute da altri processi

• No preemption: una risorsa può essere rilasciato solo volontariamente dal processo tenendolo, dopo che ha completato il suo compito

• attesa circolare: esiste un insieme {P0, P1, ..., Pn} dei processi di attesa suc h che P0 è in attesa di una risorsa che è detenuta da P1, P1 è in attesa di una risorsa che è detenuta da P2, ..., Pn-1 è in attesa di una risorsa che è detenuta da Pn, e Pn è in attesa di una risorsa che è detenuto da P0.

Differenze tra la prevenzione stallo, prevenzione e rilevamento sono i seguenti:

Prevenzione:

• L'obiettivo è quello di garantire che almeno una delle condizioni necessarie per stallo non può mai contenere.

• La prevenzione del deadlock è spesso impossibile da implementare.

• Il sistema non richiede ulteriori informazioni aggiuntive sull'uso potenziale complessivo di ciascuna risorsa per ogni processo.

• Affinché il sistema impedisca la condizione di deadlock, non è necessario conoscere tutti i dettagli di tutte le risorse esistenti, disponibili e richieste.

• tecniche di prevenzione Deadlock includono non bloccante algoritmi di sincronizzazione, la serializzazione gettoni, Dijkstra algoritmo ecc

• strategia di allocazione delle risorse per la prevenzione stallo è conservatore, si impegna nell'ambito delle risorse.

• Tutte le risorse vengono richieste contemporaneamente.

• In alcuni casi, si verifica più del necessario.

Prevenzione:

• L'obiettivo per stallo evitamento è al sistema non deve entrare in uno stato non sicuro.

• L'eliminazione del deadlock è spesso impossibile da implementare.

• Il sistema richiede informazioni aggiuntive aggiuntive sull'uso potenziale complessivo di ciascuna risorsa per ogni processo.

• Affinché il sistema sia in grado di capire se lo stato successivo sarà sicuro o non sicuro, deve conoscere in anticipo in qualsiasi momento il numero e il tipo di tutte le risorse esistenti, disponibili e richieste.

• Tecniche di Deadlock Avoidance includono l'algoritmo del banchiere, Wait/Die, Ferito/Wait ecc

• Risorsa strategia di allocazione per la situazione di stallo evitamento seleziona a metà strada tra quella di rilevazione e prevenzione.

• Deve essere manipolato finché non si trova almeno un percorso sicuro.

• Non c'è possibilità di prelazione.

Detection:

• L'obiettivo è quello di rilevare la situazione di stallo dopo che si verifica o prima che si verifichi.

• Rilevare la possibilità di un deadlock prima che si verifichi è molto più difficile ed è, in effetti, generalmente indecidibile. Tuttavia, in ambienti specifici, utilizzando mezzi specifici di blocco delle risorse, il rilevamento di deadlock può essere decidibile.

• Il sistema non richiede ulteriori informazioni aggiuntive relative al potenziale utilizzo globale di ciascuna risorsa per ogni processo in tutti i casi.

• Per consentire al sistema di rilevare la condizione di deadlock, non è necessario conoscere tutti i dettagli di tutte le risorse esistenti, disponibili e richieste.

• Una tecnica di rilevamento di deadlock include, ma non è limitata a, controllo del modello. Questo approccio costruisce un modello a stati finiti su cui esegue un'analisi di avanzamento e trova tutti i possibili set di terminali nel modello.

• La strategia di allocazione delle risorse per il rilevamento dei deadlock è molto liberale. Le risorse sono concesse come richiesto.

• Deve essere invocato periodicamente per verificare la situazione di stallo.

• La prelazione è visibile.

0

La differenza tra prevenzione e Deadlock Deadlock Avoidance

Deadlock Prevenzione:
Prevenire situazioni di stallo vincolando come le richieste di risorse possono essere fatte nel sistema e il modo in cui vengono gestiti (progettazione del sistema). L'obiettivo è quello di garantire che almeno una delle condizioni necessarie per lo stallo non possa mai contenere.

Deadlock Avoidance:
il sistema considera dinamicamente ogni richiesta e decide se è sicuro di concedere a questo punto, Il sistema richiede ulteriori informazioni a priori quanto riguarda l'uso potenziale complessivo di ogni risorsa per ogni processo. Permette più concorrenza. Simile alla differenza tra un semaforo e un agente di polizia che dirige il traffico.

Problemi correlati