12.07.2015 Views

Spis treœci - Patrz

Spis treœci - Patrz

Spis treœci - Patrz

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Zjawisko blokady, zwane także zastojem, zakleszczeniem lub martwym punktem, jestprzejawem braku bezpieczeństwa programu, jest to bowiem stan niepożądany. Zjawisko tomoże wystąpić również w systemie złożonym z procesów, które są powiązane jedynie przezto, że korzystają z tych samych zasobów komputera. W teorii systemów operacyjnychdopracowano się kilku sposobów walki z blokadą. Jednym z nich jest tzw. algorytm bankierabędący przedmiotem zadania 4.3.11. O innych sposobach zapobiegania blokadzie iprzełamywania jej można dowiedzieć się m.in. z książek [MaDo83, Shaw79, BiSh89,S1PG91]. O przykładach blokad spoza dziedziny systemów operacyjnych można przeczytać wartykule [WeisOla].Zauważmy, że jeśli w jakimś programie współbieżnym może wystąpić blokada, nieoznacza to, że wystąpi ona przy każdym wykonaniu tego programu. Dlatego testowanie niejest dobrą metodą stwierdzania, czy dany zbiór procesów może się zablokować. Wpodawanych tu zadaniach i rozwiązaniach będziemy zwracali szczególną, uwagę namożliwość wystąpienia blokady i potrzebę odpowiednich przed nią zabezpieczeń (por. 5.3.5,5.3.6).Czasami unikanie blokady może być bardzo kosztowne. Jeśli jej wystąpienie jest małoprawdopodobne, lepiej godzić się na nią, ale trzeba wówczas uruchomić mechanizmy jejwykrywanie i usuwania.2.5.2 ZagłodzenieSpecyficznym przypadkiem nieskończonego wstrzymywania procesu jest zjawiskozagłodzenia zwane także wykluczeniem. Jeśli komunikat lub sygnał synchronizacyjny możebyć odebrany tylko przez jeden z czekających nań procesów, powstaje problem, który zprocesów wybrać. Zjawisko zagłodzenia występuje wówczas, gdy proces nie zostajewznowiony, mimo że zdarzenie, na które czeka, występuje dowolną liczbę razy. Za każdymrazem, gdy proces ten mógłby być wznowiony, jest wybierany jakiś inny czekający proces.Zagłodzenie jest przejawem braku żywotności programu. Zależy ono od strategiiwznawiania procesów. Jeśli procesy będą wznawiane zawsze w kolejności, w jakiej zostaływstrzymane (kolejka prosta), to zjawisko zagłodzenia nie wystąpi. Jeśli jednak o kolejnościwznawiania decydują priorytety procesów (kolejka priorytetowa), to jest możliwe, że procesy oniższym priorytecie zostaną zagłodzone przez procesy o wyższym priorytecie.O ile istnieją algorytmy pozwalające wykrywać zjawisko blokady w trakcie wykonywaniaprogramu, o tyle wykrycie zagłodzenia jest praktycznie niemożliwe. Łatwo, co prawdazaobserwować, że pewien proces czeka bardzo długo na jakieś zdarzenie, które wystąpiło jużwiele razy, ale nie wiadomo, jak system zachowa się w przyszłości. Można natomiastwykazać, że w programie współbieżnym jest możliwe zagłodzenie, przez pokazanienieskończonego ciągu zdarzeń w tym programie, w wyniku którego jeden proces (lub więcej)pozostanie na zawsze wstrzymany. (Przykład takiego dowodu znajduje się w książce [Hare92,r.10].)Mimo że możliwość zagłodzenia świadczy o niepoprawności programu, to częstogotowi jesteśmy się z nią pogodzić. (Robimy tak np. wszędzie tam, gdzie stosuje się kolejkępriorytetową.) Wynika to z faktu, że zagłodzenie jest zwykle mało prawdopodobne. (Mało jestnp. prawdopodobne, by na miasto wyjechało naraz tyle karetek, aby wstrzymać ruchwszystkich innych pojazdów). Dlatego i w tej książce będziemy przytaczać rozwiązania, którew bardzo szczególnych okolicznościach mogą spowodować zagłodzenie pewnych procesów,a które warto jednak rozważać ze względu na ich prostotę (por. 3.4.2, 4.2.3, 4.2.4).19

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!