J. Ułasiewicz Programowanie aplikacji współbieżnych 1

Podobne dokumenty
J. Ułasiewicz Programowanie aplikacji współbieżnych 1

Gdy kilka procesów czyta a przynajmniej jeden dokonuje zapisu wynik odczytu zależeć może od sposobu realizacji przeplotu.

Porządek dostępu do zasobu: procesory obszary pamięci cykle procesora pliki urządzenia we/wy

Systemy operacyjne. wykład 11- Zakleszczenia. dr Marcin Ziółkowski. Instytut Matematyki i Informatyki Akademia im. Jana Długosza w Częstochowie

Przeplot. Synchronizacja procesów. Cel i metody synchronizacji procesów. Wątki współbieżne

Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1

Synchronizacja procesów i wątków

Programowanie współbieżne Wykład 10 Synchronizacja dostępu do współdzielonych zasobów. Iwona Kochańska

SOP2 - semafory. grudzień

Problem zakleszczenia

Synchronizacja procesów

Programowanie współbieżne Wykład 5. Rafał Skinderowicz

WYKŁAD 4 SEMAPHORES (CIĄG DALSZY) Przykład 6 Problem czytelników i pisarzy. Wykład 4 strona 1/24

Programowanie Równoległe i Rozproszone

Zakleszczenie. Problem i przeciwdziałanie. Systemy operacyjne Wykład 8 1

Klasyczne problemy współbieżności. Problem producenta i konsumenta Problem czytelników i pisarzy Problem pięciu filozofów

Systemy operacyjne III

Problemy czytelników i pisarzy oraz 5 ucztujących filozofów

Wykład 4. Synchronizacja procesów (i wątków) cześć I. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Ingerencja w kod systemu operacyjnego (przerwania) Programowanie na niskim poziomie (instrukcje specjalne) Trudności implementacyjne (alg.

Wzajemne wykluczanie i zakleszczenie

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd

Problem zakleszczenia. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Problemy współbieżności

POTRZEBY A B C D E P P P P P

Programowanie wspóªbie»ne

Sortowanie topologiczne skierowanych grafów acyklicznych

Algorytmy zarządzania współbieżnym wykonywaniem transakcji część I

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Semafory. // G - globalna dla wszystkich. // Wada - aktywne oczekiwanie Test_and_Set(Li); exit when Li = 0; end loop sekcja_krytyczna(i); G := 0;

Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego Łódź. Java podstawy języka, wykład 4 1

Mechanizmy komunikacji. spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix)

Wzmianka o zakleszczeniu (ang. deadlock, inne tłumaczenia: blokada, impas, zastój) pojawiła się przy okazji synchronizacji procesów.

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

Elekcja, wzajemne wykluczanie i zakleszczenie

Przeciwdziałanie zakleszczeniu. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

UNIKANIE IMPASÓW W SYSTEMACH PROCESÓW WSPÓŁBIEŻNYCH

Monitory. Jarosław Kuchta

Wykład 4. Synchronizacja procesów (i wątków) cześć I. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Detekcja zakleszczenia (1)

Programowanie wielowątkowe. Tomasz Borzyszkowski

Mechanizmy pracy równoległej. Jarosław Kuchta

Programowanie współbieżne Wykład 7. Iwona Kochaoska

4. Procesy pojęcia podstawowe

Materiały pomocnicze 1

Współbieżność w środowisku Java

Semafory. - aktywne oczekiwanie =GRGDWNRZ\PZVSDUFLHPVSU]WRZ\P 6SHFMDOQDLQVWUXNFMDPDV]\QRZDUHDOL]XMFDDWRPRZ\]DSLVL odczyt, np.

synchronizacji procesów

* Wymień typowe standardy sygnałów procesowych: - analogowy - dwustanowe

synchronizacji procesów

Program jest więc strukturą statyczną zapisaną na jakimś nośniku. Natomiast proces jest wykonującym się programem.

4. Procesy pojęcia podstawowe

10. Synchronizacja użycia zasobów, Semafory

WOJSKOWA AKADEMIA TECHNICZNA WYDZIAŁ CYBERNETYKI

Przykładowe rozwiązania

Nazwa Wydziału Nazwa jednostki prowadzącej moduł Nazwa modułu kształcenia Kod modułu Język kształcenia Efekty kształcenia dla modułu kształcenia

Programowanie współbieżne Wykład 9 Synchronizacja dostępu do współdzielonych zasobów. Iwona Kochańska

Systemy operacyjne. Zajęcia 11. Monitory

1. Działania na procesach

Programowanie współbieżne Wykład 4. Rafał Skinderowicz

Systemy Czasu Rzeczywistego (SCR)

Systemy Operacyjne synchronizacja i komunikacja procesów

4. Procesy pojęcia podstawowe

Wprowadzenie do programowania współbieżnego

1. Liczby i w zapisie zmiennoprzecinkowym przedstawia się następująco

Języki i Techniki Programowania II. Wykład 7. Współbieżność 1

Zarządzanie w systemach i sieciach komputerowych. Dr inż. Robert Wójcik

Klasyczne problemy synchronizacji

1 Podstawowe definicje i pojęcia współbieżności

Przykładowe zadanie z unikania blokad.

Synchronizacja procesów

Plan wykładu. Przykład. Wprowadzenie BAZY DANYCH. Transakcje Hurtownie danych

5. Model komunikujących się procesów, komunikaty

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd

3. Instrukcje warunkowe

jest scharakteryzowane przez: wektor maksymalnych żądań (ang. claims), T oznaczający maksymalne żądanie zasobowe zadania P j

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

Mogą pracować w środowisku: Scentralizowanym -mikrokontroler Rozproszonym sieć sterująca, systemy hierarchiczne. Komunikacja z syst.

Równoległość i współbieżność

Równoległość i współbieżność

Programowanie współbieżne Zadanie 5 - Podstawowe problemy programowania współbieżnego

Współczesne aplikacje sterowania i akwizycji danych są zbiorem komunikujących się wątków lub procesów współbieżnych.

Programowanie współbieżne i równoległe. dr inż. Marcin Wilczewski 2013

Lock Manager Deadlock Źródła Jak starczy czasu. Dreadlocks. Konrad Błachnio MIMUW 19 maja 2010

9. Problem wzajemnego wykluczania i sekcji krytycznej

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Zaawansowane programowanie w C++ (PCP)

10. Synchronizacja użycia zasobów, Semafory

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

Synchronizacja procesów

Blokady. Model systemu. Charakterystyka blokady

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Programowanie wspóªbie»ne

Koordynacja procesów w środowisku rozproszonym

Program współbieżny jest zbiorem sekwencyjnych PROGRAMOWANIE C++

Transkrypt:

J. Ułasiewicz Programowanie aplikacji współbieżnych 1 1 1.1 Prosty przykład zakleszczenia (ang. Mexican standoff) W systemach w których wykonywane jest wiele współbieżnych procesów które operują na wspólnych zasobach może dojść do niezamierzonego wstrzymania pracy pewnych procesów. Mówi się że procesy mogą ulec zakleszczeniu. Procesy i aby wykonać swoje zadania potrzebują zasobów i. Proces najpierw próbuje zająć zasób a następnie zasób. Proces najpierw próbuje zająć zasób a następnie zasób. Zasoby te zabezpieczone są semaforami S1 i S2. sem_type S1, S1; Proces1(void){ do {... sem_wait(s1); // Zamówienie zasobu sem_wait(s2); // Zamówienie zasobu uzycie(s1,s2); // Użycie zasobów i sem_post(s2); // Zwolnienie zasobu sem_post(s1); // Zwolnienie zasobu while(1); Proces2(void) { do {... sem_wait(s2); sem_wait(s1); uzycie(s1,s2); sem_post(s1); sem_post(s2); while(1); // Zamówienie zasobu // Zamówienie zasobu // Użycie zasobów i // Zwolnienie zasobu // Zwolnienie zasobu main(void) { // Inicjacja semaforów na 1 sem_init(s1,1) sem_init(s2,1) // Utworzenie wątków i

J. Ułasiewicz Programowanie aplikacji współbieżnych 2 Przykład 1-1 Zastój meksykański przykład systemu w którym może dojść do zakleszczenia Proces Proces WAIT(S1) Gotowy WAIT(S2) WAIT(S1) WAIT(S2) zablokowany zablokowany Rys. 1-1 Przykład zakleszczenia procesów i Rys. 1-2 Sieć Petriego ilustrująca zakleszczenie - zastój meksykański Model systemu System składa się z : 1. Skończonej liczby zasobów Z = {Z 1, Z 2,...Z n, każdy z zasobów może wystąpić w pewnej liczbie egzemplarzy 2. Pewnej liczby procesów P = {P 1, P 2,...,P m które do wykonania swych zadań potrzebują zasobów Z.

J. Ułasiewicz Programowanie aplikacji współbieżnych 3 P3 P4 Procesy Z3 Z4 Z5 Zasoby Rys. 1-3 Model zasobów i procesów Proces korzysta z zasobów w następujący sposób: 1. Zamawia dany zasób. Gdy zasób nie jest dostępny proces może być zmuszony do oczekiwania na zasób. 2. Używa danego zasobu. W tym czasie zasób nie jest dostępny dla innych procesów. 3. Zwalnia zasób. Zamówienie i zwolnienie zasobu odbywa się to poprzez wykonanie pewnej funkcji systemowej (np. semaforowej). Definicja zakleszczenia Zbiór procesów jest w stanie zakleszczenia jeżeli każdy proces z tego zbioru czeka na zdarzenie które może być spowodowane tylko przez inny proces z tego samego zbioru.

J. Ułasiewicz Programowanie aplikacji współbieżnych 4 Graf przydziału zasobów Do analizy systemów mogących wejść w stan zakleszczenia stosuje się grafy przydziału zasobów. W grafie tym występują dwa rodzaje wierzchołków. 1. Pierwszy rodzaj odpowiada procesom P reprezentowanym jako kółka. 2. Drugi rodzaj wierzchołków odpowiada zasobom Z reprezentowanym jako kwadraty. Łuki grafu reprezentują zależności pomiędzy procesami i zasobami. 1. Łuk biegnący od procesu P do zasobu Z oznacza że proces P jest zablokowany w oczekiwaniu na zasób Z. 2. Łuk biegnący od zasobu Z do procesu P oznacza że zasób Z jest zajęty przez proces P. Proces Zasób P Z Proces P czeka na zasób Z Z P Zasób Z zajęty przez proces P Rys. 1-4 Węzły i łuki w grafie przydziału zasobów. Gdy proces oczekiwał na zasób i zasób ten został przydzielony to kierunek łuku (od procesu do zasobu) się zmienia na przeciwny (od zasobu do procesu).

J. Ułasiewicz Programowanie aplikacji współbieżnych 5 Analiza zastoju meksykańskiego przy wykorzystaniu grafu przydziału zasobów. Krok 1 Proces zajmuje zasób. Sterowanie przekazane zostaje do procesu. Krok 2 Proces zajmuje zasób. Krok 3 Proces żąda zasobu. Zasób jest zajęty więc proces blokuje się w oczekiwaniu na zasób. Krok 4 Proces żąda zasobu. Zasób jest zajęty więc proces blokuje się w oczekiwaniu na zasób. Procesy i wchodzą w stan zakleszczenia. Tab. 1 Kroki działania procesów i prowadzące do zakleszczenia. Krok 1 Krok 2 Krok 3 Krok 4 Rys. 1-5 Ilustracja etapów zakleszczenia przy pomocy grafu przydziału zasobów

J. Ułasiewicz Programowanie aplikacji współbieżnych 6 Problem pięciu ucztujących filozofów Przy okrągłym stole siedzi pięciu filozofów. Zajmują się oni naprzemiennie tylko dwoma czynnościami - myśleniem i jedzeniem. Do jedzenia filozof potrzebuje dwu widelców. Gdy filozof otrzyma dwa widelce je, a następnie odkłada obydwa widelce. Problem polega na takim zorganizowaniu pracy filozofów aby spełnione były warunki: Filozof je wtedy gdy zdobędzie dwa widelce. Dwu filozofów nie może trzymać tego samego widelca. Każdy z filozofów musi się w końcu najeść (nie zostanie zagłodzony). Dodatkowym wymaganiem jest efektywność rozwiązania. Znaczy to że nie należy blokować aktywności filozofa gdy nie jest to konieczne dla spełnienia poprzednich warunków. F1 F2 F5 F4 F3 Rys. 1-6 Ilustracja problemu pięciu ucztujących filozofów A. Rozwiązanie z możliwością blokady: 1. Filozof czeka aż będzie wolny lewy widelec i podnosi go. 2. Filozof czeka aż będzie wolny prawy widelec i podnosi go. 3. Filozof je. 4. Filozof odkłada obydwa widelce. 5. Filozof myśli.

J. Ułasiewicz Programowanie aplikacji współbieżnych 7 Jeżeli w pewnej chwili każdy z filozofów podniesie lewy widelec i będzie czekał na prawy nigdy go nie otrzyma gdyż algorytm przewiduje zwolnienie widelców po zakończeniu jedzenia. Nastąpi zakleszczenie. Rys. 1-7 Sieć Petriego dla problemu pięciu filozofów filozof może podnieść prawy lub lewy widelec Wynik 1-1 Wynik analizy sieci Petriego filozof może podnieść prawy lub lewy widelec B. Rozwiązanie z możliwością zagłodzenia: 1. Filozof czeka aż będą wolne oba widelce i podnosi je (musi to być operacja niepodzielna). 2. Filozof je. 3. Filozof odkłada obydwa widelce. 4. Filozof myśli. Może się tak zdarzyć że filozof będzie miał bardzo żarłocznych sąsiadów z których w każdej chwili jeden z nich je. W takim przypadku filozof zostanie zagłodzony.

J. Ułasiewicz Programowanie aplikacji współbieżnych 8 Rys. 1-8 Sieć Petriego dla problemu pięciu filozofów filozof może podnieść tylko obydwa widelce naraz Wynik 1-2 Wynik analizy sieci Petriego filozof może podnieść tylko obydwa widelce naraz

J. Ułasiewicz Programowanie aplikacji współbieżnych 9 C. Rozwiązanie poprawne 1. Potrzebny jest arbiter zewnętrzny (nazywany lokajem) który dba o to aby jednej chwili najwyżej czterech filozofów konkurowało o widelce. 2. Dalej postępujemy jak w przypadku A. Semaphore Widelec[5]; // Tablica pięciu semaforów Semaphore Lokaj; // Semafor reprezentujący lokaja // Kod wątku filozofa i, i=0,1,2,3,4 Filozof(int i){ do { // Myślenie sem_wait(lokaj); // Dopuszczenie najwyżej 4 procesów sem_wait(widelec[i]); // Czekaj na widelec lewy sem_wait(widelec[(i+1)%5]);// Czekaj na widelec prawy // Jedzenie sem_post(widelec[(i+1)%5]); // Oddaj widelec prawy sem_post(widelec[i]); // Oddaj na widelec lewy sem_post(lokaj); while(1); main(void) { int i; for(i=0;i<5;i++) { // Inicjacja semaforów widelec sem_init(widelec[i],1); sem_init(lokaj,4); for(i=0;i<5;i++) { // Utworzenie wątków odpowiadających filozofom... Przykład 1-2 Rozwiązanie problemu pięciu filozofów za pomocą semaforów

J. Ułasiewicz Programowanie aplikacji współbieżnych 10 D. Rozwiązanie z monitorem (Ben Ari) MONITOR zastawa { int widelec[5]; // Liczba widelców dostępna dla fil. i CONDITION warunek[5]; // Zmienna warunkowa void wez(int i) { if (widelec[i]!= 2) Wait(warunek[i]); widelec[(i+1) %5]--; widelec[(i-1) %5]--; void zwroc(int i) { widelec[(i+1) %5]++; widelec[(i-1) %5]++; if(widelec[(i+1)%5] == 2) Signal(warunek[(i+1%5]); if(widelec[(i-1)%5] == 2) Signal(warunek[(i-1%5]); // monitor void filozof(int i) { while(1) { // Myslenie wez(i); // Jedzenie zwroc(i); main { for(i=0;i<5;i++) widelec[i] = 2;... Przykład 1-3 Rozwiązanie problemu pięciu filozofów za pomocą monitora

J. Ułasiewicz Programowanie aplikacji współbieżnych 11 Warunki Cofmanna Warunki konieczne zakleszczenia podane zostały przez Coffmana. Do zakleszczenia może dochodzić gdy spełnione są jednocześnie cztery warunki: 1. Wzajemne wykluczanie (ang. Mutual exclusion condition ) Każdy z zasobów jest albo wolny albo zajęty przez dokładnie jeden proces. 2. Przetrzymywanie i oczekiwanie (ang. Wait and hold condition) Proces posiadający jakiś zasób może żądać innego zasobu. 3. Brak wywłaszczeń (ang. No prememption condition) Zasoby nie podlegają wywłaszczeniu, czyli zasób zajęty przez jakiś proces może być zwolniony tylko przez ten proces. 4. Czekanie cykliczne (ang. Circular wait condition) Musi istnieć zamknięty łańcuch procesów P = {P 1, P 2,...,P m w którym Pi czeka na zasób zajęty przez Pi+1 dla i=1,m-1 oraz Pm czeka na na zasób zajęty przez. Z4 P4 Z3 P3 Rys. 1-9 Graf przydziału zasobów dla przypadku czekania cyklicznego

J. Ułasiewicz Programowanie aplikacji współbieżnych 12 Metody postępowania z zakleszczeniami 1. Zignorowanie problemu - nie zajmować się problemami zakleszczeń na poziomie systemu operacyjnego 2. Zapobieganie zakleszczeniom (ang. deadlock prevention) - stosować taki protokół zamawiania zasobów aby któryś z warunków Coffmana nie był spełniony i tym samym nie doszło do zakleszczenia. 3. Unikanie zakleszczeń (ang. deadlock avoidance) - stosować taki protokół zamawiania zasobów aby liczba liczba wolnych zasobów zawsze umożliwiała zakończenie rozpoczętych zadań. 4. Dopuszczać do możliwości zakleszczenia ale wykrywać je a następnie usuwać. Zapobieganie zakleszceniom Zapobieganie zakleszceniom (ang. deadlock prevention) opiera się na niedopuszczeniu do spełnienia jednego z warunków Coffmana. Negacja warunku wzajemnego wykluczania Nie jest możliwe uniknięcie tego warunku gdyż pewne zasoby są z natury niepodzielne. Negacja warunku przetrzymywania i oczekiwania Podejście polega na unikaniu sytuacji gdy proces posiadający już zasoby zamawia inne zasoby. 1. Proces może zająć zasoby tylko wtedy gdy wszystkie z nich może otrzymać. 2. Proces może zamówić jakieś zasoby tylko wtedy gdy nie posiada zajętych innych zasobów. Strategia nazywa się wszystko albo nic (ang. One-shot allocation). Zastosowanie strategii wszystko albo nic do problemu 5-ciu filozofów: Filozof może otrzymać albo dwa widelce albo żadnego. Filozof 1 i 3 otrzymują widelce reszta czeka. Rozwiązanie nie powoduje zakleszczenia ale może prowadzić do zagłodzenia.

J. Ułasiewicz Programowanie aplikacji współbieżnych 13 Wady: 1. Małe wykorzystanie zasobów gdyż być może nie wszystkie naraz są potrzebne do wykonania zadania. 2. Możliwość zagłodzenia pewnych procesów poprzez ciągłe zajęcie często używanych zasobów. T0 Z3 Z4 T1 Zasoby zajęte T Rys. 1-10 Zasoby,, Z3, Z4 zajęte w czasie [T0, T1]. Zasoby,, Z3, Z4 są zajęte w całym czasie [T0, T1] co nie jest koniecznie potrzebne. Negacja warunku braku wywłaszczeń. Możliwe jest zastosowanie następujących algorytmów: 1) Gdy proces żąda zasobu który nie jest dostępny sprawdza się czy proces przytrzymujący te zasoby czeka na inne zasoby. Gdy tak jest odbiera się mu te zasoby. Implementacja takiej metody wymaga aby program był napisany w języku obsługującym wyjątki. 2) Gdy proces posiadający jakieś zasoby żąda innych zasobów które nie mogą być przydzielone traci przydzielone zasoby. Negacja warunku czekania cyklicznego Aby zapobiec czekaniu cyklicznemu należy ponumerować zasoby i żądać aby każdy proces zamawiał zasoby we wzrastającym porządku numeracji. Gdy tak będzie nie wystąpi warunek czekania cyklicznego.

J. Ułasiewicz Programowanie aplikacji współbieżnych 14 Negacja warunku czekania cyklicznego w problemie pięciu filozofów. Rozwiązanie symetryczne: Z0 P0 P4 Z4 P3 Z3 Rys. 1-11 Graf przydziału zasobów dla problemu pięciu filozofów rozwiązanie symetryczne Filozof Pierwsze żądanie Drugie żądanie 0 0 1 1 1 2 2 2 3 3 3 4 4 4 0 Przykład 1-4 Kolejność żądań zasobów w rozwiązaniu symetrycznym W powyższym przypadku istnieje zamknięty cykl procesów.

J. Ułasiewicz Programowanie aplikacji współbieżnych 15 Rozwiązanie asymetryczne: Z0 P0 P4 Z4 P3 Z3 Rys. 1-12 Graf przydziału zasobów dla problemu pięciu filozofów rozwiązanie asymetryczne P4 otrzymał zasoby Z0 i Filozof Pierwsze żądanie Drugie żądanie 0 0 nie spełnione 1 1 1 2 2 2 3 3 3 4 4 0 4 Przykład 1-5 Kolejność żądań zasobów w rozwiązaniu niesymetrycznym W kroku 1 zasób Z0 żądany przez P0 i P4. Obojętnie komu zostanie przydzielony w kroku 2 jeden z procesów otrzyma wszystkie konieczne zasoby.

J. Ułasiewicz Programowanie aplikacji współbieżnych 16 Wykrywanie zakleszczeń Założenie: zasoby reprezentowane jednokrotnie mogą być wykryte na podstawie analizy grafu oczekiwania (ang. wait-for graph). Graf oczekiwania można uzyskać z grafu przydziału zasobów przez usunięcie wierzchołków odpowiadających zasobom. Graf oczekiwania: 1. Wierzchołki procesy {,,...Pn 2. Luki - od Pi do Pj wtedy proces Pi czeka na zasoby zajęte przez proces Pj. Pi Pj Pi czeka na zasoby zajęte przez Pj Rys. 1-13 Łuk grafu oczekiwania = Z4 P4 Z3 P3 P3 P4 Rys. 1-14 Otrzymywanie grafu oczekiwania z grafu przydziału zasobów

J. Ułasiewicz Programowanie aplikacji współbieżnych 17 Twierdzenie Gdy w grafie oczekiwania wystąpi cykl to system jest w stanie zakleszczenia. Aby na bieżąco wykrywać zakleszczenia system musi: 1. Utrzymywać aktualny graf oczekiwania 2. Dla grafu oczekiwania wykonywać algorytm wykrywania cyklu Gdy n liczba wierzchołków to złożoność algorytmu n 2. Likwidowanie zakleszczenia Gdy zakleszczenie wystąpi i zostanie wykryte należy je zlikwidować. Możliwe podejścia: Zakończenie procesów Wszystkich Niektórych aby zakleszczenie ustąpiło Występuje problem które procesy zakończyć. Należy minimalizować koszty zakończenia przedwczesnego procesów. Decyzja zależy od: bezpieczeństwo priorytet procesu czas wykonywania procesu łatwość wywłaszczenie z zasobu Wywłaszczenia z zasobów Przy wywłaszczaniu zasobów należy rozważyć następujące kwestie Który z zasobów ma być wywłaszczony Jak przeprowadzić wycofanie Jak zapewnić aby nie doszło do zagłodzenia procesu