1 / 15

Podstawowe pojęcia programowania współbieżnego

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

chill
Télécharger la présentation

Podstawowe pojęcia programowania współbieżnego

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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 Działam na własnych danych 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: • równy podział czasu • naprzemienne wejścia do sekcji krytycznej • Gdy programy są różne? • priorytety • zapobieganie zagłodzeniu

More Related