background image

Problem filozofów

Problem filozofów

Kiedy myślący filozof poczuje głód,usiłuje podnieść najpierw lewą, 
a potem prawą pałeczkę. Po zakończonym jedzeniu odkłada pałeczki
z powrotem na stół.

background image

Blokada (pat, zakleszczenie)

Blokada (pat, zakleszczenie)

Przypadek: jednocześnie każdy z filozofów podniósł jedną 

Przypadek: jednocześnie każdy z filozofów podniósł jedną 

pałeczkę i czeka na drugą.

pałeczkę i czeka na drugą.

Skutek: umrą z głodu

Skutek: umrą z głodu

Przykład komputerowy:

Przykład komputerowy:

Jeden proces pisze na drukarce, a drugi na taśmie.

Jeden proces pisze na drukarce, a drugi na taśmie.

W czasie tych operacji pierwszy proces żąda taśmy, a drugi 

W czasie tych operacji pierwszy proces żąda taśmy, a drugi 

-

-

drukarki. Obydwa zaczynają czekanie aż zasób się zwolni.

drukarki. Obydwa zaczynają czekanie aż zasób się zwolni.

W chwili obecnej rzeczywiste systemy operacyjne nie 

W chwili obecnej rzeczywiste systemy operacyjne nie 

rozwiązują jeszcze problemu zakleszczeń, gdyż są one 

rozwiązują jeszcze problemu zakleszczeń, gdyż są one 

stosunkowo rzadkie (i mogą być likwidowane przez 

stosunkowo rzadkie (i mogą być likwidowane przez 

operatora), ale w niedalekiej przyszłości ten problem stanie 

operatora), ale w niedalekiej przyszłości ten problem stanie 

przed WAMI.

przed WAMI.

background image

Blokada -warunki wystąpienia

Blokada -warunki wystąpienia

Do zakleszczenia może dojść, jeśli spełnione są równocześnie 

Do zakleszczenia może dojść, jeśli spełnione są równocześnie 

warunki:

warunki:





wzajemne wykluczanie 

wzajemne wykluczanie 

-

-

co najmniej jeden zasób musi być 

co najmniej jeden zasób musi być 

niepodzielny (w danym czasie może go używać tylko jeden 

niepodzielny (w danym czasie może go używać tylko jeden 

proces)

proces)





Przetrzymywanie i oczekiwanie 

Przetrzymywanie i oczekiwanie 

-

-

przynajmniej jeden 

przynajmniej jeden 

proces przetrzymuje jakiś zasób, ponieważ czeka na 

proces przetrzymuje jakiś zasób, ponieważ czeka na 

przydział dodatkowego innego zasobu, przetrzymywanego 

przydział dodatkowego innego zasobu, przetrzymywanego 

właśnie przez inny proces,

właśnie przez inny proces,





Brak wywłaszczeń 

Brak wywłaszczeń 

-

-

zasób może być zwolniony jedynie z 

zasób może być zwolniony jedynie z 

inicjatywy przetrzymującego, np. po zakończeniu procesu,

inicjatywy przetrzymującego, np. po zakończeniu procesu,





Czekanie cykliczne: P

Czekanie cykliczne: P

1

czeka na zasób przetrzymywany 

czeka na zasób przetrzymywany 

przez P

przez P

2

, P

, P

2

czeka na oddanie przez P

czeka na oddanie przez P

3

... 

... 

P

P

n

czeka na 

czeka na 

zwolnienie zasobu przez P

zwolnienie zasobu przez P

1

background image

Graf przydziału zasobów

Graf przydziału zasobów

P

1

Z

n

Z

3

Z

2

P

n

P

3

- proces n

- zasób n, 3 egzemplarze

- proces P

3

żą

da zasobu Z

3

(krawędź zamówienia)

- proces P

1

trzyma egzemplarz zasobu Z

2

(krawędź przydziału)

background image

Graf przydziału zasobów

Graf przydziału zasobów

P

1

Z

1

Z

3

Z

2

Z

4

P

2

P

3

background image

Graf przydziału zasobów z 

zakleszczeniem

Graf przydziału zasobów z 

zakleszczeniem

P

1

Z

1

Z

3

Z

2

Z

4

P

2

P

3

background image

Warunki wystąpienia zakleszczenia

Warunki wystąpienia zakleszczenia

Z

1





Jeśli graf przydziału zasobów nie ma cykli, to nie ma 

Jeśli graf przydziału zasobów nie ma cykli, to nie ma 

zakleszczenia,

zakleszczenia,





Jeśli zasób każdego typu ma tylko jeden egzemplarz, to 

Jeśli zasób każdego typu ma tylko jeden egzemplarz, to 

istnienie cyklu jest warunkiem koniecznym i dostatecznym 

istnienie cyklu jest warunkiem koniecznym i dostatecznym 

do wystąpienia blokady,

do wystąpienia blokady,





Jeśli istnieje po kilka egzemplarzy zasobu, to istnienie 

Jeśli istnieje po kilka egzemplarzy zasobu, to istnienie 

cyklu  jest jedynie warunkiem koniecznym wystąpienia 

cyklu  jest jedynie warunkiem koniecznym wystąpienia 

blokady

blokady

background image

Metody postępowania z zakleszczeniami

Metody postępowania z zakleszczeniami

Z

1





Stosowanie protokołu gwarantującego, że system nigdy nie 

Stosowanie protokołu gwarantującego, że system nigdy nie 

wejdzie w stan zakleszczenia,

wejdzie w stan zakleszczenia,





Pozwolenie na występowanie zakleszczeń i podjęcie 

Pozwolenie na występowanie zakleszczeń i podjęcie 

stosownych działań po takim fakcie,

stosownych działań po takim fakcie,





Zlekceważenie problemu (np. UNIX) 

Zlekceważenie problemu (np. UNIX) 

-

-

założenie, że 

założenie, że 

zakleszczenia nie pojawiają się.

zakleszczenia nie pojawiają się.

Praktycznie w takich systemach zakleszczenia pojawiają się 

Praktycznie w takich systemach zakleszczenia pojawiają się 

rzadko (np. raz do roku), więc raczej się nie inwestuje w 

rzadko (np. raz do roku), więc raczej się nie inwestuje w 

kosztowne mechanizmy do unikania zakleszczeń lub ich 

kosztowne mechanizmy do unikania zakleszczeń lub ich 

likwidacji, a wykonuje się to ręcznie.

likwidacji, a wykonuje się to ręcznie.

background image

Zapobieganie zakleszczeniom

Zapobieganie zakleszczeniom

Z

1

Trzeba zapewnić, aby nie wystąpił co najmniej jeden z 

Trzeba zapewnić, aby nie wystąpił co najmniej jeden z 

warunków koniecznych:

warunków koniecznych:





Wzajemne wykluczanie 

Wzajemne wykluczanie 

-

-

nie można uniknąć tego 

nie można uniknąć tego 

warunku, gdyż pewne zasoby są z natury niepodzielne, np. 

warunku, gdyż pewne zasoby są z natury niepodzielne, np. 

drukarki,

drukarki,





Przetrzymywanie i oczekiwanie 

Przetrzymywanie i oczekiwanie 

-

-

trzeba zagwarantować, że 

trzeba zagwarantować, że 

gdy proces zamawia jakiś zasób, to nie 

gdy proces zamawia jakiś zasób, to nie 

przetrzymywuje 

przetrzymywuje 

innych zasobów 

innych zasobów 

-

-

proces otrzymuje wszystkie zasoby przed rozpoczęciem 

proces otrzymuje wszystkie zasoby przed rozpoczęciem 

działania,

działania,

-

-

proces może zamówić zasób, jeśli wcześniej oddał 

proces może zamówić zasób, jeśli wcześniej oddał 

wszystkie pozostałe

wszystkie pozostałe

Wada

Wada

-

-

słabe wykorzystanie zasobów, możliwość głodzenia

słabe wykorzystanie zasobów, możliwość głodzenia

background image

Zapobieganie zakleszczeniom, cd.

Zapobieganie zakleszczeniom, cd.

Z

1





Brak wywłaszczeń 

Brak wywłaszczeń 

-

-

trzeba dopuścić, aby nie tylko proces 

trzeba dopuścić, aby nie tylko proces 

mógł zwolnić zasoby

mógł zwolnić zasoby

-

-

jeśli proces nie może dostać żądanego zasobu, to traci 

jeśli proces nie może dostać żądanego zasobu, to traci 

pozostałe i czeka na nie,

pozostałe i czeka na nie,

-

-

jeśli proces zamawia jakieś zasoby, to się sprawdza czy są 

jeśli proces zamawia jakieś zasoby, to się sprawdza czy są 

dostępne

dostępne

jeśli tak, to się je przydziela,

jeśli tak, to się je przydziela,

jeśli zasób jest trzymany przez inny proces, który czeka   

jeśli zasób jest trzymany przez inny proces, który czeka   

na jakieś zasoby, to mu się zasoby odbiera i daje 

na jakieś zasoby, to mu się zasoby odbiera i daje 

zamawiającemu,

zamawiającemu,

w przeciwnym wypadku proces czeka i może utracić swoje 

w przeciwnym wypadku proces czeka i może utracić swoje 

zasoby.

zasoby.

background image

Zapobieganie zakleszczeniom, cd.

Zapobieganie zakleszczeniom, cd.

Z

1





Czekanie cykliczne 

Czekanie cykliczne 

-

-

aby nie wystąpiło, trzeba zasobom 

aby nie wystąpiło, trzeba zasobom 

tego samego typu  nadać liczbowe identyfikatory (np. 

tego samego typu  nadać liczbowe identyfikatory (np. 

taśmy 

taśmy 

-

-

2, drukarki 

2, drukarki 

-

-

5) i trzeba dbać, aby proces zamawiał 

5) i trzeba dbać, aby proces zamawiał 

zasoby w rosnącym porządku numeracji, ewentualnie  aby 

zasoby w rosnącym porządku numeracji, ewentualnie  aby 

zwalniał zasoby o numeracji wyższej od zamawianego.

zwalniał zasoby o numeracji wyższej od zamawianego.

background image

Unikanie zakleszczeń

Unikanie zakleszczeń

Z

1





Każdy proces deklaruje maksymalną liczbę zasobów 

Każdy proces deklaruje maksymalną liczbę zasobów 

danego typu

danego typu





Stan przydziału zasobów jest określony przez liczbę 

Stan przydziału zasobów jest określony przez liczbę 

dostępnych i przydzielonych zasobów oraz przez 

dostępnych i przydzielonych zasobów oraz przez 

maksymalne zapotrzebowanie na zasoby

maksymalne zapotrzebowanie na zasoby





Algorytm unikania zakleszczeń sprawdza stan przydziału 

Algorytm unikania zakleszczeń sprawdza stan przydziału 

zasobów i blokuje niektóre przydziały, aby nie doszło do 

zasobów i blokuje niektóre przydziały, aby nie doszło do 

czekania cyklicznego

czekania cyklicznego

Jeśli porządek przydzielania zasobów procesom jest taki, że 

Jeśli porządek przydzielania zasobów procesom jest taki, że 

nie ma możliwości wystąpienia zakleszczeń, to system jest 

nie ma możliwości wystąpienia zakleszczeń, to system jest 

stanie bezpiecznym

stanie bezpiecznym

background image

Stan bezpieczny

Stan bezpieczny

Z

1

Jeżeli dla każdego procesu 

Jeżeli dla każdego procesu 

P

P

i

i

(spośród P

(spośród P

1

1

..

..

P

P

n

n

) jego 

) jego 

zapotrzebowanie na zasoby może być zaspokojone przez 

zapotrzebowanie na zasoby może być zaspokojone przez 

aktualnie dostępne zasoby, oraz przez zasoby używane 

aktualnie dostępne zasoby, oraz przez zasoby używane 

przez wszystkie procesy 

przez wszystkie procesy 

P

P

j

j

, gdzie j<i, to taki ciąg procesów 

, gdzie j<i, to taki ciąg procesów 

jest 

jest 

bezpieczny.

bezpieczny.





Jeżeli  

Jeżeli  

P

P

i

i

nie ma danej chwili dostępnych wszystkich 

nie ma danej chwili dostępnych wszystkich 

zasobów, to poczeka aż procesy 

zasobów, to poczeka aż procesy 

P

P

skończą działanie i 

skończą działanie i 

oddadzą swoje zasoby 

oddadzą swoje zasoby 

P

P





Po otrzymaniu wszystkich zasobów  proces 

Po otrzymaniu wszystkich zasobów  proces 

P

P

może 

może 

dokończyć pracę i zwolnić zasoby

dokończyć pracę i zwolnić zasoby





Wtedy proces 

Wtedy proces 

P

P

i

i

+1 

+1 

może otrzymać zasoby (jeśli na nie 

może otrzymać zasoby (jeśli na nie 

czekał) itd.

czekał) itd.

background image

Graf przydziału zasobów - analiza 

stanu bezpiecznego

Graf przydziału zasobów - analiza 

stanu bezpiecznego

P

1

Z

1

Z

2

P

2

P

1

P

2

Z

1

Z

2

Stan zagrożenia

background image

Algorytm bankiera

dla wielo-egzemplarzowych zasobów

Algorytm bankiera

dla wielo-egzemplarzowych zasobów

Z

1





Każdy proces wchodzący do systemu musi zadeklarować 

Każdy proces wchodzący do systemu musi zadeklarować 

maksymalną liczbę używanych egzemplarzy każdego 

maksymalną liczbę używanych egzemplarzy każdego 

zasobu, a liczba ta musi być nie większa od całkowitych 

zasobu, a liczba ta musi być nie większa od całkowitych 

zasobów w systemie

zasobów w systemie





System decyduje, czy przydział tych zasobów pozostawi 

System decyduje, czy przydział tych zasobów pozostawi 

stan bezpieczny

stan bezpieczny





Jeśli tak, to przydziela. Jeśli nie 

Jeśli tak, to przydziela. Jeśli nie 

-

-

to proces musi poczekać 

to proces musi poczekać 

na zwolnienie zasobów przez inne procesy

na zwolnienie zasobów przez inne procesy





Jeśli proces uzyska potrzebne zasoby, to musi je zwrócić w 

Jeśli proces uzyska potrzebne zasoby, to musi je zwrócić w 

skończonym czasie.

skończonym czasie.

background image

Wykrywanie zakleszczeń

Wykrywanie zakleszczeń

Z

1

Jeśli nie unikamy zakleszczeń to w systemie muszą istnieć:

Jeśli nie unikamy zakleszczeń to w systemie muszą istnieć:

a) Algorytmy wykrywania zakleszczenia

a) Algorytmy wykrywania zakleszczenia

b) Algorytmy likwidowania zakleszczenia

b) Algorytmy likwidowania zakleszczenia

ad. a): Tworzy się graf oczekiwania i okresowo wykonuje 

ad. a): Tworzy się graf oczekiwania i okresowo wykonuje 

algorytm poszukiwania cykli w tym grafie

algorytm poszukiwania cykli w tym grafie

ad. b): 

ad. b): 

-

-

Usunięcie wszystkich zakleszczonych procesów lub

Usunięcie wszystkich zakleszczonych procesów lub

-

-

Usuwanie procesów pojedynczo aż do

Usuwanie procesów pojedynczo aż do

wyeliminowania cyklu zakleszczenia

wyeliminowania cyklu zakleszczenia

Kryteria wyboru ofiary:

Kryteria wyboru ofiary:

1. Priorytet 2. Czas wykonywania i pozostały do zakończenia,

1. Priorytet 2. Czas wykonywania i pozostały do zakończenia,

3. Liczba i typ zasobów trzymanych przez proces, 4. Liczba 

3. Liczba i typ zasobów trzymanych przez proces, 4. Liczba 

procesów które trzeba będzie przerwać, 5. Proces 

procesów które trzeba będzie przerwać, 5. Proces 

interakcyjny czy wsadowy

interakcyjny czy wsadowy

background image

Wywłaszczanie

Wywłaszczanie

Z

1





Wybierając

Wybierając ofiarę

do wywłaszczenia trzeba mieć na 

do wywłaszczenia trzeba mieć na 

uwadze minimalizację kosztów 

uwadze minimalizację kosztów 

-

-

ile zasobów odzyskamy, a 

ile zasobów odzyskamy, a 

ile pracy procesu stracimy

ile pracy procesu stracimy



Wycofanie

(o ile to możliwe) procesu do bezpiecznego 

(o ile to możliwe) procesu do bezpiecznego 

punktu, od którego może wznowić działanie 

punktu, od którego może wznowić działanie 



Głodzenie

to w tym wypadku wywłaszczanie ciągle tego 

to w tym wypadku wywłaszczanie ciągle tego 

samego procesu. Algorytm powinien więc zapewniać, że 

samego procesu. Algorytm powinien więc zapewniać, że 

proces będzie ofiarą tylko skończoną ilość razy.

proces będzie ofiarą tylko skończoną ilość razy.

background image

Mieszane metody unikania impasu

Mieszane metody unikania impasu

Z

1





zapobieganie

zapobieganie





unikanie

unikanie





wykrywanie

wykrywanie

Jeżeli podzielimy zasoby na różne klasy, np.

Jeżeli podzielimy zasoby na różne klasy, np.

a) zasoby wewnętrzne, zużywane przez system,

a) zasoby wewnętrzne, zużywane przez system,

np 

np 

bloki 

bloki 

kontrolne procesów,

kontrolne procesów,

b) pamięć główna,

b) pamięć główna,

c) zasoby zadania, np. przydzielone urządzenia, pliki

c) zasoby zadania, np. przydzielone urządzenia, pliki

d) wymienny obszar pamięci 

d) wymienny obszar pamięci 

-

-

obszar w pamięci pomocniczej, 

obszar w pamięci pomocniczej, 

przeznaczony na poszczególne zadania użytkowników 

przeznaczony na poszczególne zadania użytkowników 

to do każdej z klas można stosować inne metody rozwiązania 

to do każdej z klas można stosować inne metody rozwiązania 

problemu zakleszczeń.

problemu zakleszczeń.

background image

Mieszane metody unikania impasu

Mieszane metody unikania impasu

Z

1

Ad a): poprzez porządkowanie zasobów 

Ad a): poprzez porządkowanie zasobów 

-

-

nie trzeba 

nie trzeba 

dokonywać wyborów między realizowanymi zadaniami

dokonywać wyborów między realizowanymi zadaniami

Ad b): ponieważ można wysłać obraz zadania do pamięci 

Ad b): ponieważ można wysłać obraz zadania do pamięci 

pomocniczej, pozwala to na wywłaszczenie procesów z 

pomocniczej, pozwala to na wywłaszczenie procesów z 

pamięci głównej

pamięci głównej

Ad c): poprzez taktykę unikania zakleszczeń, bazując na 

Ad c): poprzez taktykę unikania zakleszczeń, bazując na 

informacjach z kart sterujących zadania

informacjach z kart sterujących zadania

Ad d): można zastosować wstępny przydział pamięci, gdyż 

Ad d): można zastosować wstępny przydział pamięci, gdyż 

maksymalne zapotrzebowanie każdego procesu na pamięć 

maksymalne zapotrzebowanie każdego procesu na pamięć 

jest znane.

jest znane.