Domanda

qualcuno potrebbe fornire un approccio passo-passo per risolvere il seguente problema utilizzando l'algoritmo del banchiere? Come faccio a sapere se un "safe-stato" esiste? Che cosa si intende quando un processo può "correre a compimento"?

In questo esempio, ho quattro processi e le 10 istanze della stessa risorsa.

          Resources Allocated | Resources Needed
Process A                   1                  6
Process B                   1                  5
Process C                   2                  4
Process D                   4                  7
È stato utile?

Soluzione

Wikipedia ,

  

Uno stato (come nell'esempio di cui sopra) è considerato sicuro se è possibile per tutti i processi per finire esecuzione (terminare). Dal momento che il sistema non può sapere quando un processo terminerà, o quante risorse avrà richiesto da allora, il sistema presuppone che tutti i processi alla fine tenterà di acquisire le loro risorse massima indicata e terminare poco dopo. Questa è un'ipotesi ragionevole in molti casi poiché il sistema non è particolarmente interessato a quanto tempo ogni processo eseguito (almeno non da una prospettiva evitare deadlock). Inoltre, se un processo termina senza acquisire le risorse massimi si rende solo più facile per il sistema.

Un processo possa completarsi quando il numero di ciascun tipo di risorsa che ha bisogno è disponibile, tra se stesso e il sistema. Se un processo richiede 8 unità di una determinata risorsa, ed è allocato 5 unità, allora può funzionare a compimento se ci sono almeno altre 3 unità disponibili che può allocare.

Dato il tuo esempio, il sistema gestisce una singola risorsa, con 10 unità disponibili. I processi in esecuzione sono già assegnati 8 (1 + 1 + 2 + 4) unità, quindi ci sono 2 unità residue. L'importo che ciascun processo deve completare è la sua massima inferiore qualunque esso ha già assegnato, così all'inizio, A ha bisogno di più 5 (6-1), B ha bisogno di più 4 (5-1), C necessita di 2 o più (4- 2), D ha bisogno di più 3 (7-4). Ci sono 2 disponibili, così Processo C è consentita l'esecuzione di completamento, liberando così 2 unità (lasciando 4 disponibili). A questo punto, sia B o D può essere eseguito (si suppone D). Una volta D ha portato a termine, ci saranno 8 unità disponibili, dopo di che o A o B può essere eseguito (si suppone A). Once A ha completato, ci saranno 9 unità disponibili, e quindi B può essere eseguito, che lascerà tutte le 10 unità di farmaco per ulteriori lavori. Dal momento che siamo in grado di selezionare un ordinamento dei processi che consentirà a tutti i processi per essere eseguito, lo stato è considerato 'sicuro'.

Altri suggerimenti

  Resources Allocated | Resources Needed    claim
  Process A      1                  6            5
  Process B      1                  5            4
  Process C      2                  4            2
  Process D      4                  7            3

Il totale delle risorse assegnate è 8 Quindi 2 risorse sono ancora da assegnare quindi allocata per elaborare C. e processo c dopo aver terminato rilievi 4 risorse che possono essere dati per elaborare B, Processo B dopo aver terminato rivive 5 risorse che sono allocati per elaborare un processo n A dopo finiture stanzia 2 risorse per elaborare D

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top