Semafory Autorzy : Michał Winciorek Łukasz Jackowicz.

Slides:



Advertisements
Podobne prezentacje
Rekurencja 1 Podprogram lub strukturę danych nazywamy rekurencyjną, (recursive subprogram, recursive data structure) jeżeli częściowo składa się z samej.
Advertisements

Podstawowe pojęcia programowania współbieżnego
Mechanizmy pracy równoległej
Jarosław Kuchta Semafory.
Jarosław Kuchta Monitory.
Programowanie współbieżne i rozproszone
Synchronizacja w systemach rozproszonych
SYSTEMY OPERACYJNE WSTĘP
Systemy rozproszone W. Bartkiewicz Wykład 9. Wprowadzenie do koordynacji programów współbieżnych.
Języki programowania C++
PROGRAMOWANIE STRUKTURALNE
SYSTEMY OPERACYJNE PROCESY I WĄTKI
SYSTEMY OPERACYJNE SYNCHRONIZACJA PROCESÓW
Nośniki sygnałów - przykład Nośniki sygnałów – przykład.
ZŁOŻONOŚĆ OBLICZENIOWA
Turbo pascal – instrukcje warunkowe, iteracyjne,…
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Rekurencja Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Procesy współbieżne Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki.
Rekurencja Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
SEMAFORY Dominik Niewiadomy Łukasz Dąbrowski.
ANALITYCZNE MODELE SYSTEMÓW KOLEJKOWYCH
Kurs Pascala – spis treści
Wykład nr 7: Synchronizacja procesów
Systemy operacyjne Wykład nr 4: Procesy Piotr Bilski.
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
Synchronizacja Rozdział 5.
Instrukcje 1 Definicje wstępne Formalny opis akcji wykonywanej przez komputer nazywamy instrukcją ( statement), Każda instrukcja kończona jest średnikiem.
Temat nr 10: System przerwań
Instrukcja skoku GO TO etykieta Np. GO TO 100 ….. 100WRITE (*,*) Przeskok do instrukcji 100 Uwaga! NIE WOLNO skakać do wnętrzna złożonych instrukcji warunkowych.
Semantyki programów współbieżnych " Determinizm programów sekwencyjnych, " Nie-determinizm programów współbieżnych, " prawdziwa równoległość vs.przeploty.
Zdarzenia w programach VI (zdarzenia rejestrowane dynamicznie)
ZARZĄDZANIE PROCESAMI
PASCAL (2) dr Anna Kwiatkowska.
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
8. LOGIKA TEMPORALNA Składnia zdaniowej logiki temporalnej:
4. TEORETYCZNE MODELE PROCESÓW WSPÓŁBIEŻNYCH Teoretyczne modele uwzględniają wybrane cechy rzeczywistych procesów, stanowiąc kompromis pomiędzy łatwością
9. KOORDYNACJA PROCESÓW WSPÓŁBIEŻNYCH PRZY UŻYCIU INTERPRETATORA
RODZAJE KOMUNIKACJI MIĘDZY PROCESAMI
Semafory.
Wątki.
Projektowanie dynamiki - diagramy interakcji
Podstawy programowania
Operacje na strukturach listowych
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
Wyrażenia w Turbo Pascalu.
Systemy operacyjne.
Budowa systemu komputerowego
1 Wykład 8 Podprogramy. 2 Pojęcie i istota stosowania dzielenie programu na części (logicznie spójne) - nazwane - niezależne od pozostałych części - z.
Automatyka i Robotyka Systemy czasu rzeczywistego Wykład 4.
Podstawowe usługi systemów operacyjnych
Problem sekcji krytycznej
zadania z synchronizacji
Programowanie baz danych
Wykład 7 Synchronizacja procesów i wątków
W ą t e k (lekki proces) thread.
Systemy operacyjne (wiosna 2014)
Systemy rozproszone  Rozdzielenie obliczeń między wiele fizycznych procesorów.  Systemy luźno powiązane – każdy procesor ma lokalną pamięć; procesory.
Algorytmika.
Metody Matematyczne w Inżynierii Chemicznej Podstawy obliczeń statystycznych.
PHP Instrukcja warunkowa if Damian Urbańczyk. Warunek? Instrukcję warunkową wykorzystujemy wtedy, gdy chcemy sprawdzić pewien fakt, który może być prawdziwy.
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.
Systemy Operacyjne Synchronizacja
Pętle – instrukcje powtórzeń
Wstęp do programowania Wykład 7
Zapis prezentacji:

Semafory Autorzy : Michał Winciorek Łukasz Jackowicz

Pojęcia wstępne proces procesy współbieżne (rys a i b)

Procesy mogą ze sobą współpracować lub współzawodniczyć. komunikacja synchronizacja program współbieżny - składa się z kilku sekwencyjnych procesów, w których wykonywanie poszczególnych instrukcji może być przeplatane, lecz same procesy muszą się ze sobą komunikować by synchronizować działanie bądź wymieniać dane.

Blokada i zagłodzenie zasób dzielony sekcja krytyczna blokada – wstrzymana grupa procesów, oczekujących na zdarzenie, które może zapoczątkować tylko jakiś inny proces z tej grupy ang. deadlock

Semafor zagłodzenie – nieskończone wstrzymywanie procesu przez wykonywanie innych, współbieżnych do niego procesów Semafor stanowi mechanizm synchronizacji procesów, przeciwdziała wystąpieniu zjawisk blokady i zagłodzenia definicja semafora ogólnego S – zmienna całkowita, nieujemna, o nadanej pewnej wartości początkowej

dozwolone operacje na semaforach Czekaj(S). Jeśli S>0 to S:=S-1, Jeśli nie to wstrzymaj wykonanie procesu. Taki proces nazywamy wstrzymanym przez semafor S. Sygnalizuj(S) Jeśli są procesy wstrzymane przez ten semafor, to wznów jeden z nich, Jeśli nie to S:=S+1. własności semafora Czekaj(S) i Sygnalizuj(S) to operacje atomowe Niezmienniki : a) S >= 0 b) S = S0 + #Sygnały - #Oczekiwania

rodzaje semaforów : uwagi i wnioski Sygnalizuj(S) musi wznowić wstrzymany wcześniej proces ... ... ale który rodzaje semaforów : Semafor z kolejką oczekujących procesów – FIFO Semafor z aktywnym czekaniem - wartość S jest sprawdzana w pętli aktywnego czekania Czekaj(S): Loop If S>0 then S:=S-1; exit; endif; End Loop; Silnie i słabo uczciwy semafor. uwagi i wnioski

Wzajemne wykluczanie Problem : zsynchronizowanie N procesów, z których każdy w nieskończonej pętli na przemian zajmuje się „własnymi sprawami” i wykonuje sekcję krytyczną, w taki sposób, aby wykonywanie sekcji krytycznych jakichkolwiek dwóch lub więcej procesów nie pokrywało się w czasie. Problem występujący w rzeczywistych systemach w związku z przydzielaniem zasobów komputera wielu procesom. sposób rozwiązania przy użyciu semafora z kolejką oczekujących procesów Oznaczenia : e(s) – wartość zmiennej semaforowej e0(s)– wartość początkowa zm. semaforowej, jej wartość zależy od rozwiązywanego problemu, określa krotność zasobu f(s) – kolejka procesów czekających na dostęp do zasobu P(s) – procedura wejścia, wykonywana dla każdego procesu zgłaszającego chęć skorzystania z zasobu V(s) – procedura wyjścia, zwalniająca niepotrzebny danemu procesowi zasób, wykonywana dla każdego procesu, który kończy użytkowanie zasobu

implementacja procedur P(s) : begin e(s):=e(s)-1 if e(s) < 0 then stan(R):=zawieszony R do kolejki f(s) end else R zajmuje zasób V(s) : begin e(s):=e(s)+1 if e(s) <= 0 then wyprowadź Q z kolejki f(s) stan(Q):=aktywny end Ug. R to proces pytający o dostęp do zasobu

Problem obiadujących filozofów Założenia: Filozof je tylko wtedy gdy ma dwa widelce, przy czym nie może podnieść na raz dwóch widelców. Dwóch filozofów nie może jeść jednocześnie tym samym widelcem Nie można wyróżniać żadnego z filozofów Żaden z filozofów nie zajmuje się tylko jedzeniem, po skończonym posiłku zapada w medytacje

Rozwiązanie: Można przyjąć, że każdy widelec jest semaforem. Filozof próbując podnieść widelec wykonuje operacje czekaj w stosunku do semafora. Odkładając widelec wykonuje natomiast operacje sygnalizuj. Zatem dzielone dane to : var pałeczka: arrey[0..4] of semafor; przy czym wszystkie elementy tablicy pałeczka mają na początku wartość 1. Repeat czekaj(pałeczka[i]); czekaj(pałeczka[i + 1mod 5]); jedzenie sygnalizuj(pałeczka[i]); sygnalizuj(pałeczka[i + 1mod 5]); myślenie Until false;

Problem pięciu obiadujących filozofów jest uznawany za klasyczne zagadnienie synchronizacji, z uwagi na to, że stanowi przykład szerokiej klasy problemów sterowania współbieżnością. Jest prostym odzwierciedleniem konieczność przydzielania wielu zasobów do wielu procesów w sposób grożący zakleszczeniem i zagłodzeniem. Sposoby rozwiązania problemu zakleszczenia: pozwolić zasiadać do stołu co najwyżej czterem filozofom naraz pozwolić filozofowi na podnoszenie widelców tylko wtedy, gdy są oba dostępne (tego zabiegu należy dokonać w sekcji krytycznej) zastosować rozwiązanie asymetryczne, tzn. filozof o numerze nieparzystym podnosi najpierw widelec po lewej stronie, a potem sięga na prawo, podczas gdy filozof parzysty rozpoczyna od widelca znajdującego się po jego prawej stronie a potem zwraca się ku lewej stronie.