Algoritmo del banchiere in Operasistema di controllo [Esempio]
โก Riepilogo intelligente
L'algoritmo del banchiere รจ un metodo per evitare il deadlock che verifica se l'allocazione delle risorse mantiene il sistema in uno stato sicuro. Prende il nome dal settore bancario e, poichรฉ soddisfa una richiesta solo se rimangono risorse sufficienti a soddisfare ogni processo, lo fa.

Cos'รจ l'algoritmo del banchiere?
Algoritmo del banchiere viene utilizzato principalmente nel sistema bancario per evitare punto morto. Ti aiuta a identificare se un prestito verrร concesso o meno.
Questo algoritmo viene utilizzato per testare la simulazione sicura dell'allocazione per determinare l'importo massimo disponibile per tutte le risorse. Controlla inoltre tutte le possibili attivitร prima di determinare se l'assegnazione debba essere continuata o meno.
Ad esempio, supponiamo che ci siano X titolari di conto presso una determinata banca e che l'importo totale di denaro presente nei loro conti sia G.
Quando la banca elabora un prestito auto, il sistema software subtracts รจ l'importo del prestito concesso per l'acquisto di un'auto dal totale del denaro (G + deposito fisso + piano di reddito mensile + oro, ecc.) che la banca possiede.
Il prestito auto viene concesso solo se il denaro rimanente supera ancora G, quindi tutti i titolari del conto possono prelevare G in qualsiasi momento.
Notazioni sugli algoritmi del banchiere
Ecco alcune notazioni importanti utilizzate nell'algoritmo del banchiere:
- X: Indica il numero totale di processi nel sistema.
- Y: indica il numero totale di risorse presenti nel sistema.
Disponibile
[1:Y] indica quante istanze di ciascun tipo di risorsa sono disponibili.
Max
[1:X, 1:Y]: Esprime il numero massimo di risorse di tipo j che il processo i puรฒ richiedere.
assegnazione
[1:X, 1:Y]: Indica le risorse di tipo j attualmente allocate al processo i.
Bisogno
Indica quante risorse aggiuntive di ciascun tipo di processo sono ancora necessarie per completare il suo compito.
Esempio dell'algoritmo di Banker
Supponiamo di avere le seguenti risorse:
- 5 Pen drive
- 2 stampanti
- 4 Scanner
- 3 dischi rigidi
Qui abbiamo creato un vettore che rappresenta le risorse totali: Disponibile = (5, 2, 4, 3).
Supponiamo che ci siano quattro processi. Le risorse disponibili sono giร allocate secondo la tabella matrice sottostante.
| Nome processo | Pen drive | Stampante | Scanner | hard disk |
|---|---|---|---|---|
| P | 2 | 0 | 1 | 1 |
| Q | 0 | 1 | 0 | 0 |
| R | 1 | 0 | 1 | 1 |
| S | 1 | 1 | 0 | 1 |
| Totale | 4 | 2 | 2 | 3 |
In questo caso, le risorse allocate corrispondono alla somma di queste colonne:
Assegnato = (4, 2, 2, 3).
Creiamo anche una matrice per visualizzare il numero di ciascuna risorsa richiesta per tutti i processi. Questa matrice si chiama Bisogno = (3, 0, 2, 2).
| Nome processo | Pen drive | Stampante | Scanner | hard disk |
|---|---|---|---|---|
| P | 1 | 1 | 0 | 0 |
| Q | 0 | 1 | 1 | 2 |
| R | 2 | 1 | 0 | 0 |
| S | 0 | 0 | 1 | 0 |
Il vettore disponibile sarร :
Disponibile = Disponibile โ Assegnato
= (5, 2, 4, 3) โ (4, 2, 2, 3)
= (1, 0, 2, 0)
Algoritmo di richiesta di risorse
L'algoritmo di richiesta risorse consente di rappresentare il comportamento del sistema quando un processo specifico effettua una richiesta di risorse.
Cerchiamo di comprendere questo concetto attraverso i seguenti passaggi:
Passo 1) Quando il numero totale di istanze richieste di tutte le risorse รจ inferiore al processo, passare al passaggio 2.
Passo 2) Quando il numero di istanze richieste per ciascun tipo di risorsa รจ inferiore al numero di risorse disponibili per quel tipo, si procederร alla fase successiva. In caso contrario, il processo dovrร attendere a causa dell'insufficienza di risorse.
Passo 3) La risorsa viene allocata come mostrato nello pseudocodice riportato di seguito.
Available = Available โ Request (y) Allocation(x) = Allocation(x) + Request(x) Need(x) = Need(x) - Request(x)
Quest'ultimo passaggio viene eseguito perchรฉ il sistema deve presumere che le risorse siano state allocate, in modo che, dopo l'allocazione, le risorse disponibili siano inferiori.
Caratteristiche dell'algoritmo del banchiere
Ecco le caratteristiche principali dell'algoritmo del banchiere:
- Mantiene numerose risorse che soddisfano i requisiti di almeno un cliente.
- Ogni volta che un processo ottiene tutte le sue risorse, deve restituirle in un periodo ristretto.
- Quando un processo richiede una risorsa, potrebbe dover attendere.
- Il sistema dispone di un numero limitato di risorse.
- Offre una funzionalitร avanzata per la massima allocazione delle risorse.
Svantaggio dell'algoritmo di Banker
Ecco gli svantaggi dell'utilizzo dell'algoritmo del banchiere:
- Non consente al processo di modificare il suo fabbisogno massimo durante l'elaborazione.
- Consente di accogliere tutte le richieste entro un periodo di tempo limitato, fissato a un anno.
- Tutti i processi devono conoscere e dichiarare in anticipo il proprio fabbisogno massimo di risorse.
