Podstawowe pojęcia programowania współbieżnego

Slides:



Advertisements
Podobne prezentacje
Instrukcje - wprowadzenie
Advertisements

Mechanizmy pracy równoległej
Jarosław Kuchta Monitory.
Klasyczne problemy współbieżności i ich rozwiązania
Programowanie obiektowe
Wykład nr 8: Zakleszczenia
METODY ANALIZY PROGRAMÓW
SYSTEMY OPERACYJNE WSTĘP
Semafory Autorzy : Michał Winciorek Łukasz Jackowicz.
PROGRAMOWANIE STRUKTURALNE
Systemy Równoległe.
Złożoność obliczeniowa
Wykład nr 7: Synchronizacja procesów
Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski.
Systemy operacyjne Wykład nr 4: Procesy Piotr Bilski.
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
Wykład 10 Prowadzący: dr Paweł Drozda
Synchronizacja Rozdział 5.
Wstęp do interpretacji algorytmów
ZARZĄDZANIE PROCESAMI
Problem rozbieżności czasów jednym z wielu problemów pojawiających się w systemach rozproszonych jest rozbieżność wartości zegarów na poszczególnych węzłach-maszynach.
Język Java Wielowątkowość.
6. SZEREGOWANIE PROCESÓW
Muteksy Muteksy (mutex – MUTual EXclusion) są prostymi obiektami synchronizacyjnymi pełniącymi rolę semaforów binarnych dla wątków (chroniącymi sekcje.
Semafory według normy POSIX
14. WĄTKI Procesy w tradycyjnym sensie (tworzone przez wykonanie funkcji fork) mają przydzielaną oddzielną przestrzeń adresową. W przestrzeni tej jest.
4. TEORETYCZNE MODELE PROCESÓW WSPÓŁBIEŻNYCH Teoretyczne modele uwzględniają wybrane cechy rzeczywistych procesów, stanowiąc kompromis pomiędzy łatwością
Programowanie współbieżne
Wieloprocesowy system operacyjny dla komputerów ATARI XL/XE
Wątki.
Zarządzanie transakcjami Wykład S. Kozielski. Zarządzanie transakcjami Transakcja – jedna lub więcej operacji na bazie danych stanowiących pewną logiczną
ZESTAW KOMPUTEROWY.
Zdzisław Stryła Instytut Fizyki UAM
Podstawy programowania II
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Systemy Rozproszone Synchronizacja 2
Wielozadaniowowść systemu operacyjnego Linux
Systemy operacyjne.
Zasada działania komputera
Budowa systemu komputerowego
1) Podstawowe (niezbędne) elementy zestawu komputerowego to: a) Jednostka centralna, mysz, monitor Jednostka centralna, mysz, monitor Jednostka centralna,
Współbieżność w informatyce i nie tylko
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
Automatyka i Robotyka Systemy czasu rzeczywistego Wykład 4.
Podstawowe usługi systemów operacyjnych
Sieciowe Systemy Operacyjne
Problem sekcji krytycznej
Koncepcja procesu Zadanie i proces. Definicja procesu Process – to program w trakcie wykonywania; wykonanie procesu musi przebiegać w sposób sekwencyjny.
POŚREDNIK Jak reprezentowana jest informacja w komputerze? liczby – komputer został wymyślony jako zaawansowane urządzenie służące do wykonywania.
Spis treści Architektura systemu windows Pamięć wirtualna Plik wymiany
Wykład 7 Synchronizacja procesów i wątków
W ą t e k (lekki proces) thread.
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
Systemy rozproszone  Rozdzielenie obliczeń między wiele fizycznych procesorów.  Systemy luźno powiązane – każdy procesor ma lokalną pamięć; procesory.
Podstawy programowania
Algorytmika.
Pamięć RAM Pamięć RAM.
Procesy, wątki Program a proces Proces: Przestrzeń adresowa, kod, dane, stos (część pamięci do przechowania zmiennych lokalnych i niektórych adresów) Otwarte.
ELEMENTY ZESTAWU KOMPUTEROWEGO
Algorytmy równoległe Algorytm równoległy pozwala na wykonywanie w danej chwili więcej niż jednej operacji. EREW - wyłączny odczyt i wyłączny zapis; CREW.
Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej Programowanie wielowątkowe w Javie Wykład 9 mgr inż. Michał Misiak.
Metody komunikacji i synchronizacji w obliczeniach równoległych Michał Radziszewski.
OPRACOWANIE: Beata Rusicka
Rodzaje systemów operacyjnych
Wstęp do interpretacji algorytmów
Wstęp do programowania Wykład 7
mysz drukarka Jednostka centralna monitor klawiatura.
Komponentowe systemy rozproszone
Wątki, programowanie współbieżne
POJĘCIE ALGORYTMU Wstęp do informatyki Pojęcie algorytmu
Zapis prezentacji:

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 sprawdzanie pisowni zapisywanie dokumentu

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.

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

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ęć

Kluczowe problemy współbieżności Współdzielenie zasobów Problem zakleszczenia (blokady) Problem zagłodzenia

Współdzielone zasoby Między programami – pamięć dyskowa (pliki), drukarka, mysz, klawiatura, usługi systemowe Między wątkami – pamięć operacyjna

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

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

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

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

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

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

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