5. Potrzebne! <= Roboczy
Jeśli takie i nie istnieje, to wykonujemy krok 4.
6. Wykonujemy:
7. Roboczy := Roboczy + Przydzielone,;
8. Końcowy[i] := true
Tu następuje skok do punktu 2.
9. Jeśli Końcowy [ i]=true dla wszystkich i, to system jest w stanie bezpiecznym.
Niech Zamówienia, oznacza wektor zamówień dla procesu P,. Jeśli Zamówień ia,[j ]=k, to proces P, potrzebuje k egzemplarzy zasobu typu Zj. Kiedy proces P, wykonuje zamówienie, wtedy są podejmowane następujące działania:
1. Jeśli Zamówienia, <= Potrzebne,, to wykonaj krok 2. W przeciwnym razie zgłoś sytuację błędną, ponieważ proces przekroczył deklarowane maksimum.
2. Jeśli Zamówienia, <= Dostępne, to wykonaj krok 3. W przeciwnym razie proces P, musi czekać, ponieważ zasoby są niedostępne.
3. System próbuje przydzielić żądane zasoby procesowi P„ zmieniając stan w następujący sposób:
4. Dostępne := Dostępne - Zamówienia,;
5. Przydzielone, := Przydzielone, + Zamówienia,;
6. Potrzebne, := Potrzebne, - Zamówienia,;
Jeśli stan wynikający z przydziału zasobów jest bezpieczny, to transakcja dochodzi do skutku i proces P, otrzymuje zamawiane zasoby, w przeciwnym przypadku proces musi czekać oraz jest przywracany poprzedni stan przydziału zasobów.
W ćwiczeniu laboratoiyjnym mając do dyspozycji zasoby systemy oraz stan systemu, analizowaliśmy działanie całego algorytmu i naszym celem było uzyskanie ciągu bezpiecznego oraz stanu systemu po wykonaniu algorytmu.