Livelock: cos'è, ad esempio, la differenza con deadlock

Sommario:

Anonim

Cos'è Livelock?

Un Livelock è una situazione in cui una richiesta di blocco esclusivo viene rifiutata ripetutamente, poiché molti blocchi condivisi sovrapposti continuano a interferire tra loro. I processi continuano a cambiare il loro stato, il che impedisce loro di completare l'attività. Ciò impedisce ulteriormente loro di completare l'attività.

In questo tutorial del sistema operativo imparerai:

  • Cos'è Livelock?
  • Esempi di Livelock
  • Cosa porta a Livelock?
  • Cos'è Deadlock?
  • Esempio di deadlock
  • Cos'è la fame?
  • Differenza tra deadlock, Starvation e Livelock

Esempi di Livelock

Esempio 1:

Un esempio più semplice di Livelock sarebbe due persone che si incontrano faccia a faccia in un corridoio, ed entrambe si spostano da parte per lasciar passare l'altra. Finiscono per spostarsi da un lato all'altro senza fare alcun progresso poiché si muovono allo stesso modo in quel momento. Qui non si incrociano mai.

Esempio 2:

Puoi vedere nell'immagine sopra, ciascuno dei due processi dati necessita di due risorse e usano il registro di immissione del polling primitivo per provare ad acquisire i blocchi necessari per loro. Se il tentativo fallisce, il metodo funziona di nuovo.

  1. Elabora Una risorsa di attesa Y.
  2. Il processo B contiene la risorsa X
  3. Il processo A richiede una risorsa X.
  4. Il processo B richiede la risorsa Y.

Supponendo che il processo A venga eseguito per primo e acquisisca la risorsa dati X, quindi il processo B venga eseguito e acquisisca la risorsa Y, indipendentemente dal processo eseguito per primo, nessuno di essi avanza ulteriormente.

Tuttavia, nessuno dei due processi è bloccato. Utilizzano ripetutamente le risorse della CPU senza che venga fatto alcun progresso, ma interrompono anche qualsiasi blocco di elaborazione.

Pertanto, questa situazione non è quella di un deadlock perché non c'è un singolo processo che è bloccato, ma affrontiamo la situazione qualcosa di equivalente a deadlock, che è LIVELOCK.

Cosa porta a Livelock?

Livelock si verifica quando il numero totale di processi consentiti in un sistema specifico deve essere definito dal numero totale di voci nella tabella dei processi. Pertanto, gli slot della tabella dei processi dovrebbero essere indicati come risorse finite.

Cos'è Deadlock?

Un deadlock è una situazione che si verifica nel sistema operativo quando un processo entra in uno stato di attesa perché un altro processo in attesa sta mantenendo la risorsa richiesta. Il deadlock è un problema comune nell'elaborazione multipla in cui diversi processi condividono un tipo specifico di risorsa che si escludono a vicenda nota come soft lock o software.

Esempio di deadlock

  • Un esempio del mondo reale potrebbe essere il traffico, che va solo in una direzione.
  • Qui un ponte è considerato una risorsa.
  • Quindi, quando si verifica un deadlock, può essere facilmente risolto se un'auto esegue il backup (Preempt risorse e rollback).
  • Potrebbe essere necessario eseguire il backup di più auto se si verifica una situazione di stallo.
  • Quindi la fame è possibile.
Esempio di deadlock

Cos'è la fame?

La fame è una situazione in cui tutti i processi a bassa priorità sono stati bloccati e i processi ad alta priorità procedono. In qualsiasi sistema, le richieste di risorse ad alta / bassa priorità continuano a verificarsi in modo dinamico. Di conseguenza, è necessaria una certa politica per decidere chi riceve supporto e quando.

Utilizzando alcuni algoritmi, alcuni processi potrebbero non ottenere il servizio desiderato anche se non sono bloccati. La fame si verifica quando alcuni thread rendono le risorse condivise non disponibili per un lungo periodo di tempo.

Esempio di fame:

Ad esempio, un oggetto offre un metodo sincronizzato che probabilmente impiegherà molto tempo per tornare. Se un thread utilizza questo metodo frequentemente, altri thread che richiedono anche un accesso sincronizzato frequente allo stesso oggetto verranno spesso bloccati.

Differenza tra deadlock, Starvation e Livelock

  • Un deadlock è una situazione che si verifica nel sistema operativo quando un processo entra in uno stato di attesa perché la risorsa richiesta è trattenuta da un altro processo in attesa.
  • Un livelock, d'altra parte, è quasi simile a un deadlock, tranne per il fatto che gli stati dei processi coinvolti in un livelock continuano a mutare l'uno nell'altro, nessuno progredisce.
  • Quindi, Livelock è un caso unico di carenza di risorse.

Sommario:

  • Definizione: un Livelock è una situazione in cui una richiesta di un blocco esclusivo viene rifiutata ripetutamente, poiché molti blocchi condivisi sovrapposti continuano a interferire tra loro.
  • Livelock si verifica quando il numero totale di processi consentiti in un sistema specifico deve essere definito dal numero totale di voci nella tabella dei processi
  • Un deadlock è una situazione che si verifica nel sistema operativo quando un processo entra in uno stato di attesa perché un altro processo in attesa sta mantenendo la risorsa richiesta.
  • Un esempio del mondo reale potrebbe essere il traffico, che va solo in una direzione.
  • Un esempio di Livelock potrebbero essere due persone che si incontrano faccia a faccia in un corridoio, ed entrambe si spostano per lasciar passare l'altra.
  • La fame è una situazione in cui tutti i processi a bassa priorità sono stati bloccati e i processi ad alta priorità procedono.