Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałAnastazy Kęsik Został zmieniony 11 lat temu
1
Podstawowe pojęcia programowania współbieżnego
Jarosław Kuchta Podstawowe pojęcia programowania współbieżnego
2
Współbieżność w życiu codziennym
Jednocześnie: chodzimy oddychamy prowadzimy rozmowę jemy? Korzystamy ze współdzielonego zasobu - gardła
3
Współbieżność w systemach operacyjnych
Jednoczesna: edycja tekstu sprawdzanie pisowni zapisywanie dokumentu
4
Współbieżność a równoległość
Wykonanie współbieżne – w tym samym czasie z punktu widzenia niezależnego obserwatora Wykonanie równoległe – w tym samym czasie na przynajmniej dwóch procesorach Wniosek – wykonanie współbieżne wymaga mniej procesorów niż wątków sterowania – w szczególności możliwe jest na jednym procesorze.
5
Wykonanie współbieżne z podziałem czasu
Kwanty czasu procesora przydzielane są na przemian dla wielu wątków Przełączenie wątków wymaga zapamiętywania i odtwarzania stanów poszczególnych wątków Kwanty czasu nie muszą być tej samej długości Wątki mogą być aktywowane z różną częstością Jeśli kwanty czasu są odpowiednio krótkie, to wątki wydają się być wykonane równolegle, choć naprawdę są tylko wykonane współbieżnie wątek 1 wątek 2
6
Wątek a proces Wątek – sekwencja operacji wykonywanych jedna po drugiej. Proces – wątek, który ma osobno przydzieloną pamięć. Procesy w systemach operacyjnych = programy Wątki – jeden proces może mieć wiele wątków, które współdzielą pamięć
7
Kluczowe problemy współbieżności
Współdzielenie zasobów Problem zakleszczenia (blokady) Problem zagłodzenia
8
Współdzielone zasoby Między programami – pamięć dyskowa (pliki), drukarka, mysz, klawiatura, usługi systemowe Między wątkami – pamięć operacyjna
9
Sekcja krytyczna Fragment programu, który tylko jeden z wątków może wykonywać w jednym 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ść? Blokuję wejście Wykonuję sekcję krytyczną Czy mogę wejść? Odblokowuję wejście Czy mogę wejść? Działam na własnych danych Blokuję wejście Wykonuję sekcję krytyczną Odblokowuję wejście
10
Algorytm pojedynczego wątku
Działam na własnych danych Czy mogę wejść? F Czekam chwilę protokół wstępny T Blokuję wejście protokół wstępny i końcowy muszą być zgodne dla wszystkich wątków Wykonuję sekcję krytyczną protokół końcowy Odblokowuję wejście Działam na własnych danych
11
Wymagania czasowe Żaden wątek nie może przebywać w sekcji krytycznej w nieskończoność (również z powodu sytuacji wyjątkowej czy błędu). Zachowanie wątków poza sekcją krytyczną jest dowolne. Wątki mogą się wykonywać z różnymi szybkościami
12
Zakleszczenie (blokada)
wątek 1 wątek 2 Czekam na dane z wątku 2 Czekam na dane z wątku 1 N N Czy dostałem dane? Czy dostałem dane? Wysyłam dane do wątku 2 Wysyłam dane do wątku 1
13
Zagłodzenie wątek 1 wątek 2 wątek 3 Działam na własnych danych
Czy mogę wejść? Czy mogę wejść? Czy mogę wejść? Blokuję wejście Wykonuję sekcję krytyczną Czy mogę wejść? Czy mogę wejść? Odblokowuję wejście Czy mogę wejść? Czy mogę wejść? Działam na własnych danych Blokuję wejście Czy mogę wejść? Wykonuję sekcję krytyczną Czy mogę wejść? Czy mogę wejść? Czy mogę wejść? Odblokowuję wejście Czy mogę wejść? Czy mogę wejść? Czy mogę wejść? Blokuję wejście Czy mogę wejść? Wykonuję sekcję krytyczną wątek 3 zostaje zagłodzony – nie uzyskuje dostępu do współdzielonego zasobu
14
Bezpieczeństwo i żywotność
Poprawność programu sekwencyjnego częściowa poprawność – jeśli program się zatrzyma, to zwróci poprawne wyniki własność stopu – program zawsze kiedyś się zatrzyma (nie zapętli się) Bezpieczeństwo programów współbieżnych – uogólnienie własności częściowej poprawności dwa programy nigdy nie znajdą się jednocześnie w swoich sekcjach krytycznych Żywotność programów współbieżnych – uogólnienie własności stopu jeśli program czeka na wejście do sekcji krytycznej, to w końcu do niej wejdzie
15
Sprawiedliwość Gdy programy są identyczne: Gdy programy są różne?
równy podział czasu naprzemienne wejścia do sekcji krytycznej Gdy programy są różne? priorytety zapobieganie zagłodzeniu
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.