Programowanie współbieżne Wykład 7. Iwona Kochaoska

Podobne dokumenty
Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1

Procesy i wątki. Krzysztof Banaś Obliczenia równoległe 1

Przeplot. Synchronizacja procesów. Cel i metody synchronizacji procesów. Wątki współbieżne

Programowanie współbieżne Wykład 9 Synchronizacja dostępu do współdzielonych zasobów. Iwona Kochańska

Programowanie współbieżne Wykład 10 Synchronizacja dostępu do współdzielonych zasobów. Iwona Kochańska

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Zaawansowane programowanie w C++ (PCP)

Program jest więc strukturą statyczną zapisaną na jakimś nośniku. Natomiast proces jest wykonującym się programem.

Programowanie współbieżne Wykład 6. Iwona Kochaoska

Programowanie współbieżne i równoległe. dr inż. Marcin Wilczewski 2013

Wprowadzenie do programowania współbieżnego

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

1 Podstawowe definicje i pojęcia współbieżności

Programowanie współbieżne Wykład 2. Iwona Kochańska

Programowanie równoległe i rozproszone. W1. Wielowątkowość. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Wykład 4. Synchronizacja procesów (i wątków) cześć I. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

ξ II.UWr Wprowadzenie do STM

4. Procesy pojęcia podstawowe

Programowanie współbieżne i równoległe

Programowanie współbieżne Wykład 5. Rafał Skinderowicz

4. Procesy pojęcia podstawowe

Języki i Techniki Programowania II. Wykład 7. Współbieżność 1

Programowanie komputerów

Równoległość i współbieżność

Równoległość i współbieżność

Bazy danych w sterowaniu

Programowanie wielowątkowe. Tomasz Borzyszkowski

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Mogą pracować w środowisku: Scentralizowanym -mikrokontroler Rozproszonym sieć sterująca, systemy hierarchiczne. Komunikacja z syst.

Współczesne aplikacje sterowania i akwizycji danych są zbiorem komunikujących się wątków lub procesów współbieżnych.

Przykładem jest komputer z procesorem 4 rdzeniowym dostępny w laboratorium W skład projektu wchodzi:

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

Podstawy współbieżności

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Modelowanie procesów współbieżnych

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

Model pamięci. Rafał Skinderowicz

Program współbieżny jest zbiorem sekwencyjnych PROGRAMOWANIE C++

Programowanie współbieżne i rozproszone

Ograniczenia efektywności systemu pamięci

Programowanie Rozproszone i Równoległe

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Współbieżność w środowisku Java

Porządek dostępu do zasobu: procesory obszary pamięci cykle procesora pliki urządzenia we/wy

Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Współbieżność i synchronizacja procesów

Nazwa Wydziału Nazwa jednostki prowadzącej moduł Nazwa modułu kształcenia Kod modułu Język kształcenia Efekty kształcenia dla modułu kształcenia

Analiza efektywności przetwarzania współbieżnego

Język Java wątki (streszczenie)

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku.

Programowanie współbieżne i równoległe

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

Transakcje. (c) Instytut Informatyki Politechniki Poznańskiej

Literatura. 3/26/2018 Przetwarzanie równoległe - wstęp 1

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1

SYSTEMY OPERACYJNE WYKLAD 6 - wątki

Systemy Operacyjne synchronizacja i komunikacja procesów

Wykład 4. Synchronizacja procesów (i wątków) cześć I. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Plan wykładu. Przykład. Wprowadzenie BAZY DANYCH. Transakcje Hurtownie danych

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Java. Programowanie Obiektowe Mateusz Cicheński

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Programowanie współbieżne Wykład 2. Rafał Skinderowicz

Wstęp do programowania 2

Przetwarzanie Równoległe i Rozproszone

Klasyczne problemy współbieżności. Problem producenta i konsumenta Problem czytelników i pisarzy Problem pięciu filozofów

Multiprocessor Shared-Memory Information Exchange. Damian Klata, Adam Bułak

Analiza efektywności przetwarzania współbieżnego. Wykład: Przetwarzanie Równoległe Politechnika Poznańska Rafał Walkowiak Grudzień 2015

4. Procesy pojęcia podstawowe

16. Taksonomia Flynn'a.

STRATEGIE NISKOPOZIOMOWEGO PROGRAMOWANIA WSPÓŁBIEŻNEGO PLATFORMY.NET

Kurs rozszerzony języka Python

Spis treści. Księgarnia PWN: Maurice Herlihy, Nir Shavit - Sztuka programowania wieloprocesorowego. Podziękowania Przedmowa...

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

1 Przetwarzanie transakcyjne Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa... 3

Ograniczenia efektywności systemu pamięci

Podstawy informatyki. System operacyjny. dr inż. Adam Klimowicz

J. Ułasiewicz Programowanie aplikacji współbieżnych 1

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd

Podstawy programowania komputerów

Projektowanie oprogramowania systemów WĄTKI I SYNCHRONIZACJA

Nowoczesne technologie przetwarzania informacji

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system.

Zaawansowany kurs języka Python

5. Model komunikujących się procesów, komunikaty

Kurs programowania. Wykład 8. Wojciech Macyna

Bazy danych. Andrzej Łachwa, UJ, /15

Współbieżność i synchronizacja. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Aplikacje w Javie- wykład 11 Wątki-podstawy

Literatura. 11/16/2016 Przetwarzanie równoległe - wstęp 1

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Systemy operacyjne III

koniec punkt zatrzymania przepływów sterowania na diagramie czynności

Programowanie współbieżne Laboratorium nr 12

System plików warstwa fizyczna

System plików warstwa fizyczna

System plików warstwa fizyczna

Problemy współbieżności

Transkrypt:

Programowanie współbieżne Wykład 7 Iwona Kochaoska

Poprawnośd programów współbieżnych Właściwości związane z poprawnością programu współbieżnego: Właściwośd żywotności - program współbieżny jest żywotny, jeśli zapewnia, że każde pożądane zdarzenie w koocu zajdzie. Żywotnośd w wyniku przetwarzania, po skooczonej liczbie zdarzeo, zajdzie określony (oczekiwany) warunek. Żywotnośd może byd naruszona poprzez: deadlock zagłodzenie procesu/wątku livelock

Deadlock - zakleszczenie deadlock - zakleszczenie, blokada wzajemna. Sytuacja, w której co najmniej dwie różne akcje czekają na siebie nawzajem, więc żadna nie może się zakooczyd https://pl.wikipedia.org/wiki/plik:deadlock_diagram_pl.svg

Deadlock - zakleszczenie https://austingwalters.com/multithreading-common-pitfalls/ Każdy z wątków: A i B potrzebuje dostępu do wszystkich 4 zasobów, aby zakooczyd swoje działanie.

Deadlock - zakleszczenie Prawidłowa kolejnośd alokowania zasobów https://pl.wikipedia.org/wiki/plik:no_deadlock.svg

Livelock livelock - podobny do deadlock, przy czym stan dwóch procesów związanych z blokadą zmienia się w stosunku do drugiego procesu. Przykład z życia : dwoje ludzi spotyka się w wąskim korytarzu i każdy chce byd uprzejmy. Odsuwają się na bok w obie strony, by przepuścid drugą osobę, ale ponieważ obydwaj poruszają się w ten sam sposób, nie mogą się minąd. deadlock powoduje nieskooczone oczekiwanie, podczas gdy livelock powoduje marnowanie cykli procesora.

Livelock https://austingwalters.com/multithreading-common-pitfalls/

Livelock https://www.logicbig.com/tutorials/core-java-tutorial/java-multi-threading/thread-livelock.html

Zagłodzenie - starvation Zagłodzenie sytuacja, gdy procesowi nieustannie odmawia się niezbędnych zasobów. Bez tych zasobów program nigdy nie może zakooczyd swojego zadania. Występuje wtedy, gdy dwa programy posiadają zasoby, które musi ukooczyd drugi i żaden nie jest skłonny ich oddad. Występuje najczęściej na skutek: niewłaściwej pracy algorytmu szeregowania, którego zadaniem jest sprawiedliwy przydział zasobów, nadmiernego obciążenia systemu.

Zagłodzenie - starvation https://austingwalters.com/multithreading-common-pitfalls/

Poprawnośd programów współbieżnych Właściwości związane z poprawnością programu współbieżnego: Właściwośd bezpieczeostwa - program współbieżny jest bezpieczny, jeśli nigdy nie doprowadza do niepożądanego stanu. Bezpieczeostwo w każdym stanie przetwarzania współbieżnego (niezależnie od przeplotu) spełniony będzie pewien warunek, zwany od nazwy własności warunkiem bezpieczeostwa,

Bezpieczeostwo Bezpieczeostwo = thread-safety Segment kodu jest thread-safe jeśli manipuluje współdzielonym stanem w taki sposób, że gwarantowane jest bezpieczne (prawidłowe) wykonanie go przez wiele wątków pracujących w tym samym czasie. Kod thread-safe musi w odpowiedni sposób chronid współdzielony między wątkami stan programu. Kod unsafe to kod, który: nieprawidłowo chroni współdzielone dane oraz zasoby (shared state) zależy od zmiennego między wywołaniami stanu (np. funkcja rand()) wywołuje kod, który jest unsafe

Bezpieczeostwo Sposoby osiągnięcia bezpieczeostwa wielowątkowego: Stosowanie jawnego blokowana - muteksów, do ochrony danych współdzielonych. Operacje synchronizacji mogą znacznie spowolnid działanie programu. Niezmiennośd danych (Immutability) - stan obiektu nie może byd zmieniony po jego utworzeniu. Obiekty mogą byd bezpiecznie współdzielone, jeśli wątki mogą jedynie odczytywad ich stan. Atomowośd (Atomicity) - stosowanie zmiennych i flag atomowych

Wyścig (race condition, hazard) Wyścig (ang. race conditions) sytuacja, w której dwa lub więcej procesów wykonuje operację na zasobach dzielonych, a ostateczny wynik tej operacji jest zależny od momentu jej realizacji Aby zapobiec warunkom wyścigu należy stworzyd mechanizm zabraniający więcej niż jednemu procesowi dostępu do zasobów dzielonych w tym samym czasie. Należy wprowadzid mechanizm wzajemnego wykluczania (mutual exclusion) W poprawnym programie nie powinno byd wyścigów!

Pierwszy wyścig w historii (systemów komputerowych) o tragicznych skutkach

Wyścig Wątek A i wątek B zwiększają wartośd licznika w tym samym czasie, jednak po zakooczeniu ich działania licznik zwiększył się o 1, nie o 2!

Wyścig (race condition)

Wyścig (race condition) Fragment kodu źródłowego: int a = 1; //instrukcja 1 a = a * 5; //instrukcja 2 int b = a 1; //instrukcja 3 Wartość zmiennej b w zależności od kolejności wykonania instrukcji Kolejność Wartość zmiennej b 1,2,3 4 1,3,2 0 każda inna nieokreślona

kiedy kompilator może dokonywad operacji wyłącznie na rejestrach, a kiedy musi dokonad zapisu do pamięci Wyścig (race condition) jak utrzymad spójnośd kopii danych w pamięci podręcznej z wartością w pamięci głównej czy kompilator i procesor mogą zmieniad kolejnośd wykonywanych operacji (w tym operacji zapisu i odczytu)

Wyścig (race condition) W obliczeniach sekwencyjnych zagadnienie synchronizacji operacji na kopiach wartości zmiennych jest problemem głównie wydajności kompilatory i procesory są zobowiązane działad tak, aby efekt działania systemu komputerowego był zgodny z za pisem w kodzie źródłowym (czyli złudzeniem istnienia tylko j ednej kopii danych) nie dotyczy to działania debugerów, które śledzą nie ostateczne efekty działania kodu, ale stan systemu po każdej linii kodu

Wyścig (race condition) W obliczeniach równoległych zagadnienie synchronizacji operacji na kopiach wartości zmiennych wpływa na poprawnośd programów: brak wymuszenia operacji zapisu może powodowad, że różne wątki widzą różne wartości tej samej zmiennej wspólnej rozmaite środowiska wprowadzają dodatkowe konstrukcje (memory fences, operacje flush) wymuszające zapis do pamięci niejawne wymuszenie zapisu jest także związane z szeregiem operacji synchronizacji

Literatura http://smurf.mimuw.edu.pl/book/export/html/941 https://austingwalters.com/multithreading-common-pitfalls/ http://www.ia.pw.edu.pl/~tkruk/edu/soib2012/wyklad/w04 http://www.metal.agh.edu.pl/~banas/pr/pr_w02_wspolbiezno sc.pdf