15
Podstawowe pojęcia Podstawowe pojęcia programowania programowania współbieżnego współbieżnego Jarosław Kuchta Jarosław Kuchta

Podstawowe pojęcia programowania współbieżnego

  • Upload
    chill

  • View
    49

  • Download
    0

Embed Size (px)

DESCRIPTION

Jarosław Kuchta. Podstawowe pojęcia programowania współbieżnego. Współbieżność w życiu codziennym. Jednocześnie: chodzimy oddychamy prowadzimy rozmowę jemy?. Korzystamy ze współdzielonego zasobu - gardła. Współbieżność w systemach operacyjnych. Jednoczesna: edycja tekstu - PowerPoint PPT Presentation

Citation preview

Page 1: Podstawowe pojęcia programowania współbieżnego

Podstawowe Podstawowe pojęcia pojęcia

programowania programowania współbieżnegowspółbieżnego

Jarosław KuchtaJarosław Kuchta

Page 2: Podstawowe pojęcia programowania współbieżnego

Współbieżność w życiu Współbieżność w życiu codziennymcodziennym

Jednocześnie:Jednocześnie: chodzimychodzimy oddychamyoddychamy prowadzimy prowadzimy

rozmowęrozmowę jemy?jemy?

Korzystamy ze współdzielonego zasobu- gardła

Page 3: Podstawowe pojęcia programowania współbieżnego

Współbieżność w Współbieżność w systemach operacyjnychsystemach operacyjnych

Jednoczesna:Jednoczesna: edycja tekstuedycja tekstu sprawdzanie pisownisprawdzanie pisowni zapisywanie dokumentuzapisywanie dokumentu

Page 4: Podstawowe pojęcia programowania współbieżnego

Współbieżność a Współbieżność a równoległośćrównoległość

Wykonanie współbieżne – w tym samym Wykonanie współbieżne – w tym samym czasie z punktu widzenia niezależnego czasie z punktu widzenia niezależnego obserwatoraobserwatora

Wykonanie równoległe – w tym samym Wykonanie równoległe – w tym samym czasie na przynajmniej dwóch czasie na przynajmniej dwóch procesorachprocesorach

Wniosek – wykonanie współbieżne Wniosek – wykonanie współbieżne wymaga mniej procesorów niż wątków wymaga mniej procesorów niż wątków sterowania – w szczególności możliwe jest sterowania – w szczególności możliwe jest na jednym procesorze.na jednym procesorze.

Page 5: Podstawowe pojęcia programowania współbieżnego

Wykonanie współbieżne z Wykonanie współbieżne z podziałem czasupodziałem czasu

Kwanty czasu procesora Kwanty czasu procesora przydzielane są na przemian przydzielane są na przemian dla wielu wątkówdla wielu wątków

Przełączenie wątków Przełączenie wątków wymaga zapamiętywania i wymaga zapamiętywania i odtwarzania stanów odtwarzania stanów poszczególnych wątkówposzczególnych wątków

Kwanty czasu nie muszą być Kwanty czasu nie muszą być tej samej długościtej samej długości

Wątki mogą być aktywowane Wątki mogą być aktywowane z różną częstościąz różną częstością

Jeśli kwanty czasu są Jeśli kwanty czasu są odpowiednio krótkie, to odpowiednio krótkie, to wątki wydają się być wątki wydają się być wykonane równolegle, choć wykonane równolegle, choć naprawdę są tylko wykonane naprawdę są tylko wykonane współbieżniewspółbieżnie

wątek 1 wątek 2

Page 6: Podstawowe pojęcia programowania współbieżnego

Wątek a procesWątek a proces

Wątek – sekwencja operacji Wątek – sekwencja operacji wykonywanych jedna po drugiej.wykonywanych jedna po drugiej.

Proces – wątek, który ma osobno Proces – wątek, który ma osobno przydzieloną pamięć.przydzieloną pamięć.

Procesy w systemach operacyjnych = Procesy w systemach operacyjnych = programyprogramy

Wątki – jeden proces może mieć wiele Wątki – jeden proces może mieć wiele wątków, które współdzielą pamięćwątków, które współdzielą pamięć

Page 7: Podstawowe pojęcia programowania współbieżnego

Kluczowe problemy Kluczowe problemy współbieżnościwspółbieżności

Współdzielenie zasobówWspółdzielenie zasobów Problem zakleszczenia (blokady)Problem zakleszczenia (blokady) Problem zagłodzeniaProblem zagłodzenia

Page 8: Podstawowe pojęcia programowania współbieżnego

Współdzielone zasobyWspółdzielone zasoby

Między programami – pamięć dyskowa Między programami – pamięć dyskowa (pliki), drukarka, mysz, klawiatura, usługi (pliki), drukarka, mysz, klawiatura, usługi systemowesystemowe

Między wątkami – pamięć operacyjnaMiędzy wątkami – pamięć operacyjna

Page 9: Podstawowe pojęcia programowania współbieżnego

Sekcja krytycznaSekcja krytyczna

Fragment Fragment programu, programu, który tylko który tylko jeden z wątków jeden z wątków może może wykonywać w wykonywać w jednym czasiejednym czasie

wątek 1 wątek 2

Działam na własnych danych

Działam na własnych danych

Czy mogę wejść?

Czy mogę wejść?

Wykonuję sekcję

krytyczną

Blokuję wejście

Czy mogę wejść?

Czy mogę wejść?Odblokowuję wejście

Działam na własnych danych Wykonuję

sekcję krytyczną

Blokuję wejście

Odblokowuję wejście

Page 10: Podstawowe pojęcia programowania współbieżnego

Algorytm Algorytm pojedynczego wątkupojedynczego wątku

Działam na własnych danych

Czy mogę wejść?

Wykonuję sekcję

krytyczną

Blokuję wejście

Odblokowuję wejście

Działam na własnych danych

T

Czekam chwilęF

protokół wstępny

protokół końcowy

protokół wstępny i końcowymuszą być zgodne dlawszystkich wątków

Page 11: Podstawowe pojęcia programowania współbieżnego

Wymagania czasoweWymagania czasowe

Żaden wątek nie może przebywać w sekcji Żaden wątek nie może przebywać w sekcji krytycznej w nieskończoność (również z krytycznej w nieskończoność (również z powodu sytuacji wyjątkowej czy błędu).powodu sytuacji wyjątkowej czy błędu).

Zachowanie wątków poza sekcją Zachowanie wątków poza sekcją krytyczną jest dowolne.krytyczną jest dowolne.

Wątki mogą się wykonywać z różnymi Wątki mogą się wykonywać z różnymi szybkościamiszybkościami

Page 12: Podstawowe pojęcia programowania współbieżnego

Zakleszczenie Zakleszczenie (blokada)(blokada)

wątek 1 wątek 2

Czekam na dane z wątku 2

Czy dostałem dane?

Wysyłam dane do wątku 2

Czekam na dane z wątku 1

Czy dostałem dane?

Wysyłam dane do wątku 1

N N

Page 13: Podstawowe pojęcia programowania współbieżnego

ZagłodzenieZagłodzeniewątek 1 wątek 2Działam na własnych danych

Działam na własnych danych

Czy mogę wejść?

Czy mogę wejść?

Wykonuję sekcję

krytyczną

Blokuję wejście

Czy mogę wejść?

Czy mogę wejść?Odblokowuję wejście

Działam na własnych danych Wykonuję

sekcję krytyczną

Blokuję wejście

Odblokowuję wejście

wątek 3

Działam na własnych danych

Czy mogę wejść?

Czy mogę wejść?

Czy mogę wejść?

Czy mogę wejść?

Czy mogę wejść?Czy mogę wejść?

Czy mogę wejść?

Czy mogę wejść?

Czy mogę wejść?

Wykonuję sekcję

krytyczną

Blokuję wejście

Czy mogę wejść?

wątek 3 zostaje zagłodzony – nie uzyskuje dostępu do współdzielonego zasobu

Czy mogę wejść?

Page 14: Podstawowe pojęcia programowania współbieżnego

Bezpieczeństwo i Bezpieczeństwo i żywotnośćżywotność

Poprawność programu sekwencyjnegoPoprawność programu sekwencyjnego częściowa poprawność – jeśli program się zatrzyma, to częściowa poprawność – jeśli program się zatrzyma, to

zwróci poprawne wynikizwróci poprawne wyniki własność stopu – program zawsze kiedyś się zatrzyma własność stopu – program zawsze kiedyś się zatrzyma

(nie zapętli się)(nie zapętli się) Bezpieczeństwo programów współbieżnych – Bezpieczeństwo programów współbieżnych –

uogólnienie własności częściowej poprawnościuogólnienie własności częściowej poprawności dwa programy nigdy nie znajdą się jednocześnie w dwa programy nigdy nie znajdą się jednocześnie w

swoich sekcjach krytycznychswoich sekcjach krytycznych Żywotność programów współbieżnych – Żywotność programów współbieżnych –

uogólnienie własności stopuuogólnienie własności stopu jeśli program czeka na wejście do sekcji krytycznej, to w jeśli program czeka na wejście do sekcji krytycznej, to w

końcu do niej wejdziekońcu do niej wejdzie

Page 15: Podstawowe pojęcia programowania współbieżnego

SprawiedliwośćSprawiedliwość

Gdy programy są identyczne:Gdy programy są identyczne: równy podział czasurówny podział czasu naprzemienne wejścia do sekcji krytycznejnaprzemienne wejścia do sekcji krytycznej

Gdy programy są różne?Gdy programy są różne? priorytetypriorytety zapobieganie zagłodzeniuzapobieganie zagłodzeniu