Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Mechanizmy pracy równoległej Jarosław Kuchta. Zagadnienia Algorytmy wzajemnego wykluczania Algorytmy wzajemnego wykluczania algorytm Dekkera algorytm.

Podobne prezentacje


Prezentacja na temat: "Mechanizmy pracy równoległej Jarosław Kuchta. Zagadnienia Algorytmy wzajemnego wykluczania Algorytmy wzajemnego wykluczania algorytm Dekkera algorytm."— Zapis prezentacji:

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

2 Zagadnienia Algorytmy wzajemnego wykluczania Algorytmy wzajemnego wykluczania algorytm Dekkera algorytm Dekkera Mechanizmy niskopoziomowe Mechanizmy niskopoziomowe przerwania przerwania mechanizmy ochrony pamięci mechanizmy ochrony pamięci instrukcje specjalne instrukcje specjalne Mechanizmy wysokopoziomowe Mechanizmy wysokopoziomowe mechanizmy synchronizacji mechanizmy synchronizacji semafory, monitory semafory, monitory mechanizmy komunikacji mechanizmy komunikacji sygnały, komunikaty, zdarzenia, potoki, gniazda, zdalne wywołania procedur, usługi sieciowe sygnały, komunikaty, zdarzenia, potoki, gniazda, zdalne wywołania procedur, usługi sieciowe Rodzaje komunikacji i synchronizacji Rodzaje komunikacji i synchronizacji

3 Algorytmy wzajemnego wykluczania

4 Algorytmy wzajemnego wykluczania (1) Czyja kolej {1/2} P1 P2 P1 P2 2 1 =1? =2?

5 Kod algorytmu 1 void P1() { do do { while (czyja_kolej ==2) do ; while (czyja_kolej ==2) do ; sekcja_krytyczna_1(); sekcja_krytyczna_1(); czyja_kolej = 2; czyja_kolej = 2; sekcja_lokalna_1(); sekcja_lokalna_1(); } while (true); } while (true);} void P2() { do { while (czyja_kolej ==1) do ; sekcja_krytyczna_2(); czyja_kolej = 1; sekcja_lokalna_2(); } while (true); }

6 Wady algorytmu 1 Częstotliwość pracy P1 i P2 muszą być równe. Częstotliwość pracy P1 i P2 muszą być równe. Jeśli P1 zawiesi się w swojej sekcji krytycznej (albo poza nią), to P2 nie będzie już mógł działać. Jeśli P1 zawiesi się w swojej sekcji krytycznej (albo poza nią), to P2 nie będzie już mógł działać.

7 Algorytmy wzajemnego wykluczania (2) P1 P2 P2 w sekcji krytycznej {T/N} P1 =N? P2 T N T N P1 w sekcji krytycznej {T/N}

8 Kod algorytmu 2 void P1() { do do { while (c2) do ; while (c2) do ; c1 = true; c1 = true; sekcja_krytyczna_1(); sekcja_krytyczna_1(); c1 = false; c1 = false; sekcja_lokalna_1(); sekcja_lokalna_1(); } while (true); } while (true);} void P2() { do { while (c1) do ; c2 = true; sekcja_krytyczna_2(); c2 = false; sekcja_lokalna_2(); } while (true); }

9 Wada algorytmu 2 Nie zabezpiecza przed blokadą Nie zabezpiecza przed blokadą P1 w sekcji krytycznej? (c1) P2 w sekcji krytycznej? (c2) Stan początkowy NN P1 sprawdza c2 NN P2 sprawdza c1 NN P1 ustawia c1 TN P2 ustawia c2 TT P1 wchodzi do sekcji krytycznej TT P2 wchodzi do sekcji krytycznej TT

10 Algorytm 3 – ustawianie c1 i c2 przed oczekiwaniem void P1() { do do { c1 = true; c1 = true; while (c2) do ; while (c2) do ; sekcja_krytyczna_1(); sekcja_krytyczna_1(); c1 = false; c1 = false; sekcja_lokalna_1(); sekcja_lokalna_1(); } while (true); } while (true);} void P2() { do { c2 = true; while (c1) do ; sekcja_krytyczna_2(); c2 = false; sekcja_lokalna_2(); } while (true); }

11 Wada algorytmu 3 Również nie zabezpiecza przed blokadą Również nie zabezpiecza przed blokadą P1 w sekcji krytycznej? (c1) P2 w sekcji krytycznej? (c2) Stan początkowy NN P1 ustawia c1 TN P2 ustawia c2 TT P1 sprawdza c2 TT P2 sprawdza c1 TT …TT TT

12 Algorytm 4 – wydłużone oczekiwanie void P1() { do do { c1 = true; c1 = true; while (c2) do while (c2) do { c1 = false; c1 = false; wait_for_some_time(delay); wait_for_some_time(delay); c1 = true; c1 = true; } sekcja_krytyczna_1(); sekcja_krytyczna_1(); c1 = false; c1 = false; sekcja_lokalna_1(); sekcja_lokalna_1(); } while (true); } while (true);} void P2() { do { c2 = true; while (c1) do { c2 = false; wait_for_some_time(delay); c2 = true; } sekcja_krytyczna_2(); c2 = false; sekcja_lokalna_2(); } while (true); }

13 Wada algorytmu 4 W specyficznej sytuacji nie zabezpiecza przed blokadą W specyficznej sytuacji nie zabezpiecza przed blokadą P1 w sekcji krytycznej? (c1) P2 w sekcji krytycznej? (c2) Stan początkowy NN P1 ustawia c1 TN P2 ustawia c2 TT P1 sprawdza c2 TT P2 sprawdza c1 TT P1 kasuje c1 NT P2 kasuje c2 NN P1 ustawia c1 TN P2 ustawia c2 TT

14 Algorytm Dekkera – połączenie algorytmu 1. i 4. void P1() { do do { c1 = true; c1 = true; while (c2) do while (c2) do { if (czyja_kolej == 2) if (czyja_kolej == 2) { c1 = false; c1 = false; while (czyja_kolej == 2) do; while (czyja_kolej == 2) do; c1 = true; c1 = true; } } sekcja_krytyczna_1(); sekcja_krytyczna_1(); czyja_kolej = 2; czyja_kolej = 2; c1 = false; c1 = false; sekcja_lokalna_1(); sekcja_lokalna_1(); } while (true); } while (true);} void P2() { do { c2 = true; while (c2) do { if (czyja_kolej == 1) { c2 = false; while (czyja_kolej == 1) do; c2 = true; } sekcja_krytyczna_2(); czyja_kolej = 1; c2 = false; sekcja_lokalna_2(); } while (true); }

15 Mechanizmy niskopoziomowe

16 Przerwania wątek podstawowy przerwanie o niższym priorytecie przerwanie o wyższym priorytecie

17 Przerwania maskowalne wątek podstawowy czas maskowania przerwań zgłoszenia przerwań obsługa przerwań

18 Przerwania niemaskowalne wątek podstawowy czas maskowania przerwań zgłoszenia przerwań obsługa przerwań

19 Przerwania w systemie równoległym Wykorzystanie maskowania do ochrony sekcji krytycznej Wykorzystanie maskowania do ochrony sekcji krytycznej W systemie wieloprocesorowym brak gwarancji ochrony sekcji krytycznej W systemie wieloprocesorowym brak gwarancji ochrony sekcji krytycznej

20 Mechanizmy ochrony pamięci Arbitraż dostępu do pamięci Arbitraż dostępu do pamięci Nieznana kolejność dostępu Nieznana kolejność dostępu

21 Instrukcje specjalne Na poziomie procesora Na poziomie procesora BTC – Bit Test and Complement BTC – Bit Test and Complement BTS – Bit Test and Set BTS – Bit Test and Set BTR – Bit Test and Reset BTR – Bit Test and Reset Na poziomie języka (C#) Na poziomie języka (C#) lock(object) { … } lock(object) { … }

22 Mechanizmy wysokopoziomowe

23 Semafor Zmienna całkowita Zmienna całkowita podnoszenie podnoszenie opuszczanie opuszczanie Wada: programowanie niestrukturalne

24 Monitor Nadzoruje dostęp do wspólnego zasobu. Nadzoruje dostęp do wspólnego zasobu. Tylko jeden proces ma dostęp w danej chwili. Tylko jeden proces ma dostęp w danej chwili.

25 Sygnał Zmienna systemowa do komunikacji między procesami. Zmienna systemowa do komunikacji między procesami. Proces 1. czeka na sygnał. Proces 1. czeka na sygnał. Proces 2. ustawia sygnał. Proces 2. ustawia sygnał. Ustawienie sygnału powoduje wznowienie procesu 1. i jednoczesne skasowanie sygnału. Ustawienie sygnału powoduje wznowienie procesu 1. i jednoczesne skasowanie sygnału.

26 Komunikat Informacja przekazywana od procesu 1. do procesu 2. Informacja przekazywana od procesu 1. do procesu 2. Komunikat trafia do kolejki komunikatów procesu 2. Komunikat trafia do kolejki komunikatów procesu 2. Proces 2. co pewien czas sprawdza, czy ma jakieś komunikaty w kolejce. Proces 2. co pewien czas sprawdza, czy ma jakieś komunikaty w kolejce. Odbiera komunikat z kolejki i obsługuje go. Odbiera komunikat z kolejki i obsługuje go.

27 Zdarzenie Proces 1. definiuje zdarzenie jako procedurę obsługi. Proces 1. definiuje zdarzenie jako procedurę obsługi. Proces 2. wywołuje procedurę obsługi zdarzenia w procesie 1. Proces 2. wywołuje procedurę obsługi zdarzenia w procesie 1. Procedura obsługi jest wykonywana w wątku procesu 2, ale ma dostęp do danych procesu 1. Procedura obsługi jest wykonywana w wątku procesu 2, ale ma dostęp do danych procesu 1.

28 Potok (pipe) umożliwia wymianę danych między dwoma procesami umożliwia wymianę danych między dwoma procesami potok nienazwany łączy standardowe wyjście jednego procesu ze standardowym wejściem drugiego procesu potok nienazwany łączy standardowe wyjście jednego procesu ze standardowym wejściem drugiego procesu potok nazwany – plik do którego jeden proces pisze, a drugi proces czyta potok nazwany – plik do którego jeden proces pisze, a drugi proces czyta

29 Gniazdo (socket) dwukierunkowy punkt końcowy połączenia dwukierunkowy punkt końcowy połączenia umożliwia wysyłanie i przyjmowanie danych umożliwia wysyłanie i przyjmowanie danych wykorzystywane przez aplikacje do komunikacji międzyprocesowej przez sieć (Internet) wykorzystywane przez aplikacje do komunikacji międzyprocesowej przez sieć (Internet)

30 Zdalne wywołanie procedur (RPC) Remote Procedure Call Remote Procedure Call Standard RFC 1057 Standard RFC 1057 Protokół: Protokół: Serwer nasłuchuje na wybranym porcie. Serwer nasłuchuje na wybranym porcie. Klient nawiązuje łączność z serwerem przez sieć komputerową i wysyła żądanie usługi (dane) Klient nawiązuje łączność z serwerem przez sieć komputerową i wysyła żądanie usługi (dane) Serwer wykonuje usługę i zwraca potwierdzenie lub kod błędu. Serwer wykonuje usługę i zwraca potwierdzenie lub kod błędu. Protokoły (RPC, CORBA, DCOM, czy XML-RPC) ukrywają mechanizm wywołania usługi. Protokoły (RPC, CORBA, DCOM, czy XML-RPC) ukrywają mechanizm wywołania usługi. Dla programisty zdalne wywołanie procedury ma taką samą postać jak wywołanie każdej innej lokalnej procedury. Dla programisty zdalne wywołanie procedury ma taką samą postać jak wywołanie każdej innej lokalnej procedury.

31 Usługa sieciowa (WebService) Niezależna od platformy sprzętowo-programowej i sposobu implementacji. Niezależna od platformy sprzętowo-programowej i sposobu implementacji. Opisywana przez język opisu usług WSDL (Web Services Description Language) Opisywana przez język opisu usług WSDL (Web Services Description Language) Opublikowana i wyszukiwana w rejestrze usług za pomocą standardowego mechanizmu (UDDI) Opublikowana i wyszukiwana w rejestrze usług za pomocą standardowego mechanizmu (UDDI) Wywołana zdalnie przez zdefiniowany interfejs. Wywołana zdalnie przez zdefiniowany interfejs.

32 Rodzaje usług sieciowych Synchroniczne (jak RPC) Synchroniczne (jak RPC) Asynchroniczne (np. RIA) Asynchroniczne (np. RIA) Po stronie serwera usługa jak zwykła funkcja. Po stronie serwera usługa jak zwykła funkcja. Po stronie klienta: Po stronie klienta: zdefiniowanie operacji, zdefiniowanie operacji, określenie danych wejściowych i procedury zwrotnej (callback), określenie danych wejściowych i procedury zwrotnej (callback), asynchroniczne wywołanie – wysłanie żądania wykonania do serwera, asynchroniczne wywołanie – wysłanie żądania wykonania do serwera, asynchroniczne wywołanie procedury zwrotnej przez serwer – potwierdzenie wykonania, przekazanie żądanych danych, stwierdzenie błędu wykonania. asynchroniczne wywołanie procedury zwrotnej przez serwer – potwierdzenie wykonania, przekazanie żądanych danych, stwierdzenie błędu wykonania.

33 Rodzaje komunikacji i synchronizacji Komunikacja synchroniczna – nadawca wysyła komunikat i czeka na odpowiedź od odbiorcy. Komunikacja synchroniczna – nadawca wysyła komunikat i czeka na odpowiedź od odbiorcy. wywołanie procedury zdarzenia wywołanie procedury zdarzenia zdalne wywołanie procedur zdalne wywołanie procedur Komunikacja asynchroniczna – nadawca wysyła komunikat i kontynuuje działanie. Odbiorca odbiera i obsługuje komunikat, po czym wysyła komunikat potwierdzenia. Komunikacja asynchroniczna – nadawca wysyła komunikat i kontynuuje działanie. Odbiorca odbiera i obsługuje komunikat, po czym wysyła komunikat potwierdzenia. kolejki komunikatów kolejki komunikatów niektóre usługi sieciowe niektóre usługi sieciowe


Pobierz ppt "Mechanizmy pracy równoległej Jarosław Kuchta. Zagadnienia Algorytmy wzajemnego wykluczania Algorytmy wzajemnego wykluczania algorytm Dekkera algorytm."

Podobne prezentacje


Reklamy Google