Podstawowe pojęcia programowania współbieżnego
description
Transcript of Podstawowe pojęcia programowania współbieżnego
![Page 1: Podstawowe pojęcia programowania współbieżnego](https://reader036.fdocument.pub/reader036/viewer/2022062301/5681498a550346895db6d20b/html5/thumbnails/1.jpg)
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](https://reader036.fdocument.pub/reader036/viewer/2022062301/5681498a550346895db6d20b/html5/thumbnails/2.jpg)
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](https://reader036.fdocument.pub/reader036/viewer/2022062301/5681498a550346895db6d20b/html5/thumbnails/3.jpg)
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](https://reader036.fdocument.pub/reader036/viewer/2022062301/5681498a550346895db6d20b/html5/thumbnails/4.jpg)
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](https://reader036.fdocument.pub/reader036/viewer/2022062301/5681498a550346895db6d20b/html5/thumbnails/5.jpg)
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](https://reader036.fdocument.pub/reader036/viewer/2022062301/5681498a550346895db6d20b/html5/thumbnails/6.jpg)
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](https://reader036.fdocument.pub/reader036/viewer/2022062301/5681498a550346895db6d20b/html5/thumbnails/7.jpg)
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](https://reader036.fdocument.pub/reader036/viewer/2022062301/5681498a550346895db6d20b/html5/thumbnails/8.jpg)
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](https://reader036.fdocument.pub/reader036/viewer/2022062301/5681498a550346895db6d20b/html5/thumbnails/9.jpg)
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](https://reader036.fdocument.pub/reader036/viewer/2022062301/5681498a550346895db6d20b/html5/thumbnails/10.jpg)
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](https://reader036.fdocument.pub/reader036/viewer/2022062301/5681498a550346895db6d20b/html5/thumbnails/11.jpg)
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](https://reader036.fdocument.pub/reader036/viewer/2022062301/5681498a550346895db6d20b/html5/thumbnails/12.jpg)
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](https://reader036.fdocument.pub/reader036/viewer/2022062301/5681498a550346895db6d20b/html5/thumbnails/13.jpg)
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](https://reader036.fdocument.pub/reader036/viewer/2022062301/5681498a550346895db6d20b/html5/thumbnails/14.jpg)
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](https://reader036.fdocument.pub/reader036/viewer/2022062301/5681498a550346895db6d20b/html5/thumbnails/15.jpg)
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