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

Podobne dokumenty
Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

76.Struktura oprogramowania rozproszonego.

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

Zdalne wywołania procedur. Jarosław Kuchta Programowanie Współbieżne

Klient-Serwer Komunikacja przy pomocy gniazd

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

Komunikacja i wymiana danych

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows.

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

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

SYSTEMY CZASU RZECZYWISTEGO - VxWorks

SIMON SAYS ARCHITECTURE! Usługi zdalne. Technologie, techniki i praktyki implementacji

Programowanie Komponentowe WebAPI

Sieci komputerowe. Wykład 5: Warstwa transportowa: TCP i UDP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Jadro monolityczne vs. mikrojadro. Mikrojadro. Olga Kowalczuk. 9 grudnia 2008

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

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

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

9. Problem wzajemnego wykluczania i sekcji krytycznej

Prezentacja systemu RTLinux

Wprowadzenie. Dariusz Wawrzyniak 1

Systemy rozproszone. na użytkownikach systemu rozproszonego wrażenie pojedynczego i zintegrowanego systemu.

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

Komunikacja za pomocą potoków. Tomasz Borzyszkowski

Architektury systemów rozproszonych LABORATORIUM. Ćwiczenie 1

Stan procesu. gotowy - czeka na przydział procesora, zakończony - zakończył działanie.

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Działanie systemu operacyjnego

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu. Blok kontrolny procesu

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

Dokumentacja interfejsu HTTPD. Platforma BSMS.PL Instrukcja podłączenia po przez http

Kurs OPC S7. Spis treści. Dzień 1. I OPC motywacja, zakres zastosowań, podstawowe pojęcia dostępne specyfikacje (wersja 1501)

Opis protokołu RPC. Grzegorz Maj nr indeksu:

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Architektury usług internetowych. Tomasz Boiński Mariusz Matuszek

Spis treści. Dzień 1. I Wprowadzenie (wersja 0906) II Dostęp do danych bieżących specyfikacja OPC Data Access (wersja 0906) Kurs OPC S7

Działanie systemu operacyjnego

Programowanie współbieżne i rozproszone

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

IPC: Kolejki komunikatów

Hardware mikrokontrolera X51

Działanie systemu operacyjnego

Systemy rozproszone System rozproszony

współbieżność - zdolność do przetwarzania wielu zadań jednocześnie

Kolejki FIFO (łącza nazwane)

Obliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

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

Programowanie rozproszone w języku Java

Systemy operacyjne III

MINISTERSTWO FINANSÓW PLAN INTEGRACJI SYSTEMU ZAŁĄCZNIK NR 6 SEAP SPECYFIKACJA KANAŁ DLA PODMIOTÓW ZEWNĘTRZNYCH PL PROJEKT ECIP/SEAP

5. Algorytm genetyczny przykład zastosowania

RPC Remote Procedural Call. Materiały do prezentacji można znaleźć na stronie:

TCP/IP. Warstwa aplikacji. mgr inż. Krzysztof Szałajko

Wywoływanie procedur zdalnych

Twisted. Silnik Twojego Internetu. Jan Urbański Ducksboard. PyWaw #25, Warszawa, 10 czerwca 2013

Monitory. Jarosław Kuchta

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

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Usługi WWW. dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska Opole zlipinski@math.uni.opole.pl

1. Etapy rozwoju systemów komputerowych

Zdalne wywoływanie procedur RPC

SEGMENT TCP CZ. II. Suma kontrolna (ang. Checksum) liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej

Zdalne wywoływanie procedur RPC

Wywoływanie procedur zdalnych

Wybrane działy Informatyki Stosowanej

Sieci komputerowe. Wykład 7: Transport: protokół TCP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Bazy danych 2. Wykład 1

4. Procesy pojęcia podstawowe

System DiLO. Opis interfejsu dostępowego v. 2.0

Stan globalny. Krzysztof Banaś Systemy rozproszone 1

Wybrane działy Informatyki Stosowanej

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

Middleware wprowadzenie października 2010

3URJUDPRZDQLHZVSyáELH*QHZVWS

Programowanie współbieżne i rozproszone

Middleware wprowadzenie października Dariusz Wawrzyniak (IIPP) 1

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

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

Aplikacja Sieciowa wątki po stronie klienta

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Zdalne wywoływanie procedur RPC 27. października Dariusz Wawrzyniak (IIPP) 1

Skąd dostać adres? Metody uzyskiwania adresów IP. Statycznie RARP. Część sieciowa. Część hosta

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

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1

Zdalne wywoływanie procedur RPC 27. października 2010

Zaawansowane aplikacje internetowe. Wykład 6. Wprowadzenie do Web Services. wykład prowadzi: Maciej Zakrzewicz. Web Services

Aplikacje RMI

4. Procesy pojęcia podstawowe

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

Dostęp do komponentów EJB przez usługi Web Services

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

Zaawansowany kurs języka Python

Komunikacja z użyciem gniazd aplikacje klient-serwer

INFORMATYKA Pytania ogólne na egzamin dyplomowy

Jarosław Kuchta. Administrowanie Systemami Komputerowymi. Klastry serwerów

Wprowadzenie do programowania współbieżnego

INFRA. System Connector. Opis wdrożenia systemu

Transkrypt:

Mechanizmy pracy równoległej Jarosław Kuchta

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

Algorytmy wzajemnego wykluczania

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

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 P1 =N? P1 w sekcji krytycznej T/N} T N P2 T P2 w sekcji krytycznej N 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? (c1) P2 w sekcji krytycznej? (c2) Stan początkowy N N P1 sprawdza c2 N N P2 sprawdza c1 N N P1 ustawia c1 T N P2 ustawia c2 T T P1 wchodzi do sekcji krytycznej P2 wchodzi do sekcji krytycznej T T T T

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 N P1 ustawia c1 T N P2 ustawia c2 T T P1 sprawdza c2 T T P2 sprawdza c1 T T T T T T

Algorytm 4 wydłużone oczekiwanie 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); }

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

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; 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); }

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 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 podnoszenie opuszczanie Wada: 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ętowoprogramowej 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