Post on 15-Jan-2016
description
Podstawowe Podstawowe pojęcia pojęcia
programowania programowania współbieżnegowspółbieżnego
Jarosław KuchtaJarosław Kuchta
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
Współbieżność w Współbieżność w systemach operacyjnychsystemach operacyjnych
Jednoczesna:Jednoczesna: edycja tekstuedycja tekstu sprawdzanie pisownisprawdzanie pisowni zapisywanie dokumentuzapisywanie dokumentu
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.
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
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ęć
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
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
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
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
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
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
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ść?
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
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