SO-1st-2.3-w14.tresc-1.0-Slajd21
Przykład stanu i ciągu bezpiecznego
Z maksymalnego zapotrzebowania oraz bieżącego przydziału wynika, że proces P1 może zażądać jeszcze 5 jednostek (deklaruje 10, a 5 już ma), proces P2 może zażądać jeszcze 2 jednostek, a proces P3 jeszcze 7 jednostek. Do rozdysponowania pozostały jeszcze 3 jednostki, gdyż 9 zostało przydzielonych (5+2+2). W wariancie pesymistycznym żądań zasobowych te 3 wolne jednostki wystarczą dla procesu P2 . Po zakończeniu P2 odzyskane zostaną przydzielone mu jednostki, łącznie będzie więc 5 wolnych jednostek. Taka liczba jednostek będzie wystarczająca dla P1 , a po odzyskaniu przydzielonych mu jednostek ich liczba wzrośnie do 10. Oczywiście uwzględniając ograniczenia na wielkość zamówień, uzyskane jednostki muszą być wystarczające dla P3 . Ciąg bezpieczny to P2 , P1 , P3 .
Po zrealizowaniu żądania procesu P3 stan systemu jest następujący:
- P1 ma przydzielone 5 jednostek, może potrzebować jeszcze 5,
- P2 ma przydzielone 2 jednostki, może potrzebować jeszcze 2,
- P3 ma przydzielone 3 jednostki, może potrzebować jeszcze 3.
W systemie pozostały 2 wolne jednostki, którymi można zaspokoić potencjalne potrzeby procesu P2 . Po zakończeniu P2 liczba jednostek do rozdysponowania zwiększy się do 4, ale może się to okazać niewystarczające zarówno dla P1 , jak i dla P3 . Gdyby któryś z nich zażądał więcej niż 4 jednostek (co jest zgodne z ich deklaracjami), doszłoby do zakleszczenia. Zrealizowanie żądania procesu P2 wprowadza system w stan niebezpieczny. Stan ten nie oznacza jednak jeszcze zakleszczenia — jest to dopiero zagrożenie. Przy sprzyjającym zbiegu okoliczności (sprzyjającej sekwencji żądań) zakleszczenia można uniknąć.