Synchronizacja procesów

Wielkość: px
Rozpocząć pokaz od strony:

Download "Synchronizacja procesów"

Transkrypt

1 Synchronizacja procesów Problem sekcji krytycznej. Sprzętowe środki synchronizacji. Semafory. Klasyczne problemy synchronizacji. Monitory. Bariery. Przykłady synchronizacji procesów: Solaris, Windows XP/Vista/7/8/10, Linux. Zakleszczenia. Wiesław Płaczek Systemy Operacyjne: Wykład 5 1

2 Problem sekcji krytycznej Weźmy n procesów rywalizujących o dostęp do wspólnych (dzielonych) danych. Każdy proces ma segment kodu zwany sekcją krytyczną (critical section), w którym może korzystać ze wspólnych danych. Problem: Należy zapewnić, że kiedy jeden proces wykonuje sekcję krytyczną, wówczas żaden inny proces nie jest dopuszczany do wykonywania swojej sekcji krytycznej. Ø Wykonywanie sekcji krytycznej powinno podlegać wzajemnemu wykluczaniu (mutual exclusion). Wiesław Płaczek Systemy Operacyjne: Wykład 5 2

3 Struktura typowego procesu do { sekcja wejściowa sekcja krytyczna sekcja wyjściowa reszta } while (1); Wiesław Płaczek Systemy Operacyjne: Wykład 5 3

4 Warunki sekcji krytycznej 1. Wzajemne wykluczanie: Jeśli jeden proces wykonuje swoją sekcję krytyczną, to żaden inny proces nie działa w sekcji krytycznej. 2. Postęp: Jeżeli żaden proces nie wykonuje swojej sekcji krytycznej oraz istnieją procesy, które chcą wejść do swoich sekcji krytycznych, to tylko procesy nie wykonujące swoich reszt mogą rywalizować o wejście do sekcji krytycznej i wybór ten nie może być odwlekany w nieskończoność. 3. Ograniczone czekanie: Między chwilą zgłoszenia przez proces chęci wejścia do swojej sekcji krytycznej a chwilą uzyskania na to pozwolenie musi istnieć wartość graniczna liczby wejść innych procesów do sekcji krytycznych. ü ü Zakładamy, że każdy proces jest wykonywany z niezerową szybkością. Nie robimy założenia co do względnej szybkości n procesów. Wiesław Płaczek Systemy Operacyjne: Wykład 5 4

5 Rozwiązanie dla dwu procesów (algorytm Petersona) Dwa procesy: P 0 i P 1 zawierające sekcje krytyczne. Dzielone zmienne: int kolej = 0; /* czyja kolej wejścia do sekcji krytycznej */ bool flaga[2] = {false,false}; /* chęć wejścia do SK */ Ø Kod dla procesu P i (i = 0, 1; j = 1 i) ü do { flaga[i] = true; kolej = j; while (flaga[j] && kolej == j) ; /* czekaj */ sekcja krytyczna flaga[i] = false; reszta } while (1); Spełnia wszystkie trzy warunki poprawnego rozwiązania problemu sekcji krytycznej sprawdzić! Wiesław Płaczek Systemy Operacyjne: Wykład 5 5

6 Rozwiązanie dla wielu procesów Algorytm piekarni (Bakery algorithm) Sekcja krytyczna dla n procesów: Ø Spełnia wszystkie warunki sekcji krytycznej! Przed wejściem do sekcji krytycznej proces otrzymuje numer. Posiadacz najmniejszego numeru wchodzi do sekcji krytycznej. Jeżeli procesy P i i P j otrzymały ten sam numer oraz i < j, to P i będzie obsłużony najpierw. Schemat numerowania generuje niemalejące ciągi kolejnych liczb naturalnych, tzn. 1, 2, 3, 3, 3, 4, 5, 5,... Notacja: (a,b) < (c,d), jeżeli a < c lub jeżeli a = c i b < d. Dzielone zmienne: bool wybieranie[n]; wszystkie zainicjowane na: false int numer[n]; wszystkie zainicjowane na: 0 Wiesław Płaczek Systemy Operacyjne: Wykład 5 6

7 Algorytm piekarni Proces P i do { wybieranie[i] = true; numer[i] = max(numer[0],..., numer[n-1]) + 1; wybieranie[i] = false; for (j = 0; j < n; j++){ while (wybieranie[j]) ; while ( numer[j]!= 0 && } sekcja krytyczna numer[i] = 0; reszta } while (1); (numer[j],j) < (numer[i],i) ) ; Wiesław Płaczek Systemy Operacyjne: Wykład 5 7

8 Sprzętowe środki synchronizacji Na jednym procesorze problem sekcji krytycznej można rozwiązać zakazując przerwań w trakcie modyfikacji zmiennej dzielonej (niewydajne na wieloprocesorach!). Niepodzielne rozkazy: np. TestAndSet lub Swap bool TestAndSet(bool *cel){ bool zwracaj = *cel; *cel = true; return zwracaj; } void Swap(bool *a,bool *b){ bool pom = *a; *a = *b; *b = pom; } Wiesław Płaczek Systemy Operacyjne: Wykład 5 8

9 Dzielona zmienna: Proces P i Ø Rozkaz TestAndSet: do { Wzajemne wykluczanie bool zamek = false; while ( TestAndSet(&zamek) ) ; /* nic nie rób */ sekcja krytyczna zamek = false; reszta } while (1); Ø Rozkaz Swap: lokalna zmienna: bool klucz; do { klucz = true; while (klucz) Swap(&zamek,&klucz); /* nic nie rób */ sekcja krytyczna zamek = false; reszta } while (1); L Nie spełniają warunku ograniczonego czekania! Dlaczego? Wiesław Płaczek Systemy Operacyjne: Wykład 5 9

10 Semafory Semafor (semaphore) pierwszy mechanizm synchronizacyjny w językach wysokiego poziomu (Dijkstra, 1965): semaphore abstrakcyjny typ danych; semaphore S; zmienna semaforowa o wartościach całkowitych 0. Operacje na semaforze: Opuszczenie (zajęcie) semafora: P (hol. passeren, proberen): P(S): while (S <= 0) ; /* czekaj */ S--; Podniesienia (zwolnienie) semafora: V (hol. vrijmaken, verhogen): V(S): S++; Ø Operacje te muszą być niepodzielne! Powyższy semafor nazywany jest semaforem ogólnym lub liczącym (counting semaphore): S = 0,1,2,... Może być też semafor binarny: S = 0,1 (tylko dwie wartości). Ø Semafor liczący można zaimplementować przy pomocy semafora binarnego i odwrotnie. Wiesław Płaczek Systemy Operacyjne: Wykład 5 10

11 Implementacja semaforów Podstawową wadą powyższej definicji semafora jest to, że operacja P zawiera aktywne czekanie (busy waiting), które marnuje cykle procesora. Ø Taki semafor nazywany jest wirującą blokadą (spinlock). Implementacja semafora bez aktywnego czekania: Semafor jako rekord: typedef struct { } semaphore; int value; struct process *list; /* lista procesów */ SO dostarcza dwie proste operacje (elementarne funkcje systemowe): block wstrzymuje (blokuje) proces, który ją wywołuje; wakeup wznawia zablokowany proces (zmienia stan na gotowy); Lista procesów czekających pod semaforem np. kolejka FIFO (bloków kontrolnych procesów). Wiesław Płaczek Systemy Operacyjne: Wykład 5 11

12 Implementacja operacji semaforowych Operacje P i V (wartość semafora może być tutaj ujemna): void P(semaphore S) { S.value--; if (S.value < 0) { dodaj ten proces do S.list; block(); } } void V(semaphore S) { S.value++; if (S.value <= 0){ usuń jakiś proces P z S.list; wakeup(p); } } Ø Powyższe operacje P i V muszą być niepodzielne w środowisku jednoprocesorowym można to zrealizować przez wprowadzenie zakazu przerwań w trakcie ich wykonywania, a na wieloprocesorach przez spinlock. Wiesław Płaczek Systemy Operacyjne: Wykład 5 12

13 Zakleszczenia i głodzenie W rozwiązaniach opartych o semafory mogą pojawiać się problemy: Zakleszczenie (blokada) (deadlock): Kilka procesów czeka na zdarzenie, które może być spowodowane tylko przez jeden z czekających procesów. Ø Przykład: dwa semafory semaphore S = 1, Q = 1; Proces P0 P(S); Proces P1 P(Q); P(Q); P(S); V(S); V(Q); V(Q); V(S); (Za)głodzenie (blokowanie nieskończone) (starvation): Proces nie zostaje wznowiony, mimo iż zdarzenie, na które czeka występuje dowolną ilość razy za każdym razem, gdy proces ten mógłby być wznowiony wybierany jest inny czekający proces. Wiesław Płaczek Systemy Operacyjne: Wykład 5 13

14 Klasyczne problemy synchronizacji Wzajemne wykluczanie ćwiczenia. Producent Konsument ćwiczenia. Czytelnicy i pisarze: Dwie grupy procesów: czytelnicy i pisarze konkurują o dostęp do wspólnego zasobu czytelni. Czytelnik odczytuje informację zgromadzoną w czytelni i może to robić razem z innymi czytelnikami, natomiast pisarz zapisuje nową informację i musi przebywać sam w czytelni. Możliwe rozwiązania: 1) Czytelnik powinien wejść do czytelni najszybciej jak to możliwe. è Możliwość zagłodzenia pisarzy! 2) Pisarz powinien wejść do czytelni najszybciej jak to możliwe. è Możliwość zagłodzenia czytelników! 3) Czytelnicy i pisarze wpuszczani są do czytelni na przemian, np. według kolejności zgłoszeń, przy czym pisarze wchodzą pojedynczo, natomiast wchodzący czytelnik może wpuścić do czytelni wszystkich czekających czytelników. è Brak zagłodzenia! Wiesław Płaczek Systemy Operacyjne: Wykład 5 14

15 Problem pięciu filozofów v Ø Pięciu filozofów siedzi przy wspólnym okrągłym stole i myśli. Co jakiś czas filozofowie muszą się posilić. Przed każdym filozofem stoi talerz, a obok talerza widelec. Na środku stołu stoi półmisek z rybą. Rybę należy jeść dwoma widelcami, więc filozof może zacząć jeść tylko gdy będzie miał obok siebie dwa wolne widelce. Po spożyciu posiłku filozof odkłada oba widelce na stół i ponownie zatapia się w myśleniu, itd. Możliwe rozwiązania: 1) Każdy filozof czeka aż jeden widelec (np. lewy) będzie wolny i podnosi go, a następnie czeka aż będzie wolny drugi widelec i też go podnosi. è Możliwość zakleszczenia każdy filozof podniesie jeden widelec. 2) Głodny filozof podnosi jednocześnie dwa widelce wtedy gdy są wolne. è Możliwość zagłodzenia jeżeli któryś z filozofów będzie miał żarłocznych sąsiadów, tak że nigdy dwa widelce obok jego talerza nie będą wolne, to nie będzie mógł jeść i zostanie zagłodzony. 3) Nad procesem jedzenia filozofów czuwa lokaj, który dopuszcza do rywalizacji o widelce tylko czterech filozofów naraz, a ci podnoszą widelce sekwencyjnie (np. najpierw lewy, potem prawy). Wiesław Płaczek Systemy Operacyjne: Wykład 5 15

16 Monitory Monitor konstrukcja do synchronizacji stosowana w językach wysokiego poziomu; umożliwia bezpieczne dzielenie danych abstrakcyjnego typu między współbieżnymi procesami. monitor nazwa_monitora { // deklaracje zmiennych dzielonych procedure P1(...) {... } procedure P2(...) {... }... procedure Pn(...) {... } kod inicjalizacyny (...) {... } } Wiesław Płaczek Systemy Operacyjne: Wykład 5 16

17 Cechy monitora Procedura zdefiniowana wewnątrz monitora może korzystać tylko ze zmiennych lokalnych monitora i swoich parametrów. Zmienne lokalne monitora są dostępne tylko za pośrednictwem lokalnych procedur monitora. Konstrukcja monitora gwarantuje, że w jego wnętrzu może być aktywny tylko jeden proces (sekcja krytyczna). W celu zwiększenia funkcjonalności monitora wprowadza się dodatkowy mechanizm warunek (condition): Ø condition x, y; zmienne typu condition; Zmienne warunkowe mogą być użyte tylko z operacjami wait i signal: Operacja x.wait(); oznacza, że proces ją wywołujący zostaje zawieszony do chwili, gdy inny proces wywoła operację x.signal(); Operacja x.signal(); wznawia dokładnie jeden z zawieszonych procesów jeżeli nie ma takich procesów, to operacja ta nie ma żadnego efektu. Kolejność wznawiania procesów zależy od implementacji kolejki procesów czekających pod daną zmienną warunkową. Wiesław Płaczek Systemy Operacyjne: Wykład 5 17

18 Schemat monitora Kolejki związane z warunkami x, y x y Dane dzielone Kolejka wejściowa... Operacje Kod inicjujący Ø Monitor można zaimplementować przy pomocy semaforów. Wiesław Płaczek Systemy Operacyjne: Wykład 5 18

19 Bariery Ø Niektóre aplikacje podzielone są na fazy i stawiają wymaganie, iż żaden proces nie może przejść do następnej fazy zanim wszystkie procesy nie będą gotowe do przejścia do tej fazy. Na końcu każdej fazy umieszczana jest bariera dedykowany mechanizm synchronizacyjny dla grupy procesów. Kiedy proces osiąga barierę, jest blokowany do momentu, aż wszystkie procesy osiągną barierę dopiero wówczas wszystkie procesy mogą przejść do następnej fazy. A A A C B Bariera C B Bariera Bariera B C D Czas D D Wiesław Płaczek Systemy Operacyjne: Wykład 5 19

20 Synchronizacja w systemie Solaris Ø W celu kontrolowania dostępu do sekcji krytycznych w systemie Solaris zaimplementowano: muteksy adaptacyjne (rodzaj semafora binarnego), zmienne warunkowe, semafory, blokady do czytania lub pisania, turnikety. Muteks adaptacyjny (adaptive mutex) stosowany do ochrony krytycznych danych dla krótkich segmentów kodu (co najwyżej kilkaset rozkazów). W systemach jednoprocesorowych wątek wstrzymany przez muteks adaptacyjny jest usypiany. W systemach wieloprocesorowych wątek jest usypiany tylko jeśli wątek utrzymujący muteks jest nieaktywny, w przeciwnym razie zamek realizuje aktywne czekanie (wirującą blokadę). Do synchronizacji dłuższych segmentów kodu używane są zmienne warunkowe i semafory czekające wątki są usypiane. Blokady do czytania i pisania (readers-writers locks) stosuje się do ochrony danych o częstym dostępie, zwykle do czytania możliwość współbieżnego czytania przez wiele wątków (drogie w realizacji; tylko dla długich sekcji kodu). Turnikety (turnstiles) służą do porządkowania listy wątków czekających na pozyskanie zamka adaptacyjnego albo blokady do czytania lub pisania są to struktury kolejek zawierające wątki zablokowane na muteksie lub blokadzie. Wiesław Płaczek Systemy Operacyjne: Wykład 5 20

21 Synchronizacja w Windows XP/Vista/7/8/10 W systemie jednoprocesorowym jądro sięgając po jakiś zasób globalny maskuje czasowo przerwania mogące z niego korzystać. W systemie wieloprocesorowym dostęp do zasobów globalnych chroniony jest przy pomocy wirujących blokad. Do synchronizacji wątków poza jądrem służą obiekty dyspozytora (dispatcher objects). Używając obiektu dyspozytora wątek może korzystać z różnych mechanizmów synchronizacji: muteksy, semafory, zdarzenia itd. Zdarzenia (events) mechanizm synchronizacji podobny do zmiennych warunkowych (mogą powiadamiać wątek o spełnieniu żądanego warunku). Obiekty dyspozytora mogą znajdować się w stanie sygnalizowania (signaled) lub niesygnalizowania (nonsignaled). Stan sygnalizowania oznacza, że obiekt jest dostępny i wątek nie zablokuje się przy próbie jego pozyskania. Stan niesygnalizowania wskazuje, że obiekt nie jest dostępny i przy próbie jego pozyskania wątek zostanie zablokowany. Istnieje związek między stanem obiektu dyspozytora a stanem wątku: sygnalizowany/niesygnalizowany obiekt wątek w stanie gotowości/czekania. Wiesław Płaczek Systemy Operacyjne: Wykład 5 21

22 Synchronizacja w systemie Linux Jądro Linuksa od wersji 2.6 jest w pełni wywłaszczalne proces wykonywany w trybie jądra może zostać wywłaszczony przez inny proces; poprzednie wersje jądra były niewywłaszczalne. Linux dostarcza typu atomic_t do operacji atomowych, muteksów, wirujących blokad oraz semaforów do synchronizacji w jądrze. W systemach jednoprocesorowych zamiast wirujących blokad używane są wywołania systemowe preempt_enable() i preempt_disable() do włączania i wyłączania wywłaszczeń jądra. Dodatkowo jądro jest niewywłaszczalne kiedy jakieś zadanie jądra utrzymuje blokadę wywłaszczanie jest wtedy niebezpieczne! Wirujące blokady, jak też włączanie i wyłączanie wywłaszczeń jądra stosowane są tylko do krótkich sekcji krytycznych, natomiast do dłuższych wykorzystywane są semafory. Synchronizacja P-wątków Interfejs Pthreads API dostarcza muteksów i zmiennych warunkowych jako mechanizmów synchronizacji wątków standardu POSIX. Wiele systemów implementujących P-wątki dostarcza ponadto semafory. Wiesław Płaczek Systemy Operacyjne: Wykład 5 22

23 Zakleszczenia Model systemu. Charakterystyka zakleszczenia. Metody postępowania z zakleszczeniami. Zapobieganie zakleszczeniom. Unikanie zakleszczeń. Wykrywanie zakleszczenia. Likwidowanie zakleszczenia. Mieszane metody postępowania z zakleszczeniami. Wiesław Płaczek Systemy Operacyjne: Wykład 5 23

24 Model systemu System składa się z zasobów: pamięć, cykle procesora, pliki, urządzenia WE/WY itd., o które rywalizują procesy. Każdy proces korzysta z zasobu według schematu: 1. Zamówienie (żądanie, request) jeżeli nie może być zrealizowane natychmiast, to proces musi czekać do chwili otrzymania zasobu. 2. Użycie (use) proces może korzystać z zasobu. 3. Zwolnienie (release) proces oddaje zasób. Ø q Stan zakleszczenia, inaczej blokady (deadlock): każdy proces w zbiorze procesów czeka na zdarzenie, które może być spowodowane tylko przez inny proces z tego samego zbioru, np. zwolnienie zajętego zasobu, na który proces oczekuje. Przykłady: System ma trzy napędy DVD-RW: każdy z procesów P0, P1 i P2 jest w posiadaniu jednego napędu i zamawia dodatkowy napęd. Semafory A i B są ustawione na 1: P0 P(A); P(B); P1 P(B); P(A); Wiesław Płaczek Systemy Operacyjne: Wykład 5 24

25 Charakterystyka zakleszczenia Ø Zakleszczenie może powstać wtedy, kiedy w systemie spełnione są jednocześnie cztery warunki: 1. Wzajemne wykluczanie: Tylko jeden proces może używać zasobu w tym samym czasie (zasób niepodzielny). 2. Przetrzymywanie i czekanie: Proces mający jeden zasób czeka na przydział dodatkowych zasobów będących w posiadaniu innych procesów. 3. Brak wywłaszczeń: Zasoby nie podlegają wywłaszczaniu. 4. Czekanie cykliczne: Istnieje zbiór czekających procesów {P 1,P 2,...,P n }, takich że P 1 czeka na zasób przetrzymywany przez P 2, P 2 czeka na zasób przetrzymywany przez P 3,..., a P n czeka na zasób przetrzymywany przez P 1. Graf przydziału zasobów graf skierowany złożony ze zbioru wierzchołków W i zbioru krawędzi K. Zbiór wierzchołków W składa się z dwu podzbiorów: P={P 1,...,P n } zbiór wszystkich procesów, Z={Z 1,...,Z n } zbiór typów zasobów. Krawędź zamówienia: P i Z j ; Krawędź przydziału: Z j P i. Wiesław Płaczek Systemy Operacyjne: Wykład 5 25

26 Przykłady grafów przydziału zasobów Z 1 Z 2 Z 1 Z 3 Krawędź zamówienia Krawędź przydziału P 1 P 2 P 3 P 1 P 2 P 3 Z 2 Z 4 Graf przydziału bez zakleszczenia Wiesław Płaczek Systemy Operacyjne: Wykład 5 26 Z 2 Z 4 Graf przydziału z zakleszczeniem 1. Graf nie zawiera cyklu nie ma zakleszczenia! 2. Graf zawiera cykl, to: a) Zasoby w jednym egzemplarzu zakleszczenie! b) Zasoby w wielu egzemplarzach istnieje możliwość zakleszczenia!

27 Metody postępowania z zakleszczeniami Ø Z problemem zakleszczeń można sobie radzić na trzy różne sposoby: Zastosować protokół gwarantujący, że system nigdy nie wejdzie w stan zakleszczenia. Pozwolić systemowi na zakleszczenia, po czym podjąć działania w celu ich wykrycia i usunięcia. Zlekceważyć problem, udając, że zakleszczenia nigdy się nie pojawią w systemie ( algorytm strusia ) stosowane przez większość systemów operacyjnych, w tym UNIX i Windows. Wiesław Płaczek Systemy Operacyjne: Wykład 5 27

28 Zapobieganie zakleszczeniom Ø Zapobiec spełnieniu jednego z warunków koniecznych zakleszczeń: Wzajemne wykluczanie konieczne tylko dla zasobów niepodzielnych; nie wymagane dla zasobów podzielnych. Przetrzymywanie i oczekiwanie zagwarantować, że kiedy proces żąda zasobu, to nie posiada innych zasobów, np. wymagać by proces zamawiał i dostawał wszystkie swoje zasoby zanim rozpocznie działanie lub tylko wtedy gdy nie ma żadnych zasobów. L Słabe wykorzystanie zasobów, możliwość głodzenia procesów. Brak wywłaszczeń: Jeśli proces będący w posiadaniu pewnych zasobów żąda zasobu, którego nie można natychmiast przydzielić, to musi zwolnić wszystkie posiadane zasoby. Wywłaszczone zasoby są dodawane do listy zasobów, na które proces czeka. Proces zostanie wznowiony tylko wtedy, gdy będzie mógł odzyskać utracone zasoby oraz otrzymać nowo żądane zasoby. Czekanie cykliczne wymuszenie całkowitego uporządkowania wszystkich typów zasobów i wymaganie, aby każdy proces zamawiał zasoby w porządku rosnącym ich numeracji. Wiesław Płaczek Systemy Operacyjne: Wykład 5 28

29 Unikanie zakleszczeń Ø Wymaga informacji a priori o zapotrzebowaniach na zasoby. W najprostszym i najbardziej użytecznym modelu wymaga się, aby każdy proces deklarował maksymalną liczbę zasobów każdego typu, których będzie potrzebował. Algorytm unikania zakleszczeń (deadlock avoidance) sprawdza dynamicznie stan przydziału zasobów, by zapewnić, że nigdy nie dojdzie do czekania cyklicznego. Stan przydziału zasobów jest określony przez liczbę dostępnych i przydzielonych zasobów oraz maksymalne zapotrzebowania procesów. Wiesław Płaczek Systemy Operacyjne: Wykład 5 29

30 Unikanie zakleszczeń c.d. Kiedy proces żąda dostępnego zasobu, system musi sprawdzić, czy natychmiastowe przydzielenie tego zasobu zachowa system w stanie bezpiecznym (safe state). System jest w stanie bezpiecznym, jeżeli istnieje ciąg bezpieczny procesów. Ciąg procesów {P 1,P 2,...,P n } jest bezpieczny, jeśli dla każdego procesu P i jego potencjalne zapotrzebowanie na zasoby można zaspokoić przez aktualnie dostępne zasoby oraz zasoby użytkowane przez wszystkie procesy P j dla j < i. System jest w stanie bezpiecznym brak zakleszczenia! System jest w stanie zagrożenia istnieje możliwość powstania zakleszczenia! Unikanie zakleszczeń gwarancja, że nigdy nie pojawi się stan zagrożenia! Wiesław Płaczek Systemy Operacyjne: Wykład 5 30

31 Algorytmy unikania zakleszczeń Algorytm grafu przydziału zasobów: Ø Dla zasobów, których każdy typ ma pojedynczy egzemplarz. Dodatkowy typ krawędzi: krawędź deklaracji P i Z j wskazuje, że proces P i może zamówić kiedyś zasób Z j ; reprezentowana linią przerywaną. Krawędź deklaracji przechodzi w krawędź zamówienia, gdy proces zamawia zasób. Gdy zasób jest zwalniany krawędź zamówienia przechodzi z powrotem w krawędź deklaracji. Proces musi a priori zadeklarować zapotrzebowanie na potrzebne zasoby. Zamówienie może być spełnione tylko wtedy, gdy nie doprowadzi do powstania cyklu w grafie koszt szukania cyklu: n 2 (n liczba procesów). Wiesław Płaczek Systemy Operacyjne: Wykład 5 31

32 Algorytmy unikania zakleszczeń c.d. Algorytm bankiera (banker s algorithm): Ø Dla zasobów wielokrotnych (tzn. każdy typ może mieć wiele egzemplarzy). Każdy proces musi zadeklarować maksymalną liczbę egzemplarzy każdego typu, które będą mu potrzebne (nie większa od liczby wszystkich zasobów w systemie). Kiedy proces zamawia zbiór zasobów, sprawdza się czy ich przydzielenie pozostawi system w stanie bezpiecznym: Ø jeżeli tak zasoby są przydzielane, Ø jeżeli nie proces musi poczekać na zwolnienie dostatecznej ilości zasobów. Koszt sprawdzania stanu bezpiecznego: m n 2, gdzie m ilość typów zasobów. Wiesław Płaczek Systemy Operacyjne: Wykład 5 32

33 Wykrywanie zakleszczenia Ø Systemy nie stosujące zapobiegania zakleszczeniom muszą posiadać: Algorytm wykrywania ewentualnego zakleszczenia; Algorytm likwidowania wykrytego zakleszczenia. Typy zasobów reprezentowane pojedynczo: Algorytm wykrywania zakleszczeń oparty o graf oczekiwania, który powstaje z grafu przydziału zasobów po usunięciu węzłów reprezentujących zasoby, np. P i P j oznacza, że proces P i czeka na zasób będący w posiadaniu procesu P j. Okresowo wykonuje się powyższy algorytm, który szuka cyklu w grafie. Koszt algorytmu (liczba operacji): n 2 (n liczba wierzchołków grafu). Wiesław Płaczek Systemy Operacyjne: Wykład 5 33

34 Wykrywanie zakleszczenia c.d. Typy zasobów reprezentowane wielokrotnie: Algorytm wykrywania zakleszczenia podobny do algorytmu bankiera. Koszt algorytmu: m n 2 (m ilość typów zasobów). Używanie algorytmu wykrywania zakleszczenia: Ø Częstość wywoływania algorytmu zależy od tego jak często występują zakleszczenia i ile procesów ulega zakleszczeniu. ü Wykonywanie algorytmu przy każdym zamówieniu kosztowne! ü Wykonywanie algorytmu periodycznie (np. raz na godzinę) lub gdy wyraźnie spadnie wykorzystanie procesora może powstać wiele cykli! Wiesław Płaczek Systemy Operacyjne: Wykład 5 34

35 Likwidowanie zakleszczenia Zakończenie procesu: Zaniechanie wszystkich zakleszczonych procesów; Usuwanie procesów pojedynczo, aż do wyeliminowania cyklu zakleszczenia. Ø Jak wybrać proces do zakończenia: ü Jaki jest priorytet procesu? ü Jak długo proces wykonywał obliczenia i ile czasu potrzebuje do zakończenia? ü Ile zasobów i jakiego typu używa proces? ü Ilu jeszcze zasobów proces potrzebuje do zakończenia działania? ü Ile procesów trzeba będzie zakończyć? ü Czy proces jest interakcyjny czy wsadowy? Wiesław Płaczek Systemy Operacyjne: Wykład 5 35

36 Likwidowanie zakleszczenia c.d. Wywłaszczanie zasobów: Wybór ofiary: które zasoby i które procesy mają być wywłaszczone kryterium minimum kosztów; Wycofanie procesu do pewnego bezpiecznego stanu i wznowienie go z tego stanu w późniejszym czasie może być trudne! Głodzenie: do roli ofiary może być wybierany wciąż ten sam proces potrzebne ograniczenie; uwzględnienie liczby wycofań przy ocenie kosztów. Wiesław Płaczek Systemy Operacyjne: Wykład 5 36

37 Mieszane metody postępowania Połączenie trzech metod postępowania z zakleszczeniami: zapobieganie, unikanie, wykrywanie i likwidowanie, pozwala na uzyskanie optymalnego podejścia do problemu zakleszczeń dla poszczególnych klas zasobów w systemie. Podział zasobów na hierarchicznie uporządkowane klasy, np. Zasoby wewnętrzne (bloki kontrolne procesów itp.); Pamięć główna; Zasoby zadania (przydzielane urządzenia i pliki); Wymienny obszar pamięci (pamięć pomocnicza). Używanie najbardziej odpowiedniej techniki postępowania z zakleszczeniami wewnątrz każdej z klas zasobów. ü Zakleszczenia dotyczą zwykle nie więcej niż jednej klasy Ø System mniej lub wcale nie narażony na zakleszczenia! Wiesław Płaczek Systemy Operacyjne: Wykład 5 37

38 Zagadnienia 1. Na czym polega problem sekcji krytycznej i jakie są jej warunki? Podać rozwiązania tego problemu dla dwu oraz większej liczby procesów. 2. Podać przykłady sprzętowych środki synchronizacji oraz ich użycia do realizacji wzajemnego wykluczania procesów? 3. Omówić semafor jako mechanizm synchronizacji procesów oraz jego możliwe implementacje. Jakie wymagania stawia się wobec operacji semaforowych? 4. Jakie problemy mogą pojawić się w rozwiązaniach z użyciem semaforów? Przedstawić problemy czytelników i pisarzy oraz pięciu filozofów podać ich możliwe rozwiązania. 5. Omówić monitory i bariery jako mechanizmy synchronizacji procesów. 6. Porównać metody synchronizacji w systemach operacyjnych Solaris, Windows XP/Vista/7/8/10 oraz Linux. 7. Co to jest zakleszczenie i jakie są jego warunki? Do czego służy graf przydziału zasobów? Jaki jest związek między cyklem w grafie a zakleszczeniem? 8. Jakie są metody zapobiegania, unikania oraz wykrywania i likwidowania zakleszczeń. Wiesław Płaczek Systemy Operacyjne: Wykład 5 38

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

Porządek dostępu do zasobu: procesory obszary pamięci cykle procesora pliki urządzenia we/wy ZAKLESZCZENIA w SO brak środków zapobiegania zakleszczeniom Zamówienia na zasoby => przydział dowolnego egzemplarza danego typu Zasoby w systemie typy; identyczne egzemplarze procesory obszary pamięci

Bardziej szczegółowo

Synchronizacja procesów i wątków

Synchronizacja procesów i wątków SOE Systemy Operacyjne Wykład 12 Synchronizacja procesów i wątków dr inŝ. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW Problem sekcji krytycznej Podstawowy problem synchronizacji

Bardziej szczegółowo

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

Przeplot. Synchronizacja procesów. Cel i metody synchronizacji procesów. Wątki współbieżne Synchronizacja procesów Przeplot Przeplot wątków współbieżnych Cel i metody synchronizacji procesów Problem sekcji krytycznej Semafory Blokady 3.1 3.3 Wątki współbieżne Cel i metody synchronizacji procesów

Bardziej szczegółowo

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

J. Ułasiewicz Programowanie aplikacji współbieżnych 1 J. Ułasiewicz Programowanie aplikacji współbieżnych 1 1 1.1 Prosty przykład zakleszczenia (ang. Mexican standoff) W systemach w których wykonywane jest wiele współbieżnych procesów które operują na wspólnych

Bardziej szczegółowo

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

Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1 Przetwarzanie wielowątkowe przetwarzanie współbieżne Krzysztof Banaś Obliczenia równoległe 1 Problemy współbieżności wyścig (race condition) synchronizacja realizowana sprzętowo (np. komputery macierzowe)

Bardziej szczegółowo

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

J. Ułasiewicz Programowanie aplikacji współbieżnych 1 J. Ułasiewicz Programowanie aplikacji współbieżnych 1 1 1.1 Prosty przykład zakleszczenia (ang. Mexican standoff) W systemach w których wykonywane jest wiele współbieżnych procesów które operują na wspólnych

Bardziej szczegółowo

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

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd Synchronizacja procesów Proces producenta - zmodyfikowany (licznik) produkuj jednostka w nast_p while licznik =n do nic_nie_rob; bufor [we] := nast_p; we=we+1 mod n; licznik:=licznik+1; Zmodyfikowany proces

Bardziej szczegółowo

Systemy operacyjne. wykład 11- Zakleszczenia. dr Marcin Ziółkowski. Instytut Matematyki i Informatyki Akademia im. Jana Długosza w Częstochowie

Systemy operacyjne. wykład 11- Zakleszczenia. dr Marcin Ziółkowski. Instytut Matematyki i Informatyki Akademia im. Jana Długosza w Częstochowie Systemy operacyjne wykład 11- Zakleszczenia dr Marcin Ziółkowski Instytut Matematyki i Informatyki Akademia im. Jana Długosza w Częstochowie 17grudnia2015r. POJĘCIE ZAKLESZCZENIA Zakleszczenie to zbiór

Bardziej szczegółowo

Programowanie współbieżne Wykład 10 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 Programowanie współbieżne Wykład 10 Synchronizacja dostępu do współdzielonych zasobów Iwona Kochańska Mechanizm synchronizacji wątków/procesów Wykorzystanie semaforów zapobiega niedozwolonemu wykonaniu

Bardziej szczegółowo

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

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1 Programowanie równoległe i rozproszone Monitory i zmienne warunku Krzysztof Banaś Programowanie równoległe i rozproszone 1 Problemy współbieżności Problem producentów i konsumentów: jedna grupa procesów

Bardziej szczegółowo

Wprowadzenie do programowania współbieżnego

Wprowadzenie do programowania współbieżnego Wprowadzenie do programowania współbieżnego Marcin Engel Instytut Informatyki Uniwersytet Warszawski Zamiast wstępu... Zamiast wstępu... Możliwość wykonywania wielu akcji jednocześnie może ułatwić tworzenie

Bardziej szczegółowo

Programowanie Równoległe i Rozproszone

Programowanie Równoległe i Rozproszone Programowanie Równoległe i Rozproszone Lucjan Stapp Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska (l.stapp@mini.pw.edu.pl) 1/30 PRiR MONITOR klasa z następującymi właściwościami: wszystkie

Bardziej szczegółowo

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

Wykład 4. Synchronizacja procesów (i wątków) cześć I. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Wykład 4 Synchronizacja procesów (i wątków) cześć I Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Potrzeba synchronizacji Procesy wykonują się współbieżnie. Jeżeli w 100% są

Bardziej szczegółowo

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację. J. Ułasiewicz Programowanie aplikacji współbieżnych 1 11 11.1 abstrakcyjne Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post

Bardziej szczegółowo

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

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd Synchronizacja procesów Proces producenta - zmodyfikowany (licznik) produkuj jednostka w nast_p while licznik =n do nic_nie_rob; bufor [we] := nast_p; we=we+1 mod n; licznik:=licznik+1; Zmodyfikowany proces

Bardziej szczegółowo

SOP2 - semafory. grudzień

SOP2 - semafory. grudzień SOP2 - semafory grudzień 2010 1 Plan prezentacji Problem producent-konsument Problem czytelników i pisarzy Problem jedzących filozofów grudzień 2010 2 Producent-konsument var bufor: array [0..n-1] of produkt;

Bardziej szczegółowo

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

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Abstrakcja programowania współbieżnego Instrukcje atomowe i ich przeplot Istota synchronizacji Kryteria poprawności programów współbieżnych

Bardziej szczegółowo

Semafory. // G - globalna dla wszystkich. // Wada - aktywne oczekiwanie Test_and_Set(Li); exit when Li = 0; end loop sekcja_krytyczna(i); G := 0;

Semafory. // G - globalna dla wszystkich. // Wada - aktywne oczekiwanie Test_and_Set(Li); exit when Li = 0; end loop sekcja_krytyczna(i); G := 0; Semafory Rozwiązanie problemu wzajemnego wykluczania Bez dodatkowego wsparcia sprzętowego i programowego Zakładamy jedynie, że zapis do i odczyt z pamięci wspólnej są operacjami atomowymi (czyli istnieje

Bardziej szczegółowo

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

Klasyczne problemy współbieżności. Problem producenta i konsumenta Problem czytelników i pisarzy Problem pięciu filozofów Klasyczne problemy współbieżności Problem producenta i konsumenta Problem czytelników i pisarzy Problem pięciu filozofów Wzajemne wykluczanie Zsynchronizować N procesów, z których każdy w nieskończonej

Bardziej szczegółowo

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

Programowanie współbieżne Wykład 5. Rafał Skinderowicz Programowanie współbieżne Wykład 5 Rafał Skinderowicz Monitory motywacje Mechanizmy synchronizacji takie jak blokady (zamki) semafory pozwalają efektywnie rozwiązywać dostępu do współdzielonych zasobów,

Bardziej szczegółowo

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację. J. Ułasiewicz Programowanie aplikacji współbieżnych 1 11 Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Bardziej szczegółowo

WYKŁAD 4 SEMAPHORES (CIĄG DALSZY) Przykład 6 Problem czytelników i pisarzy. Wykład 4 strona 1/24

WYKŁAD 4 SEMAPHORES (CIĄG DALSZY) Przykład 6 Problem czytelników i pisarzy. Wykład 4 strona 1/24 WYKŁAD 4 SEMAPHORES (CIĄG DALSZY) Przykład 6 Problem czytelników i pisarzy Wykład 4 strona 1/24 Ilustracja 5. Schemat problemu czytelników i pisarzy Wykład 4 strona 2/24 Opis problemu: Jest n czytelników,

Bardziej szczegółowo

Ingerencja w kod systemu operacyjnego (przerwania) Programowanie na niskim poziomie (instrukcje specjalne) Trudności implementacyjne (alg.

Ingerencja w kod systemu operacyjnego (przerwania) Programowanie na niskim poziomie (instrukcje specjalne) Trudności implementacyjne (alg. Wady mechanizmów niskopoziomowych Ingerencja w kod systemu operacyjnego (przerwania) Programowanie na niskim poziomie (instrukcje specjalne) Trudności implementacyjne (alg. Dekkera zależny od liczby synchronizowanych

Bardziej szczegółowo

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

SYSTEMY OPERACYJNE WYKLAD 6 - procesy Wrocław 2007 SYSTEMY OPERACYJNE WYKLAD 6 - procesy Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl www.equus.wroc.pl/studia.html 1 Zasoby: PROCES wykonujący się program ; instancja programu

Bardziej szczegółowo

Problem zakleszczenia

Problem zakleszczenia Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Klasyfikacja zasobów systemu na potrzeby analizy problemu zakleszczenia Warunki konieczne wystąpienia zakleszczenia Graf przydziału zasobów

Bardziej szczegółowo

Systemy operacyjne III

Systemy operacyjne III Systemy operacyjne III WYKŁAD 3 Jan Kazimirski 1 Współbieżność 2 Współbieżność Wielozadaniowość - zarządzanie wieloma procesami w ramach jednego CPU Wieloprocesorowość - zarządzanie wieloma zadaniami w

Bardziej szczegółowo

Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 1

Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 1 Problem sekcji krytycznej. Sprz"towe #rodki synchronizacji. Semafory. Klasyczne problemy synchronizacji. Regiony krytyczne. Monitory. Przyk!ady synchronizacji procesów:!! Solaris,!! Windows XP/Vista/7,!!

Bardziej szczegółowo

Systemy operacyjne. Zajęcia 11. Monitory

Systemy operacyjne. Zajęcia 11. Monitory Systemy operacyjne. Zajęcia 11. Monitory 1. Monitor to mechanizm zamykający całą pamięć wspólną i synchronizację w pojedynczym module. 2. Monitor posiada całą pamięć wspólną jako część 'prywatną': dostępu

Bardziej szczegółowo

Monitory. Jarosław Kuchta

Monitory. Jarosław Kuchta Monitory Jarosław Kuchta Co to jest monitor Monitor to zebrane w jednej konstrukcji programowej zmienne i operacje na tych zmiennych. Część tych operacji jest udostępnianych na zewnątrz monitora. Tylko

Bardziej szczegółowo

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

Wykład 4. Synchronizacja procesów (i wątków) cześć I. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Wykład 4 Synchronizacja procesów (i wątków) cześć I Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Procesy wykonują się współbieżnie Potrzeba synchronizacji Jeżeli w 100% są

Bardziej szczegółowo

Zakleszczenie. Problem i przeciwdziałanie. Systemy operacyjne Wykład 8 1

Zakleszczenie. Problem i przeciwdziałanie. Systemy operacyjne Wykład 8 1 Zakleszczenie Problem i przeciwdziałanie Systemy operacyne Wykład 8 1 Klasyfikaca zasobów systemu na potrzeby analizy problemu zakleszczenia Warunki konieczne wystąpienia zakleszczenia Graf przydziału

Bardziej szczegółowo

Prezentacja systemu RTLinux

Prezentacja systemu RTLinux Prezentacja systemu RTLinux Podstawowe założenia RTLinux jest system o twardych ograniczeniach czasowych (hard real-time). Inspiracją dla twórców RTLinux a była architektura systemu MERT. W zamierzeniach

Bardziej szczegółowo

Problemy czytelników i pisarzy oraz 5 ucztujących filozofów

Problemy czytelników i pisarzy oraz 5 ucztujących filozofów Problemy czytelników i pisarzy oraz 5 dr inż. Sławomir Samolej Katedra Informatyki i Automatyki Politechnika Rzeszowska Program przedmiotu oparto w części na materiałach opublikowanych na: http://wazniak.mimuw.edu.pl/

Bardziej szczegółowo

Mechanizmy pracy równoległej. Jarosław Kuchta

Mechanizmy pracy równoległej. Jarosław Kuchta Mechanizmy pracy równoległej Jarosław Kuchta Zagadnienia Algorytmy wzajemnego wykluczania algorytm Dekkera Mechanizmy niskopoziomowe przerwania mechanizmy ochrony pamięci instrukcje specjalne Mechanizmy

Bardziej szczegółowo

Semafory. - aktywne oczekiwanie =GRGDWNRZ\PZVSDUFLHPVSU]WRZ\P 6SHFMDOQDLQVWUXNFMDPDV]\QRZDUHDOL]XMFDDWRPRZ\]DSLVL odczyt, np.

Semafory. - aktywne oczekiwanie =GRGDWNRZ\PZVSDUFLHPVSU]WRZ\P 6SHFMDOQDLQVWUXNFMDPDV]\QRZDUHDOL]XMFDDWRPRZ\]DSLVL odczyt, np. Semafory 5R]ZL]DQLHSUREOHPXZ]DMHPQHJRZ\NOXF]DQLD %H]GRGDWNRZHJRZVSDUFLDVSU]WRZHJRLSURJUDPRZHJR =DNáDGDP\MHG\QLH*H]DSLVGRLRGF]\W]SDPLFLZVSyOQHMV RSHUDFMDPLDWRPRZ\PLF]\OLLVWQLHMHDUELWHUZVSyOQHMSDPLFL :UD]LHMHGQRF]HVQHJR]DSLVXLRGF]\WXUH]XOWDWHPEG]LH

Bardziej szczegółowo

Systemy Operacyjne synchronizacja i komunikacja procesów

Systemy Operacyjne synchronizacja i komunikacja procesów Katedra Informatyki, Politechnika Świętokrzyska w Kielcach Kielce, 1 grudnia 2006 1 1 Sytuacje hazardowe 2 Problem sekcji krytycznej 3 Warunki poprawności rozwiązania 4 Rozwiązanie programowe dla dwóch

Bardziej szczegółowo

synchronizacji procesów

synchronizacji procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Definicja semafora Klasyfikacja semaforów Implementacja semaforów Zamki Zmienne warunkowe Klasyczne problemy synchronizacji (2) Semafory

Bardziej szczegółowo

Synchronizacja procesów

Synchronizacja procesów Synchronizacja procesów Proces producenta - zmodyfikowany (licznik) repeat... produkuj jednostka w nast_p... while licznik =n do nic_nie_rob; bufor [we] := nast_p; we=we+1 mod n; licznik:=licznik+1; until

Bardziej szczegółowo

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

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd Synchronizacja procesów Synchronizacja procesów, cd Proces producenta - zmodyfikowany (licznik) produkuj jednostka w nast_p while licznik =n do nic_nie_rob; bufor [we] := nast_p; we=we+1 mod n; licznik:=licznik+1;

Bardziej szczegółowo

synchronizacji procesów

synchronizacji procesów Dariusz Wawrzyniak Definicja semafora Klasyfikacja semaforów Implementacja semaforów Zamki Zmienne warunkowe Klasyczne problemy synchronizacji Plan wykładu (2) Semafory Rodzaje semaforów (1) Semafor jest

Bardziej szczegółowo

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

Programowanie współbieżne Wykład 7. Iwona Kochaoska 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,

Bardziej szczegółowo

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe 4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa

Bardziej szczegółowo

SYSTEMY CZASU RZECZYWISTEGO - VxWorks

SYSTEMY CZASU RZECZYWISTEGO - VxWorks WZAJEMNE WYKLUCZANIE Wiele metod. Np. wyłączanie przerwań: funkcja() //... Int blokada = intlock(); // Obszar krytyczny, któremu nie możemy przerwać intunlock(blokada); wyłączanie wywłaszczania: funkcja()

Bardziej szczegółowo

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe 4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa

Bardziej szczegółowo

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1 Wątki 1. Wątki - wprowadzenie Wątkiem nazywamy sekwencyjny przepływ sterowania w procesie, który wykonuje dany program np. odczytywanie i zapisywanie plików Program Javy jest wykonywany w obrębie jednego

Bardziej szczegółowo

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

Programowanie równoległe i rozproszone. W1. Wielowątkowość. Krzysztof Banaś Programowanie równoległe i rozproszone 1 Programowanie równoległe i rozproszone W1. Wielowątkowość Krzysztof Banaś Programowanie równoległe i rozproszone 1 Problemy współbieżności wyścig (race condition) synchronizacja realizowana sprzętowo (np.

Bardziej szczegółowo

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

Programowanie współbieżne Wykład 9 Synchronizacja dostępu do współdzielonych zasobów. Iwona Kochańska Programowanie współbieżne Wykład 9 Synchronizacja dostępu do współdzielonych zasobów Iwona Kochańska Sekcja krytyczna Instrukcje wykonywane na zmiennych współdzielonych tworzą sekcję krytyczną. Instrukcje

Bardziej szczegółowo

1. Liczby i w zapisie zmiennoprzecinkowym przedstawia się następująco

1. Liczby i w zapisie zmiennoprzecinkowym przedstawia się następująco 1. Liczby 3456.0012 i 0.000076235 w zapisie zmiennoprzecinkowym przedstawia się następująco a) 0.34560012 10 4 i 0.76235 10 4 b) 3.4560012 10 3 i 7.6235 10 5 c) 3.4560012 10 3 i 7.6235 10 5 d) po prostu

Bardziej szczegółowo

Synchronizacja procesów

Synchronizacja procesów Synchronizacja procesów - Współbieżność i synchronizacja procesów - Systemowe mechanizmy synchronizacji procesów Systemy operacyjne Wykład 7 1 Współbieżność i synchronizacja procesów Abstrakcja programowania

Bardziej szczegółowo

Materiały pomocnicze 1

Materiały pomocnicze 1 TECHNIKI DZIELENIA OGRANICZONEGO ZBIORU ZASOBÓW wzajemne wyłączanie procesów od zasobów niepodzielnych PRZYDZIAŁ ZASOBÓW I PLANOWANIE zapobieganie zakleszczeniom zapewnienie dużego wykorzystania zasobów

Bardziej szczegółowo

Blokady. Model systemu. Charakterystyka blokady

Blokady. Model systemu. Charakterystyka blokady Blokady Stan blokady: ka dy proces w zbiorze procesów czeka na zdarzenie, które mo e byæ spowodowane tylko przez inny procesu z tego samego zbioru (zdarzeniem mo e byæ przydzia³ lub zwolnienie zasobu)

Bardziej szczegółowo

Programowanie wielowątkowe. Tomasz Borzyszkowski

Programowanie wielowątkowe. Tomasz Borzyszkowski Programowanie wielowątkowe Tomasz Borzyszkowski Wątki a procesy Jako jeden z niewielu języków programowania Java udostępnia użytkownikowi mechanizmy wspierające programowanie wielowątkowe. Program wielowątkowy

Bardziej szczegółowo

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

Programowanie współbieżne Wykład 2. Iwona Kochańska Programowanie współbieżne Wykład 2 Iwona Kochańska Miary skalowalności algorytmu równoległego Przyspieszenie Stały rozmiar danych N T(1) - czas obliczeń dla najlepszego algorytmu sekwencyjnego T(p) - czas

Bardziej szczegółowo

Działanie systemu operacyjnego

Działanie systemu operacyjnego Budowa systemu komputerowego Działanie systemu operacyjnego Jednostka centralna dysku Szyna systemowa (magistrala danych) drukarki pamięci operacyjnej I NIC sieci Pamięć operacyjna Przerwania Przerwania

Bardziej szczegółowo

1. Działania na procesach

1. Działania na procesach 1. Działania na procesach (1.1) Tworzenie procesu Pamiętamy, że proces "twórca" nazywany jest procesem macierzystym, zaś nowo utworzony proces to proces potomny. Każdy nowo utworzony proces może tworzyć

Bardziej szczegółowo

Procesy, wątki i zasoby

Procesy, wątki i zasoby Procesy, wątki i zasoby Koncepcja procesu i zasobu, Obsługa procesów i zasobów, Cykl zmian stanów procesu i kolejkowanie, Klasyfikacja zasobów, Wątki, Procesy i wątki we współczesnych systemach operacyjnych.

Bardziej szczegółowo

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

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 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 Wydział Matematyki i Informatyki Instytut Informatyki i

Bardziej szczegółowo

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

Programowanie współbieżne i równoległe. dr inż. Marcin Wilczewski 2013 Programowanie współbieżne i równoległe dr inż. Marcin Wilczewski 2013 1 Tematyka wykładu Wprowadzenie. Podstawowe pojęcia Wątki i procesy. Metody i modele synchronizacji Klasyczne problemy współbieżne

Bardziej szczegółowo

Problemy współbieżności

Problemy współbieżności Problemy współbieżności wyścig (race condition) synchronizacja realizowana sprzętowo (np. komputery macierzowe) realizowana programowo (bariera, sekcja krytyczna, operacje atomowe) wzajemne wykluczanie

Bardziej szczegółowo

Gdy kilka procesów czyta a przynajmniej jeden dokonuje zapisu wynik odczytu zależeć może od sposobu realizacji przeplotu.

Gdy kilka procesów czyta a przynajmniej jeden dokonuje zapisu wynik odczytu zależeć może od sposobu realizacji przeplotu. Komputery i Systemy Równoległe Jędrzej Ułasiewicz 1 9. Wzajemne wykluczanie 9.1 Przeplot i współużywalność zasobów Wyróżniamy dwa rodzaje zasobów: 1. Zasoby współużywalne - mogą być wykorzystane przez

Bardziej szczegółowo

Wielozadaniowość w systemie Microsoft Windows

Wielozadaniowość w systemie Microsoft Windows Wielozadaniowość w systemie Microsoft Windows mgr inż. Tomasz Jaworski tjaworski@kis.p.lodz.pl http://tjaworski.kis.p.lodz.pl/ Idea wielozadaniowości Proces główny Wątki Algorytm szeregowania ustala kolejność

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Wykład 10 - boost Thread. 8 czerwca 2007 Równoległość bardzo wolna reakcja człowieka wolne urządzenia wejścia - wyjścia (np. drukarki) bardzo szybkie procesory można przeprowadzać obliczenia podczas obsługi

Bardziej szczegółowo

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

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1 Współbieżność i równoległość w środowiskach obiektowych Krzysztof Banaś Obliczenia równoległe 1 Java Model współbieżności Javy opiera się na realizacji szeregu omawianych dotychczas elementów: zarządzanie

Bardziej szczegółowo

Modelowanie procesów współbieżnych

Modelowanie procesów współbieżnych Modelowanie procesów współbieżnych dr inż. Maciej Piotrowicz Katedra Mikroelektroniki i Technik Informatycznych PŁ piotrowi@dmcs.p.lodz.pl http://fiona.dmcs.pl/~piotrowi -> Modelowanie... Literatura M.

Bardziej szczegółowo

Działanie systemu operacyjnego

Działanie systemu operacyjnego Działanie systemu operacyjnego Budowa systemu komputerowego Jednostka centralna Sterownik dysku Sterownik drukarki Sterownik sieci Szyna systemowa (magistrala danych) Sterownik pamięci operacyjnej Pamięć

Bardziej szczegółowo

9. Problem wzajemnego wykluczania i sekcji krytycznej

9. Problem wzajemnego wykluczania i sekcji krytycznej J. Ułasiewicz Programowanie aplikacji współbieżnych 1 9. Problem wzajemnego wykluczania i sekcji krytycznej 9.1 Przeplot i współużywalność zasobów Wyróżniamy dwa rodzaje zasobów: 1. Zasoby współużywalne

Bardziej szczegółowo

Materiały pomocnicze 1

Materiały pomocnicze 1 JĄDRO SYSEMU Jądro systemu stanowi główny interfejs między sprzętem (surową maszyną), a systemem operacyjnym. JĄDRO SYSEMU inne elementy systemu jądro systemu surowa maszyna 2 PODSAWOWE UDOGODIEIA SPRZĘOWE

Bardziej szczegółowo

Wstęp do programowania 2

Wstęp do programowania 2 Wstęp do programowania 2 wykład 10 Zadania Agata Półrola Wydział Matematyki UŁ 2005/2006 http://www.math.uni.lodz.pl/~polrola Współbieżność dotychczasowe programy wykonywały akcje sekwencyjnie Ada umożliwia

Bardziej szczegółowo

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

Współbieżność w środowisku Java Współbieżność w środowisku Java Wątki i ich synchronizacja Zagadnienia Tworzenie wątków Stany wątków i ich zmiana Demony Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych

Bardziej szczegółowo

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

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego Wątki Wątek - definicja Ciąg instrukcji (podprogram) który może być wykonywane współbieżnie (równolegle) z innymi programami, Wątki działają w ramach tego samego procesu Współdzielą dane (mogą operować

Bardziej szczegółowo

Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003

Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003 Obliczenia równoległe i rozproszone w JAVIE Michał Kozłowski 30 listopada 2003 Wątki w JAVIE Reprezentacja wątków jako obiektów Uruchamianie i zatrzymywanie wątków Realizacja wątków Ograniczenia Mechanizmy

Bardziej szczegółowo

I.Wojnicki, Tech.Inter.

I.Wojnicki, Tech.Inter. Igor Wojnicki (AGH, KA) 13 maja 2012 1 / 26 Hypertext Preprocessor Igor Wojnicki Katedra Automatyki Akademia Górniczo-Hutnicza w Krakowie 13 maja 2012 $Id: php1.tex,v 1.1 2011/11/19 19:14:25 wojnicki Exp

Bardziej szczegółowo

Programowanie wspóªbie»ne

Programowanie wspóªbie»ne 1 Programowanie wspóªbie»ne wiczenia 2 semafory cz. 1 Zadanie 1: Producent i konsument z buforem cyklicznym type porcja; void produkuj(porcja &p); void konsumuj(porcja p); porcja bufor[n]; / bufor cykliczny

Bardziej szczegółowo

Problem zakleszczenia. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Problem zakleszczenia. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Wzmianka o zakleszczeniu (ang. deadlock, inne tłumaczenia: blokada, impas, zastój) pojawiła się przy okazji synchronizacji procesów. W tym module, zjawisko

Bardziej szczegółowo

Programowanie wspóªbie»ne

Programowanie wspóªbie»ne 1 Programowanie wspóªbie»ne wiczenia 5 monitory cz. 1 Zadanie 1: Stolik dwuosobowy raz jeszcze W systemie dziaªa N par procesów. Procesy z pary s nierozró»nialne. Ka»dy proces cyklicznie wykonuje wªasnesprawy,

Bardziej szczegółowo

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4 Spis treści 1 Wątki 1 2 Tworzenie wątków 1 3 Synchronizacja 3 4 Dodatki 3 5 Algorytmy sortowania 4 6 Klasa Runnable 4 Temat: Wątki Czym są wątki. Grafika. Proste animacje. Małe podsumowanie materiału.

Bardziej szczegółowo

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

Języki i Techniki Programowania II. Wykład 7. Współbieżność 1 Języki i Techniki Programowania II Wykład 7 Współbieżność 1 Programy, Procesy, Wątki Program to zestaw instrukcji do wykonania, dane do przetworzenia, mechanizmy sterujące (stos) Proces w komputerze to

Bardziej szczegółowo

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

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku. Laboratorium 7 Wstęp Jednym z podstawowych własności Javy jest wielowątkowość. Wiąże się to z możliwością współbieżnego wykonywania różnych operacji w ramach pojedynczej wirtualnej maszyny Javy (JVM).

Bardziej szczegółowo

Monitory. Wady semafora

Monitory. Wady semafora Wady semafora Monitory Niestrukturalny mechanizm synchronizacji Nie ułatwia wykrywania błędów synchronizacyjnych w czasie kompilacji programu Idea Jądro systemu operacyjnego jako monolityczny monitor -

Bardziej szczegółowo

Klasyczne problemy synchronizacji

Klasyczne problemy synchronizacji Klasyczne problemy synchronizacji Systemy Operacyjne 2 laboratorium Mateusz Hołenko 19 grudnia 2011 Plan zajęć 1 Synchronizacja 2 Problem producenta / konsumenta 3 Problem pięciu filozofów 4 Problem czytelników

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

Przeciwdziałanie zakleszczeniu. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Przeciwdziałanie zakleszczeniu. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Zasadniczo można wyróżnić dwa rodzaje podejść do rozwiązania problemu zakleszczenia. Jedno polega na niedopuszczeniu do powstania zakleszczenia, drugie

Bardziej szczegółowo

Działanie systemu operacyjnego

Działanie systemu operacyjnego Budowa systemu komputerowego Działanie systemu operacyjnego Jednostka centralna dysku Szyna systemowa (magistrala danych) drukarki pamięci operacyjnej sieci Pamięć operacyjna Przerwania Przerwania Przerwanie

Bardziej szczegółowo

Koordynacja procesów w środowisku rozproszonym

Koordynacja procesów w środowisku rozproszonym Systemy rozproszone Koordynacja procesów w środowisku rozproszonym System rozproszony jest zbiorem luźno powiązanych ze sobą komputerów połączonych siecią komunikacyjną (Silberschatz). Zasoby zdalne -

Bardziej szczegółowo

POTRZEBY A B C D E P P P P P

POTRZEBY A B C D E P P P P P 1. (2p.) Narysuj przykładowy graf przydziału (jednokrotnych) zasobów (bez zakleszczenia) i sprawdź, jakie przykładowe żądania przydzielenia zasobów spowodują powstanie zakleszczenia, a jakie nie. W przypadku

Bardziej szczegółowo

Mechanizmy komunikacji. spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix)

Mechanizmy komunikacji. spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix) Mechanizmy komunikacji spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix) Język CSP Hoare (1978r.) Communicating Sequential Processes

Bardziej szczegółowo

Systemy Czasu Rzeczywistego (SCR)

Systemy Czasu Rzeczywistego (SCR) Systemy Czasu Rzeczywistego (SCR) Wykład 13: Elementy systemów operacyjnych czasu rzeczywistego (2/2) SKiTI2017 WYDZIAŁ ELEKTROTECHNIKI I AUTOMATYKI KATEDRA INŻYNIERII SYSTEMÓW STEROWANIA Kierunek: Automatyka

Bardziej szczegółowo

I.Wojnicki, PHP. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Ktedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie.

I.Wojnicki, PHP. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Ktedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie. Igor Wojnicki (AGH, KIS) 7 kwietnia 2018 1 / 28 Hypertext Preprocessor Igor Wojnicki Ktedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie 7 kwietnia 2018 Igor Wojnicki (AGH, KIS) 7 kwietnia

Bardziej szczegółowo

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe 4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa

Bardziej szczegółowo

Proces y i y w i ąt ą ki

Proces y i y w i ąt ą ki Procesy i wątki Proces Proces jest wykonywanym programem. Wykonanie procesu musi przebiegać w sposób sekwencyjny ( w dowolnej chwili na zamówienie naszego procesu może być wykonany co najwyżej jeden rozkaz

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW

ZASADY PROGRAMOWANIA KOMPUTERÓW POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.

Bardziej szczegółowo

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu Proces Procesy i wątki Proces jest wykonywanym programem. Wykonanie procesu musi przebiegać w sposób sekwencyjny ( w dowolnej chwili na zamówienie naszego procesu może być wykonany co najwyżej jeden rozkaz

Bardziej szczegółowo

Systemy wbudowane. Systemy operacyjne czasu rzeczywistego

Systemy wbudowane. Systemy operacyjne czasu rzeczywistego Systemy wbudowane Systemy operacyjne czasu rzeczywistego Definicje System czasu rzeczywistego to taki, w którym wynik przetwarzania nie zależy tylko i wyłącznie od jego logicznej poprawności, ale również

Bardziej szczegółowo

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy) Rok akademicki 2012/2013, Wykład nr 2 2/25 Plan wykładu nr 2 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013

Bardziej szczegółowo

3URJUDPRZDQLHZVSyáELH*QHZVWS

3URJUDPRZDQLHZVSyáELH*QHZVWS 3URJUDPRZDQLHZVSyáELH*QHZVWS Problem sortowania N liczb Algorytm sekwencyjny sortuj(1, N); NRV]WVRUWRZDQLDSU]H]SURVW]DPLDQN 2 SRUyZQD $OJRU\WPUyZQROHJá\ cobegin {wykonaj równolegle} VRUWXMSyáB1 VRUWXMSyáB11

Bardziej szczegółowo

Wzajemne wykluczanie i zakleszczenie

Wzajemne wykluczanie i zakleszczenie Wzajemne wykluczanie i zakleszczenie Wzajemne wykluczanie Wzajemne wykluczenie zapewnia procesom ochronę przy dostępie do zasobów, daje im np. gwarancję, że jako jedyne będą mogły z nich korzystać Typy

Bardziej szczegółowo