Mechanizmy pracy równoległej

Slides:



Advertisements
Podobne prezentacje
Praca dyplomowa inżynierska
Advertisements

Zerowanie mikroprocesorów Cel: wprowadzenie mikroprocesora w określony stan początkowy Zwykle realizowany poprzez: inicjalizację licznika rozkazów (PC)
Programowanie wizualne PW – LAB5 Wojciech Pieprzyca.
Podstawowe pojęcia programowania współbieżnego
Zdalne wywołania procedur
Jarosław Kuchta Monitory.
Systemy Rozproszone Wprowadzenie.
SYSTEMY OPERACYJNE WSTĘP
Systemy rozproszone W. Bartkiewicz
Semafory Autorzy : Michał Winciorek Łukasz Jackowicz.
PROGRAMOWANIE STRUKTURALNE
WEB SERVICE Stefan Rutkowski.
SYSTEMY OPERACYJNE SYNCHRONIZACJA PROCESÓW
CORBA Łukasz Wnęk.
Rozszerzalność systemów rozproszonych
Autor Roman Jędras Prowadzący: dr inż. Antoni Izworski Przedmiot:
Projektowanie i implementacja programów obsługujących gniazdka Wykład II Zbigniew Brożbar Paweł Baranowski.
Internet Communication Engine
Wykład 5 Przerwania w systemie SAB80C537 dr inż. Andrzej Przybył
Systemy rozproszone Komunikacja (I)
Wykład nr 7: Synchronizacja procesów
Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski.
Systemy operacyjne Wykład nr 4: Procesy Piotr Bilski.
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
Usługi sieciowe Wykład 5 DHCP- debian Jarosław Kurek WZIM SGGW 1.
Wykład 2. Wprowadzenie do architektur systemów rozproszonych
Gniazda komunikacji sieciowej w języku Java
Piotr Doskocz Aleksandra Lechki Krzysztof Lewicki
Temat nr 10: System przerwań
Enteprise Java Beans Emil Wcisło.
Artur Szmigiel Paweł Zarębski Kl. III i
ZARZĄDZANIE PROCESAMI
Problem rozbieżności czasów jednym z wielu problemów pojawiających się w systemach rozproszonych jest rozbieżność wartości zegarów na poszczególnych węzłach-maszynach.
12. GNIAZDA BSD Biblioteka funkcji związanych z gniazdami jest interfejsem programisty do obsługi protokołów komunikacyjnych. Została utworzona dla Unixa.
Semafory według normy POSIX
9. KOORDYNACJA PROCESÓW WSPÓŁBIEŻNYCH PRZY UŻYCIU INTERPRETATORA
USŁUGI INTERNETOWE TCP/IP WWW FTP USENET.
Wieloprocesowy system operacyjny dla komputerów ATARI XL/XE
RODZAJE KOMUNIKACJI MIĘDZY PROCESAMI
Semafory.
Wątki.
Projektowanie dynamiki - diagramy interakcji
Architektura SOA.
Web Serwisy w praktyce Technologie internetowe ( )
Protokół Komunikacyjny
Systemy operacyjne.
Budowa systemu komputerowego
Automatyka i Robotyka Systemy czasu rzeczywistego Wykład 4.
Problem sekcji krytycznej
S IMON SAYS … A RCHITECTURE ! Usługi zdalne Technologie, techniki i praktyki implementacji.
Wykład 7 Synchronizacja procesów i wątków
W ą t e k (lekki proces) thread.
Systemy operacyjne (wiosna 2014)
Bariery synchronizacyjne Bariery są obiektami synchronizacyjnymi pakietu pthread służącymi do wyrównywania czasów pracy wątków wykonujących wspólne zadanie.
Service Oriented Architecture
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Modelowanie obiektowe - system zarządzania projektami.
Procesy, wątki Program a proces Proces: Przestrzeń adresowa, kod, dane, stos (część pamięci do przechowania zmiennych lokalnych i niektórych adresów) Otwarte.
Piotr Czapiewski Wydział Informatyki ZUT. Web Services Description Language.
© DSRG 2004 Systemy Rozproszone - Zdalne wywołanie procedury 1 Zdalne wywołanie procedury Implementacja Sun RPC Ćwiczenie laboratoryje:
XML w serwisach webowych. Zapotrzebowanie na serwisy XML.
Obiekty COM Przemysław Buczkowski. Plan prezentacji 1.Wprowadzenie do COM 2.Historia standardu 3.Jak działa COM 4.Interface IUknown 5.Paradygmaty COM.
Podział sieci komputerowych
Środowisko wspomagania automatycznej instalacji GNU/Linux „Multistart” Marta Szcześniak.
Wstęp do programowania Wykład 7
Usługi webowe & Service- Oriented Architecture (SOA) S2523 Anna Jenerowicz.
Komponentowe systemy rozproszone
Wątki, programowanie współbieżne
Mikrokontrolery System przerwań
Aplikacje i usługi internetowe
Zapis prezentacji:

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

Zagadnienia Algorytmy wzajemnego wykluczania Mechanizmy niskopoziomowe 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

Algorytmy wzajemnego wykluczania

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

Kod algorytmu 1 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); }

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ć.

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

Kod algorytmu 2 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); }

Wada algorytmu 2 Nie zabezpiecza przed blokadą P1 w sekcji krytycznej? Stan początkowy N P1 sprawdza c2 P2 sprawdza c1 P1 ustawia c1 T P2 ustawia c2 P1 wchodzi do sekcji krytycznej P2 wchodzi do sekcji krytycznej

Algorytm 3 – ustawianie c1 i c2 przed oczekiwaniem 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); }

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

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

Wada algorytmu 4 W specyficznej sytuacji nie zabezpiecza przed blokadą P1 w sekcji krytycznej? (c1) P2 w sekcji krytycznej? (c2) Stan początkowy N P1 ustawia c1 T P2 ustawia c2 P1 sprawdza c2 P2 sprawdza c1 P1 kasuje c1 P2 kasuje c2

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

Mechanizmy niskopoziomowe

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

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

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

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

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

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

Mechanizmy wysokopoziomowe

Semafor Zmienna całkowita Wada: podnoszenie opuszczanie programowanie niestrukturalne

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

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.

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.

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.

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

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)

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.

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.

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.

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