Algorytm Bankiera w Operasystem tingowy [Przykład]
⚡ Inteligentne podsumowanie
Algorytm Bankera to metoda unikania zakleszczeń, która sprawdza, czy przydzielanie zasobów utrzymuje system w bezpiecznym stanie. Nazwany na cześć bankowości, algorytm ten akceptuje żądanie tylko wtedy, gdy dostępne są wystarczające zasoby, aby obsłużyć wszystkie procesy.
Co to jest algorytm bankiera?
Algorytm bankiera jest używany głównie w systemie bankowym, aby uniknąć impas. Pomaga określić, czy pożyczka zostanie przyznana, czy nie.
Algorytm ten służy do testowania bezpiecznej symulacji alokacji w celu określenia maksymalnej ilości dostępnej dla wszystkich zasobów. Sprawdza również wszystkie możliwe działania przed podjęciem decyzji, czy alokacja powinna być kontynuowana, czy nie.
Na przykład, w określonym banku jest X właścicieli kont, a łączna kwota pieniędzy na ich kontach wynosi G.
Gdy bank przetwarza pożyczkę na samochód, system oprogramowania podrzędnegotrackwota pożyczki udzielonej na zakup samochodu z całkowitej sumy pieniędzy (G + Lokata terminowa + Miesięczny Program Dochodowy + Złoto itp.) jakimi dysponuje bank.
Kredyt samochodowy zostanie udzielony tylko wtedy, gdy pozostała kwota przekracza kwotę G, co oznacza, że wszyscy posiadacze konta mogą wypłacić G w dowolnym momencie.
Notacje algorytmu bankiera
Oto kilka ważnych oznaczeń stosowanych w algorytmie bankiera:
- X: Wskazuje całkowitą liczbę procesów w systemie.
- Y: Wskazuje całkowitą liczbę zasobów obecnych w systemie.
Dostępny
[1:Y] wskazuje, ile wystąpień każdego typu zasobu jest dostępnych.
Max
[1:X, 1:Y]: Wyraża maksymalną liczbę zasobów typu j, o które może poprosić proces i.
Przydział
[1:X, 1:Y]: wskazuje zasoby typu j aktualnie przydzielone procesowi i.
Potrzebować
Określa, ile jeszcze zasobów każdego typu procesu i jest potrzebnych do ukończenia zadania.
Przykład algorytmu Bankera
Załóżmy, że dysponujemy następującymi zasobami:
- 5 pendrive’ów
- 2 drukarki
- 4 skanery
- 3 dyski twarde
Tutaj stworzyliśmy wektor reprezentujący całkowite zasoby: Dostępne = (5, 2, 4, 3).
Załóżmy, że istnieją cztery procesy. Dostępne zasoby zostały już przydzielone zgodnie z poniższą tabelą macierzową.
| Nazwa procesu | Pendrive'y | Drukarka | Scanner | dysk twardy |
|---|---|---|---|---|
| P | 2 | 0 | 1 | 1 |
| Q | 0 | 1 | 0 | 0 |
| R | 1 | 0 | 1 | 1 |
| S | 1 | 1 | 0 | 1 |
| Cena produktu z VAT: | 4 | 2 | 2 | 3 |
W tym przypadku przydzielone zasoby są sumą tych kolumn:
Przydzielone = (4, 2, 2, 3).
Tworzymy również matrycę wyświetlającą liczbę każdego zasobu wymaganego dla wszystkich procesów. Ta macierz nazywa się Potrzebować = (3, 0, 2, 2).
| Nazwa procesu | Pendrive'y | Drukarka | Scanner | dysk twardy |
|---|---|---|---|---|
| P | 1 | 1 | 0 | 0 |
| Q | 0 | 1 | 1 | 2 |
| R | 2 | 1 | 0 | 0 |
| S | 0 | 0 | 1 | 0 |
Dostępny wektor będzie następujący:
Dostępny = Dostępny – Przydzielony
= (5, 2, 4, 3) – (4, 2, 2, 3)
= (1, 0, 2, 0)
Algorytm żądania zasobów
Algorytm żądania zasobów umożliwia przedstawienie zachowania systemu w sytuacji, gdy określony proces zgłasza żądanie zasobu.
Zrozumiemy to w następujących krokach:
Krok 1) Jeśli łączna liczba żądanych wystąpień wszystkich zasobów jest mniejsza od procesu, przejdź do kroku 2.
Krok 2) Gdy żądana liczba wystąpień każdego typu zasobu jest mniejsza niż liczba dostępnych zasobów każdego typu, proces przechodzi do następnego kroku. W przeciwnym razie proces musi poczekać z powodu braku wystarczających zasobów.
Krok 3) Zasób jest przydzielany w sposób pokazany w poniższym pseudokodzie.
Available = Available – Request (y) Allocation(x) = Allocation(x) + Request(x) Need(x) = Need(x) - Request(x)
Ten ostatni krok wykonuje się, ponieważ system musi założyć, że zasoby zostały już przydzielone, więc po przydzieleniu dostępnych jest mniej zasobów.
Charakterystyka algorytmu Bankera
Oto najważniejsze cechy algorytmu bankiera:
- Przechowuje wiele zasobów, które spełniają wymagania co najmniej jednego klienta.
- Ilekroć proces otrzymuje wszystkie swoje zasoby, musi je zwrócić w ograniczonym czasie.
- Gdy proces zażąda zasobu, może zaistnieć konieczność oczekiwania.
- System ma ograniczoną liczbę zasobów.
- Oferuje zaawansowaną funkcję umożliwiającą maksymalne rozdysponowanie zasobów.
Wady algorytmu Bankera
Oto wady/wady korzystania z algorytmu bankiera:
- Nie pozwala procesowi zmienić swojego maksymalnego zapotrzebowania w trakcie przetwarzania.
- Umożliwia ona rozpatrzenie wszystkich wniosków w ograniczonym czasie, ale rok jest w tym przypadku okresem stałym.
- Wszystkie procesy muszą z wyprzedzeniem znać i określać swoje maksymalne zapotrzebowanie na zasoby.

