RODZAJE KOMUNIKACJI MIĘDZY PROCESAMI

Slides:



Advertisements
Podobne prezentacje
Systemy czasu rzeczywistego
Advertisements

PRAM.
Sortowanie przez scalanie
Rekurencja 1 Podprogram lub strukturę danych nazywamy rekurencyjną, (recursive subprogram, recursive data structure) jeżeli częściowo składa się z samej.
Podstawowe pojęcia programowania współbieżnego
Mechanizmy pracy równoległej
Jarosław Kuchta Semafory.
Modelowanie aktywności
Jarosław Kuchta Monitory.
Klasyczne problemy współbieżności i ich rozwiązania
Wykład nr 8: Zakleszczenia
Metody Analizy Programów Wykład 02
Programowanie współbieżne i rozproszone
SYSTEMY OPERACYJNE WSTĘP
Semafory Autorzy : Michał Winciorek Łukasz Jackowicz.
PROGRAMOWANIE STRUKTURALNE
SYSTEMY OPERACYJNE PROCESY I WĄTKI
SYSTEMY OPERACYJNE SYNCHRONIZACJA PROCESÓW
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.
Systemy czasu rzeczywistego Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Systemy operacyjne Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Procesy współbieżne Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki.
SEMAFORY Dominik Niewiadomy Łukasz Dąbrowski.
Kurs Pascala – spis treści
Algorytm Rochio’a.
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
Ogólne jednostki programowe 1
Temat nr 10: System przerwań
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
4. TEORETYCZNE MODELE PROCESÓW WSPÓŁBIEŻNYCH Teoretyczne modele uwzględniają wybrane cechy rzeczywistych procesów, stanowiąc kompromis pomiędzy łatwością
Semafory.
Wątki.
Typy złożone, case, stałe. Typ zbiorowy type typ_zb = set of typ_podstawowy; Typem podstawowym może być tylko typ porządkowy. Typem podstawowym może być
Pamięć wspólna Przegląd stosowanych rozwiązań Marcin Kamiński, Michał Kotra Wydział EAIiE Katedra Automatyki Kraków, 2008.
Podstawy programowania
Zbiór do posortowania mieści się w pamięci
Programowanie strukturalne i obiektowe
Funkcje w Pascalu Przypomnienie wiadomości o procedurach Prowadzący: Anna Kaleta Piotr Chojnacki.
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
Wyrażenia w Turbo Pascalu.
Systemy operacyjne.
Zasada działania komputera
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.
Problem sekcji krytycznej
Przerwanie ang. interrupt.
Koncepcja procesu Zadanie i proces. Definicja procesu Process – to program w trakcie wykonywania; wykonanie procesu musi przebiegać w sposób sekwencyjny.
Informatyka MZT1 Wykład 6 Iteracje while i repeat Tablice Rekordy
Wykład 10 typ zbiorowy rekurencja.
Wykład 7 Synchronizacja procesów i wątków
W ą t e k (lekki proces) thread.
PL/SQL – dalsza wędrówka
Bariery synchronizacyjne Bariery są obiektami synchronizacyjnymi pakietu pthread służącymi do wyrównywania czasów pracy wątków wykonujących wspólne zadanie.
Systemy rozproszone  Rozdzielenie obliczeń między wiele fizycznych procesorów.  Systemy luźno powiązane – każdy procesor ma lokalną pamięć; procesory.
Procesor, pamięć, przerwania, WE/WY, …
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:

RODZAJE KOMUNIKACJI MIĘDZY PROCESAMI Wzajemne wyłączanie Synchronizacja Niedopuszczanie do blokad

RODZAJE KOMUNIKACJI MIĘDZY PROCESAMI - wzajemne wyłączanie Zasoby systemowe: podzielne (jednostki centralne, pliki przeznaczone do czytania, obszary pamięci, chronione przed wprowadzeniem do nich zmian) niepodzielne (większość urządzeń zewnętrznych, pliki zapisywalne, obszary danych, które ulegają zmianom) Wzajemne wyłączanie - zapewnienie takich warunków działania systemu, by tylko jeden proces na raz mógł korzystać z zasobów niepodzielnych

Problem sekcji krytycznej

RODZAJE KOMUNIKACJI MIĘDZY PROCESAMI - synchronizacja Nie można przewidzieć jaka będzie szybkość jednego procesu w stosunku do drugiego procesu, Mówimy, że procesy przebiegają względem siebie asynchronicznie. Wyznacza się pewne punkty, w których procesy muszą synchronizować swoje działanie. Poza te punkty jeden proces nie może przejść dopóty, dopóki drugi proces nie zakończy swego działania. Zadaniem systemu operacyjnego jest stworzenie mechanizmów umożliwiających synchronizację procesów.

Relacje pierwszeństwa między procesami F F szeregowe p7 p8 współbieżne F szeregowo-współbieżne

RODZAJE KOMUNIKACJI MIĘDZY PROCESAMI - blokada (deadlock) kilka procesów współzawodniczy o zasoby każdy proces aby móc nadal działać musi skorzystać z tych zasobów, których używa inny proces żaden proces nie może kontynuować swej pracy zadanie systemu operacyjnego - niedopuszczanie do powstania blokady lub ograniczanie jej skutków

Zakleszczenie ( deadlock )

Warunki jakie musi spełniać wzajemne wykluczanie Symetria i równouprawnienie procesów - procesy są traktowane jako równoważne, nie mogą mieć przypisanych statycznych priorytetów, wszystkie decyzje dotyczące wyboru procesów muszą być względem nich sprawiedliwe Niezależność szybkości procesów - nie wolno czynić żadnych założeń dotyczących względnej szybkości. Skończony czas podejmowania decyzji - jeżeli więcej niż jeden proces chce wejść do sekcji krytycznej, to decyzja o tym, który proces zostanie wybrany musi być podjęta w skończonym czasie. Niezależność zaproponowanego mechanizmu od działania procesu poza sekcją krytyczną.

Wzajemne wyłączanie N procesów; nieskończone pętle, sekcja krytyczna, sekcja lokalna Dodatkowe instrukcje dookoła sekcji krytycznej - protokół wstępny, protokół końcowy Proces nie może się zatrzymać w sekcji krytycznej ani podczas wykonywania protokołów Nie może wystąpić blokada Nie może wystąpić zagłodzenie Przy braku rywalizacji o sekcję krytyczną pojedynczy proces wchodzi do SK; takie rozwiązanie wymaga minimum narzutu

Synchronizacja 1 użycie zmiennej licznikowej var x:integer:=0; procedure P; begin cycle instrukcje-A; l1: x:=x+1; if x<>1 then x:=x-1; goto l1; /we sekcja–krytyczna; x:=x-1; /wy instrukcje-B end WKW wejścia do s-k: x 0->1 Problem: 2 równoległe procesy => x=2; żaden z nich nie wchodzi do s-k

Synchronizacja 2 użycie zmiennych lokalnych l var x:integer:=0; procedure P; var l:integer:=1; begin cycle instrukcje-A; l1: x:=:l; /niepodzielna wymiana ; we if l<>0 then goto l1; sekcja–krytyczna; x:=:l; /wy instrukcje-B end WKW wejścia do s-k: x 0->1 Problem: aktywne oczekiwanie

Synchronizacja 3 rozwiązanie Dijkstry – naprzemienne wykonywanie Synchronizacja 3 rozwiązanie Dijkstry – naprzemienne wykonywanie procesów var x:integer:=2; procedure P1; begin cycle l1: if x=2 then goto l1 sekcja–krytyczna; x:=2; instrukcje-A1; end procedure P2; begin cycle l2: if x=1 then goto l2 sekcja–krytyczna; x:=1; instrukcje-A2; end Problem: możliwe wstrzymywanie procesów poza s-k

Synchronizacja 4 - rozwiązanie Dekkera procedure P2; begin cycle a2: c2:=false; l2: if not c1 then begin if x=2 then goto l2; c2:=true; b2: if x=1 then goto b2; goto a2 end sekcja–krytyczna; x:=1; c2:=true; instrukcje-A2; var x:integer:=1; boolean c1,c2; c1:=c2:=true procedure P1; begin cycle a1: c1:=false; l1: if not c2 then begin if x=1 then goto l1; c1:=true; b1: if x=2 then goto b1; goto a1 end sekcja–krytyczna; x:=2; c1:=true; instrukcje-A1; x – czyja kolej; c – sekcja wolna

Algorytm piekarniowy Synchronizuje 2 lub więcej procesów Proces, który chce wejść do SK bierze bilet (numerowany wg kolejności) Proces czeka, aż jego bilet będzie miał najniższą wartość

OPERACJE SEMAFOROWE Rok 1965, - Dijkstra'e wprowadza pojęcia semaforów oraz wykonywanych na nich operacji czekaj (wait) i sygnalizuj (signal). Semafor jest to nieujemna liczba całkowita, na której z wyjątkiem nadawania wartości początkowych mogą działać jedynie operacje czekaj i sygnalizuj Operacja sygnalizuj - V(s) - zwiększenie wartości semafora s o 1 niepodzielna operacja zmienna semaforowa niedostępna dla innych procesów Operacja czekaj P(s) - zmniejszenie wartości semafora s o 1, o ile to możliwe operacja niepodzielna może spowodować wstrzymanie jakiegoś procesu

Jednoczesne wywołanie operacji P lub V na tym samym semaforze – operacje wykonane sekwencyjnie w dowolnym porządku Wybór procesu czekającego na dokończenie operacji P – arbitralny, nieznany

OPERACJE SEMAFOROWE – sekcja krytyczna czekaj (nazwa semafora) sekcja krytyczna sygnalizuj (nazwa semafora) Jeżeli sekcja jest wolna - proces wchodzi do niej bezpośrednio Jeżeli sekcja jest zajęta - proces jest czasowo zawieszany Po zwolnieniu sekcji krytycznej przez proces, sprawdza się, czy nie ma zawieszonych procesów oczekujących na wejście do tej sekcji.

Implementacja operacji semaforowych

Implementacja operacji semaforowej czekaj - P Czekaj(s) zajmij Znajdź deskryptor bieżącego procesu N T s>0 Usuń z kolejki procesora s:=s-1 Dodaj do kolejki semafora uwolnij Powrót do dyspozytora

Implementacja operacji semaforowej sygnalizuj V sygnalizuj(s) zajmij Usuń z kolejki jakiś proces N Czy pusta kolejka semafora T Dodaj do kolejki procesora s:=s+1 uwolnij Powrót do dyspozytora

ZASTOSOWANIE SEMAFORÓW SEMAFORY BINARNE mogą przyjmować dwie wartości: 0, 1 rozwiązanie problemów wzajemnego wykluczania ZASTOSOWANIE SEMAFORÓW problemu wykluczenia wzajemnego problemy synchronizacji problemy komunikacji

Strukturalne mechanizmy synchronizacji regiony krytyczne (Horae, Brinch Hansen) monitory

Rejony krytyczne Zmienna dzielona v - obiekt typu T, na którym są wykonywane operacje wewnątrz sekcji krytycznej var v: shared T; rejon krytyczny (sekcja krytyczna dla instrukcji I1,..IN) region v do I1;...;IN end; wewnątrz rejonów krytycznych związanych z tą samą zmienną dzieloną może pracować tylko 1 proces wewnątrz rejonu krytycznego proces przebywa w skończonym czasie we. do rejonu krytycznego musi być możliwe dla dowolnego procesu w skończonym czasie

Warunkowe rejony krytyczne var R: shared T; region R do I1;...;IN ; await W1; .......... Ii;...;Ii+1 ; await Wj; ............. end; uproszczone postacie: with R when W do I; region when W do I; spr. war. przy we. region R do I await W; spr. war. po wy.

monitory skoncentrowanie w 1 m-cu deklaracji wspólnych zmiennych dzielonych i operacji na nich działających dostęp do nich - poprzez wywołanie procedury monitora wzajemne wykluczanie kolejnych odwołań do procedur monitora var id-monitora: monitor deklaracje zmiennych; procedury; lista-udostepnionych nazw procedur; end.

MECHANIZMY SYNCHRONIZACJI PROCESÓW Synchronizacja programowa Niepodzielne operacje (zamiana, testuj i ustal) Zakaz przerwań ( środ. 1-procesorowe, wieloprocesorowe) Aktywne oczekiwanie (busy waiting) wirujaca blokada (spinlock) Semafory Mechanizm pierwotny Nie wymaga aktywnego oczekiwania Nie jest strukturalny Możliwość błędu w systemie ( blokada ) Strukturalne mechanizmy synchronizacji

Producent - konsument W systemie pracuje P (P>=1) procesów producenta i K (K>=1) procesów konsumenta. Każdy proces producenta przygotowuje porcję informacji, a następnie przekazuje ją procesowi konsumenta. procedura producent: procedura konsument przygotowanie informacji wysłanie informacji odebranie informacji przetwarzanie informacji

PRODUCENT - KONSUMENT Zakładamy, że operujemy na puli n buforów, z których każdy mieści jedną jednostkę. Semafor s1 umożliwia wzajemne wyłączanie dostępu do puli buforów i ma początkową wartość 1 (s1=1). Semafory pusty i pełny zawierają odpowiednio liczbę pustych i pełnych buforów. Semafor pusty ma wartość początkową n (pusty=n). Semafor pełny ma wartość początkową 0 (pełny=0).

PRODUCENT - KONSUMENT producent konsument begin begin repeat repeat produkowanie jednostki wait (pełny) wait (pusty) wait (s1) wait (s1) pobranie jednostki z bufora dodanie jednostki do bufora signal (s1) signal (s1) signal ( pusty) signal (pełny) end end

Zrealizuj zadanie synchronizacji procesy A, B, C wykonują następujące zadania (taski) w każdym przebiegu otwartej pętli. Proces A składa się z zadań t11 i t12, proces B zawiera zadanie t21, proces C natomiast zadania t31 oraz t32. Zbiór tasków T={t11,t12,t21,t31,t32} jest częściowo uporządkowany relacją R określoną na zbiorze G G = {(t11, t21), (t11, t31), (t31, t32), (t21, t32), (t32, t12)}. Przy użyciu semaforów zsynchronizuj procesy A, B, C tak, aby w każdym przebiegu pętli wykonanie tasku aT poprzedzało wykonanie bT, gdy (a, b) R Rozwiązanie przedstaw w postaci pseudokodów dla procesów A, B, C.

G = {(t11, t21), (t11, t31), (t31, t32), (t21, t32), (t32, t12)} proces A proces B proces C t11 t31 t21 t12 t32

s1=0; s2=0; s3=0 - wartości początkowe semaforów Proces A Proces B Proces C begin begin begin repeat repeat repeat do t11 wait (s1) wait (s2) signal (s1) do t21 do t31 signal (s2) signal (s3) wait (s3) wait (s4) end do t32 do t12 signal (s4) end end

Problem czytelników i pisarzy Dwie grupy procesów silnie konkurujących o zasoby: piszący czytający piszący - muszą mieć zapewnione wykluczenie wzajemne względem siebie oraz względem procesów czytających przy korzystaniu z zasobu. czytający - wiele procesów może jednocześnie być w posiadaniu zasobu, przy czym nie może z niego wtedy korzystać żaden z procesów piszących

W rozwiązaniu zastosowano dwa semafory binarne: sp - dla zapewnienia wykluczenia wzajemnego procesu piszącego względem wszystkich innych procesów w - dla zapewnienia wykluczenia wzajemnego procesowi czytającemu w chwilach rozpoczynania i kończenia korzystania z zasobu Faworyzowane są procesy czytające - uzyskują one bezzwłoczny dostęp do zasobu z wyjątkiem chwil, w których korzysta z niego proces piszący. sp=w=1

Czytanie Pisanie begin begin repeat repeat wait (w) wait (sp) lc=lc+1 pisanie if lc=1 then wait (sp) end signal (sp) signal (w) end czytanie wait (w) lc=lc-1 if lc=0 then signal (sp) end signal (w) end

modyfikacja priorytet dla procesów piszących semafory: w1 - wykluczenie wzajemne proc. czytających w chwili rozpoczynania i kończenia korzystania z zasobu, sp - wykluczenia wzajemnego procesu piszącego względem wszystkich innych procesów sc - ochrona we. do sekcji kryt. procesu czytającego w2 - wykluczenie wzajemne proc. piszących w chwili rozpoczynania i kończenia korzystania z zasobu w3 - zapewnienie priorytetu pisania nad czytaniem w1=w2=w3=sc=sp=1

Czytanie Pisanie begin begin repeat repeat wait (w3) wait(w2) wait (sc) lp=lp+1 wait(w1) if lp=1 then lc=lc+1 wait(sc) end if lc=1 then wait (sp) end signal (w2) signal (w1) wait(sp) signal(sc) pisanie signal(w3) signal(sp) czytanie wait(w2) wait (w1) lp=lp-1; lc=lc-1 if lp=0 then if lc=0 then signal (sp) end signal(sc) end; signal (w1) signal(w2) end end

Pięciu filozofów 3 4 3 4 2 2 1 1

Filozof begin repeat myślenie; wait(sem[name]); wait(sem[(name+1)mod 5]); request (widelec[name], widelec[(name+1)mod5]); jedzenie; release(widelec[name], widelec[(name+1)mod5]); end możliwość zakleszczenia