1 / 33

Mechanizmy pracy równoległej

Jarosław Kuchta. Mechanizmy pracy równoległej. Zagadnienia. Algorytmy wzajemnego wykluczania algorytm Dekkera Mechanizmy niskopoziomowe przerwania mechanizmy ochrony pamięci instrukcje specjalne Mechanizmy wysokopoziomowe mechanizmy synchronizacji semafory, monitory

emery-burt
Download Presentation

Mechanizmy pracy równoległej

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. Algorytmy wzajemnego wykluczania

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

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

  6. Wady algorytmu 1 • 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ć.

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

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

  9. Wada algorytmu 2 • Nie zabezpiecza przed blokadą

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

  11. Wada algorytmu 3 • Również nie zabezpiecza przed blokadą

  12. void P1() { do { c1 = true; while (c2) do { c1 = false; wait_for_some_time(delay); c1 = true; } sekcja_krytyczna_1(); c1 = false; sekcja_lokalna_1(); } 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); } Algorytm 4 – wydłużone oczekiwanie

  13. Wada algorytmu 4 • W specyficznej sytuacji nie zabezpiecza przed blokadą

  14. void P1() { do { c1 = true; while (c2) do { if (czyja_kolej == 2) { c1 = false; while (czyja_kolej == 2) do; c1 = true; } } sekcja_krytyczna_1(); czyja_kolej = 2; c1 = false; sekcja_lokalna_1(); } 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); } Algorytm Dekkera – połączenie algorytmu 1. i 4.

  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ń obsługa przerwań zgłoszenia przerwań

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

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

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

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

  22. Mechanizmy wysokopoziomowe

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

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

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

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

  27. Zdarzenie • Proces 1. definiuje zdarzenie jako procedurę obsługi. • 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.

  28. Potok (pipe) • umożliwia wymianę danych między dwoma procesami • 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

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

  30. Zdalne wywołanie procedur (RPC) • Remote Procedure Call • Standard RFC 1057 • Protokół: • Serwer nasłuchuje na wybranym porcie. • 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. • 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.

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

  32. Rodzaje usług sieciowych • Synchroniczne (jak RPC) • Asynchroniczne (np. RIA) • Po stronie serwera usługa jak zwykła funkcja. • Po stronie klienta: • zdefiniowanie operacji, • określenie danych wejściowych i procedury zwrotnej (callback), • 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.

  33. Rodzaje komunikacji i synchronizacji • Komunikacja synchroniczna – nadawca wysyła komunikat i czeka na odpowiedź od odbiorcy. • wywołanie procedury zdarzenia • 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. • kolejki komunikatów • niektóre usługi sieciowe

More Related