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

Podobne dokumenty
Synchronizacja procesów

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

Współbieżność i synchronizacja procesów

Wprowadzenie do programowania współbieżnego

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

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

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

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

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

Oprogramowanie systemowe

Oprogramowanie systemowe

Oprogramowanie systemowe

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

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

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

Informatyka 1. Przetwarzanie tekstów

Systemy Operacyjne synchronizacja i komunikacja procesów

Synchronizacja procesów

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

Wstęp do programowania. Procedury i funkcje. Piotr Chrząstowski-Wachtel

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

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 Wykład 7. Iwona Kochaoska

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Definicje. Algorytm to:

synchronizacji procesów

Detekcja zakleszczenia (1)

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne

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

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

synchronizacji procesów

Język programowania PASCAL

Czas wirtualny, złożoność algorytmów

Modelowanie procesów współbieżnych

Synchronizacja procesów i wątków

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

Wstęp do programowania 2

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

Przetwarzanie rozproszone

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

1 Wprowadzenie do algorytmiki

Programowanie Współbieżne. Wstęp

SOP2 - semafory. grudzień

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

Algorytmy Równoległe i Rozproszone Część VI - Systemy rozproszone, podstawowe pojęcia

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

Informatyka 1. Procedury i funkcje, struktura programu w Pascalu

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Optymalizacja. Przeszukiwanie lokalne

Programowanie współbieżne Wykład 2. Iwona Kochańska

Czas wirtualny, złożoność algorytmó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

Sortowanie topologiczne skierowanych grafów acyklicznych

Wielowersyjne metody synchronizacji transakcji

koniec punkt zatrzymania przepływów sterowania na diagramie czynności

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

Instrukcje cykliczne (pętle) WHILE...END WHILE

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

4. Procesy pojęcia podstawowe

Monitory. Wady semafora

Proces rozproszony 1

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

Pascal - wprowadzenie

Systemy operacyjne. Zajęcia 11. Monitory

Programowanie w Turbo Pascal

Wstęp do programowania

Informatyka 1. Wyrażenia i instrukcje cd., ręczna symulacja, operacje wejścia/wyjścia

Planowanie przydziału procesora

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Definicja sieci. Sieć Petriego jest czwórką C = ( P, T, I, O ), gdzie: P = { p 1, p 2,, p n } T = { t 1, t 2,, t m }

Struktury danych (I): kolejka, stos itp.

3URJUDPRZDQLHZVSyáELH*QHZVWS

Wykład III PASCAL - iteracja cz, 2, - liczby losowe, - tablice

Wzajemne wykluczanie i zakleszczenie

Materiały do laboratorium MS ACCESS BASIC

Stan globalny. Krzysztof Banaś Systemy rozproszone 1

Zagadnienia zaawansowane. Lech Kruś,

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2

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

Programowanie w VB Proste algorytmy sortowania

Poprawność semantyczna

PROJEKT WSPÓŁFINANSOWANY ZE ŚRODKÓW UNII EUROPEJSKIEJ W RAMACH EUROPEJSKIEGO FUNDUSZU SPOŁECZNEGO OPIS PRZEDMIOTU

Logika Temporalna i Automaty Czasowe

4. Procesy pojęcia podstawowe

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.

Multiprocessor Shared-Memory Information Exchange. Damian Klata, Adam Bułak

Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279

Wykład z Technologii Informacyjnych. Piotr Mika

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

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

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Programowanie komputerów

Podstawy i języki programowania

TECHNOLOGIE OBIEKTOWE WYKŁAD 2. Anna Mroczek

Sterowniki Programowalne (SP) Wykład 11

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL

Transkrypt:

Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Abstrakcja programowania współbieżnego Instrukcje atomowe i ich przeplot Istota synchronizacji Kryteria poprawności programów współbieżnych Klasyfikacja mechanizmów synchronizacji Wzajemne wykluczania Algorytmy wzajemnego wykluczania (alg. Petersona i alg. Lamporta) Złożone instrukcje atomowe (test&set, exchange) (2) Wprowadzenie do abstrakcji przetwarzania współbieżnego Realizacja przetwarzania polega na wykonywaniu instrukcji przez jednostkę przetwarzającą (procesor). Instrukcje wykonywane są w kontekście jakiegoś procesu. Wykonanie instrukcji (akcja) oznacza zajście zdarzenia w procesie, skutkiem czego jest zmiana stanu procesu. Zajście zdarzenia jest zdeterminowane poprzedzającym je stanem procesu. Na stan procesu wpływają pośrednio akcje innych w systemie, przejawiające się w stanie współdzielonych zasobów. (3) 1

Podstawowe definicje i oznaczenia C zbiór instrukcji (operacji), możliwych do wykonania przez jednostkę przetwarzającą (np. dodawanie, odejmowanie, skok, rozgałęzienie warunkowe) D zbiór danych, przetwarzanych (modyfikowanych lub czytanych) w ramach wykonywania operacji przez jednostkę przetwarzającą e i (c, O) wykonanie w ramach procesu P i instrukcji atomowej c C na operandach ze zbioru O D (4) Stan procesu i zdarzenie Stan procesu obejmuje te elementy (wartości zmiennych, rejestrów, stan zasobów), które między innymi determinują następną instrukcję do wykonania. Wykonanie instrukcji określane jest jako zdarzenie lub akcja. Zbiór instrukcji do wykonania oraz zależności pomiędzy nimi określone są przez program procesu. Zajście zdarzenia zdeterminowane jest zatem przez program oraz bieżący stan procesu. (5) Proces sekwencyjny Proces (wątek) sekwencyjny jest wykonaniem ciągu instrukcji, opisanych przez program dla tego procesu (procedurę dla wątku), w taki sposób, że następna akcja nie rozpocznie się, zanim nie skończy się poprzednia. Zdarzenie (akcja) w procesie P i oznacza zmianę stanu tego procesu, co formalnie opisane jest poprzez odwzorowanie (przejście, tranzycję): L: S i E i S i, gdzie S i zbiór stanów procesu P i E i zbiór zdarzeń w procesie P i (6) 2

Relacja lokalnego porządku Proces P i jest ciągiem (skończonym lub nieskończonym) następujących po sobie naprzemiennie stanów i zdarzeń s i0, e i1, s i1, e i2, s i2,..., gdzie: s i0 stan początkowy procesu P i k 0 s ik S i k 0 e ik E i k 0 L(s i k, e i k+1 ) s i k+1 Relacja porządku w procesie P i odzwierciedlająca kolejność stanów i zdarzeń w ciągu nazywana będzie lokalnym porządkiem i oznaczana symbolem i (7) Współbieżna realizacja zbioru Zdarzenie w systemie współbieżnym, złożonym z sekwencyjnych P 1, P 2,..., P n, oznacza zajście zdarzenia w jednym z. Zdarzenie, zmieniając stan jednego procesu, zmienia stan całego systemu, co formalnie opisane jest poprzez odwzorowanie (przejście, tranzycję): G:, gdzie S 1 S 2... S n zbiór stanów systemu = E 1 E 2... E n zbiór zdarzeń w systemie (8) Relacja globalnego porządku Przetwarzanie współbieżne zbioru sekwencyjnych P 1, P 2,..., P n, jest ciągiem (skończonym lub nieskończonym) następujących po sobie naprzemiennie stanów systemu i zdarzeń 0, e 1, 1, e 2, 2,..., gdzie: 0 stan początkowy s 10, s 20,..., s n0 k 0 k k 0 e k k 0 G( k, e k+1 ) k+1 Relacja porządku w systemie odzwierciedlająca kolejność stanów i zdarzeń w ciągu nazywana będzie globalnym porządkiem i oznaczana symbolem (9) 3

Niedeterminizm przetwarzania Zdarzenie, które może pojawić się w określonym stanie przetwarzania, określane jest jako zdarzenie dopuszczalne. W przetwarzaniu współbieżnym z każdym sekwencyjnym procesem w danym stanie związane jest jedno zdarzenie. W stanie całego przetwarzania jest zatem zbiór zdarzeń dopuszczalnych. W zależności od dostępności zasobów (procesora, magistrali systemowej) oraz decyzji planisty, wykonywany będzie jeden z gotowych. Należy więc przyjąć, że zajście jednego ze zdarzeń dopuszczalnych ma charakter losowy. (10) Przeplot i osiągalność stanu Przeplotem jest zbiór zdarzeń, uporządkowany przez relację globalnego porządku, spełniającą następujący warunek: e, e i e i e e e Stan systemu jest osiągalny ze stanu, co będzie oznaczone przez, jeśli zachodzi jeden z warunków: 1) są to te same stany, czyli 2) e G(, e) 3) (11) Procesy niezależne a procesy współpracujące Niech D i D oznacza zbiór danych przetwarzanych przez proces P i, czyli dla ciągu instrukcji procesu P i : e i1 (c i1, O i1 ), e i2 (c i2, O i2 ),... D i = k O i k Dwa procesy, P i i P j, są niezależne, jeśli D i D j Dwa procesy, P i i P j, współpracują (są w interakcji), jeśli D i D j (12) 4

Dane współdzielone a lokalne Dane lokalne (prywatne) procesu P i to takie, które są przetwarzane wyłącznie przez P i, formalnie zatem jest to zbiór: D i \ 1 j n,j i D j Dane współdzielone przez proces P i to takie, które przetwarzane są oprócz P i przez co najmniej jeszcze jeden inny proces, formalnie zatem jest to zbiór: D i 1 j n,j i D j (13) Dane wejściowy i wyjściowe Niech D i R D i oznacza zbiór danych czytanych przez proces P i, a D i M D i oznacza zbiór danych modyfikowanych przez proces P i Dane wejściowe procesu P i to takie dane współdzielone, które są czytane przez proces P i, formalnie zatem jest to zbiór: D i R 1 j n,j i D j Dane wyjściowe procesu P i to takie dane współdzielone, które są modyfikowane przez proces P i, formalnie zatem jest to zbiór: D i M 1 j n,j i D j (14) Przykład przetwarzania współbieżnego n: integer := 0; /* zmienna współdzielona */ wątki instrukcje wątek A wątek B wysokopoziomowe n := n + 1 n := n + 1 RISC load R A, n load R B, n add R A, 1 add R B, 1 store R A, n store R B, n CISC inc n inc n (15) 5

Przykład przeplotu instrukcji RISC przepływ sterowania przeplot 1 przeplot 2 {A} load R A, n {A} add R A, 1 {A} store R A, n // n = 1 {B} load R B, n {B} add R B, 1 {B} store R B, n {A} load R A, n {A} add R A, 1 // n = 0 {B} load R B, n {B} add R B, 1 {A} store R A, n {B} store R B, n wartość n 2 1 (16) Przykład przeplotu instrukcji CISC przepływ sterowania przeplot 1 przeplot 2 {A} inc n {B} inc n {B} inc n {A} inc n wartość n 2 2 (17) Istota synchronizacji Celem synchronizacji jest kontrola przepływu sterowania pomiędzy procesami tak, żeby dopuszczalne stały się tylko przeploty instrukcji zgodne z intencją programisty. Synchronizacja na najniższym poziomie polega na wykonaniu specjalnych instrukcji, które powodują zatrzymanie postępu przetwarzania. Synchronizacja na wyższym poziomie polega na użyciu specjalnych konstrukcji programotwórczych lub odpowiednich definicji struktur danych. (18) 6

Poprawność programów współbieżnych Własność bezpieczeństwa (ang. safety) w każdym osiągalnym stanie przetwarzania muszą być spełnione pewne warunki. Własność żywotności (ang. liveness) w wyniku przetwarzania muszą w końcu zajść pewne warunki. (19) Własność uczciwości programów współbieżnych Uczciwość słaba nieprzerwanie zgłaszane żądanie procesu będzie kiedyś obsłużone. Uczciwość mocna nieskończenie wiele razy zgłaszane żądanie procesu będzie kiedyś obsłużone. Oczekiwanie liniowe żądanie procesu będzie obsłużone po najwyżej jednokrotnym obsłużeniu żądań innych. FIFO żądania będą realizowane w kolejności zgłoszeń. (20) Klasyfikacja mechanizmów synchronizacji Zapis lub odczyt współdzielonych danych Złożone operacje atomowe na współdzielonych danych (np. test&set, exchange) Mechanizmy wspierane przez system operacyjny semafory mechanizmy POSIX (zamki oraz zmienne warunkowe) Mechanizmy strukturalne (wspierane przez wysokopoziomowe języki programowania) monitory regiony krytyczne (21) 7

Wzajemne wykluczanie sformułowanie problemu W systemie działa n P 0, P 1,..., P n-1. W programie każdego procesu znajduje się fragment kodu zwany sekcją krytyczną (ang. critical section). Sekcja krytyczna wykonywana jest w danej chwili przez co najwyżej jeden proces. (22) Ogólna postać algorytmu wzajemnego wykluczania reszta (ang. remainder section) sekcja wejściowa (ang. entry section) sekcja krytyczna (ang. critical section) sekcja wyjściowa (ang. exit section) (23) Poprawność rozwiązania problemu wzajemnego wykluczania Wzajemne wykluczanie warunek bezpieczeństwa, Postęp (ang. progress) warunek żywotności z punktu widzenia systemu, Ograniczone czekanie (ang. lockout-freedom) warunek żywotności z punktu widzenia procesu. (24) 8

Wzajemne wykluczanie 2 podejście 1 Algorytm dla procesu P i przy dwóch procesach P i i P j shared numer: Integer i; while numer i do nic; sekcja wejściowa sekcja krytyczna i ; numer j; sekcja wyjściowa reszta i ; (25) Wzajemne wykluczanie 2 podejście 2 Algorytm dla procesu P i przy dwóch procesach P i i P j (dla uproszczenia prezentacji założono, że i = 0, a j = 1) shared znacznik: array [0..1] of Boolean false; znacznik[i] true; while znacznik[j] do nic; sekcja krytyczna i ; znacznik[i] false; reszta i ; sekcja wejściowa sekcja wyjściowa (26) Wzajemne wykluczanie 2 podejście 3 shared znacznik: array [0..1] of Boolean false; znacznik[i] true; while znacznik[j] do begin sekcja wejściowa znacznik[i] false; znacznik[i] true; end; sekcja krytyczna i ; znacznik[i] false; sekcja wyjściowa reszta i ; (27) 9

Wzajemne wykluczanie 2 podejście 4 shared znacznik: array [0..1] of Boolean; shared numer: Integer; znacznik[i] true; numer j; while znacznik[j] and numer i do nic; sekcja krytyczna i ; znacznik[i] false; sekcja wyjściowa reszta i ; (28) Wzajemne wykluczanie 2 podejście 4 z zamianą kolejności operacji podstawienia shared znacznik: array [0..1] of Boolean; shared numer: Integer; numer j; znacznik[i] true; numer j; while znacznik[j] and numer i do nic; sekcja krytyczna i ; znacznik[i] false; sekcja wyjściowa reszta i ; (29) Wzajemne wykluczanie n algorytm piekarni (1) Algorytm dla procesu P i przy n procesach ( i = 0 n-1 ) shared wybieranie: array [0..n-1] of Boolean := false; shared numer: array [0..n-1] of Integer := 0; local k: Integer; wybieranie[i] true; numer[i] max(numer[0],numer[1], ) + 1; wybieranie[i] false; (30) 10

Wzajemne wykluczanie n algorytm piekarni (2) 1) for k 0 to n-1 do begin 2) if k i then begin 3) while wybieranie[k] do nic; 4) while numer[k] 0 and 5) (numer[k],k)<(numer[i],i) do 6) nic; 7) end; 8) end; 9) sekcja krytyczna i ; 10) numer[i] 0; sekcja wyjściowa 11) reszta i ; (31) Operacja test&set function test&set(var l: Boolean): Boolean; begin test&set l; l true; end; (32) Operacja exchange procedure exchange(var a,b: Boolean); var tmp: Boolean; begin tmp a; a b; b tmp; end; (33) 11

Wzajemne wykluczanie z użyciem instrukcji test&set shared zamek: Boolean false; while test&set(zamek) do nic; sekcja krytyczna; zamek false; reszta; sekcja wejściowa sekcja wyjściowa (34) Wzajemne wykluczanie z użyciem instrukcji exchange shared zamek: Boolean false; local klucz: Boolean; klucz true; repeat exchange(zamek, klucz); until klucz = false; sekcja krytyczna; zamek false; reszta; sekcja wyjściowa sekcja wejściowa (35) 12