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



Podobne dokumenty
* Wymień typowe standardy sygnałów procesowych: - analogowy - dwustanowe

System plików warstwa fizyczna. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Czas wirtualny, złożoność algorytmów

Konstrukcja spójnego obrazu stanu globalnego algorytmy

Sigma Liniowa 2-Strefowa Centrala Alarmowa Dla Twojego biura i domu

POMOC DO PROGRAMU. Merco s.c. - Programy dla resturacji i hoteli

PORADNIK UŻYTKOWNIKA. PowerMaster-10 G2. W pełni nadzorowany bezprzewodowy system alarmowy.

Praca dyplomowa inżynierska

CA-10 Wersja programowa 5.11

Programowanie aplikacji WWW w technologii.net

Dz.U Nr 97 poz. 486 UCHWAŁA. TRYBUNAŁU KONSTYTUCYJNEGO z dnia 9 grudnia 1992 r. (W. 13/91)

Partition Manager 12 Home

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Różne reprezentacje mapy feromonowej w problemie plecakowym

Acronis i Acronis Secure Zone są zastrzeżonymi znakami towarowymi firmy Acronis, Inc.

RAPORT DLA DEPARTAMENTU ZARZĄDZANIA EUROPEJSKIM FUNDUSZEM SPOŁECZNYM

Dr Tomasz Rostkowski 2008 r.

AutoCAD -- kurs podstawowy

USOS: System raportowania i analiz statystycznych

Podręcznik użytkownika

INSTRUKCJA OBSŁUGI PANELU ADMINISTRACYJNEGO SYSTEMU CMS

Informatyczny System Zarządzania Budżetami Jednostek Samorządu Terytorialnego

9. Protokoły sieciowe TCP/IP

Reprezentacja dokumentów tekstowych w modelu przestrzeni wektorowej

Pozycjonowanie stron dla początkujących!

Jak działa Internet i co z tego wynika dla prób jego regulacji?

Plan wyników i rozwoju oraz przegląd procesu oceny wyników na koniec roku

JAK NIE ZOSTAĆ SPAMEREM

Przewodnik metodyczny po serwisie praca-enter.pl

Poradnik Badaj interaktywnie

Transkrypt:

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 3.2 3.4

Problem sekcji krytycznej Rozwiązania problemu sekcji krytycznej n procesów konkuruje od dostęp do zasobów dzielonych Wkażdym procesie jest segment kodu programu, zwany sekcją krytyczną (critical section), w której ma miejsce dostęp dowspółdzielonego zasobu. Problem jak zapewnić, aby w czasie gdy jeden proces wykonuje się swojej sekcji krytycznej, żaden inny proces nie miał zgody na wykonanie swojej sekcji krytycznej (dotyczącej danego zasobu). 1. Wzajemne wykluczanie (mutual exclusion). Jeśli proces P i wykonuje sekcję krytyczną, żaden inny proces nie może wykonywać sekcji krytycznych. 2. Postęp. Jeśli żaden proces nie działa w sekcji krytycznej oraz istnieją procesy, które chcą wejść do sekcji krytycznych, to tylko procesy nie wykonujące swoich reszt mogą kandydować do wejścia; wybór nie może być odwlekany w nieskończoność. 3. Ograniczone czekanie. Musi istnieć wartość graniczna liczby wejść innych procesów do ich sekcji krytycznych, po tym gdy dany proces zgłosił chęć do sekcji krytycznej i zanim dostał pozwolenie. 3.5 3.7 Sekcja krytyczna Pierwsza próba rozwiązania wymuszona naprzemienność zajmowania sekcji krytycznej przez dwa procesy nie jest spełniony warunek postępu, gdyż proces Pi, wychodząc z sekcji krytycznej, nie może zająć jej ponownie, zanim nie zrobi tego proces Pj jeśli z programu procesu Pj wynika, że nie będzie on już wchodził do sekcji krytycznej, proces Pi nie wejdzie tam nigdy 3.6 3.8

Próba druga Algorytm piekarni Bakery Algorithm Przed wejściem do sekcji krytycznej proces otrzymuje numerek. Obsługa w kolejności ustalonej przez numerki. Jeśli proces P i oraz P j otrzyma ten sam numerek, lecz i < j, to P i jest obsługiwany jako pierwszy. proces sygnalizuje zamiar lub docelowo fakt wejściadosekcji krytycznej, ustawiając znacznik na swojej pozycji na true własność postępu nie jest spełniona, gdyż mogą nastąpić podstawienia true pod odpowiednie pozycje znacznika obu procesów. 3.9 3.11 Algorytm Petersona Semafory (semaphores) Narzędzie synchronizacji nie wymagające aktywnego oczekiwania. Semafor S zmienna całkowita Dostęp do zmiennej S tylko za pomocą operacji: wait (S): while S 0 do no-op; S--; signal (S): S++; znacznik informuje, że proces chce wejść do sekcji krytycznej numer daje prawo innemu, wskazanemu procesowi proces, który później ustawi numer rywala, musi w konsekwencji poczekać, aż rywal wyjdzie z sekcji krytycznej. 3.10 3.12

Semafor na poziomie systemu Sekcja krytyczna z udziałem n procesów Dane współdzielone: semaphore mutex; //initially mutex = 1 Proces Pi: do { wait(mutex); critical section signal(mutex); remainder section } while (1); eliminacja aktywnego czekania w pętli stan procesu zmieniany jest na oczekujący, więc planista przydziału procesora nie uwzględnia go, wybierając proces do wykonania liczba procesów oczekujących jest równa wartości bezwzględnej pola wartość 3.13 3.15 Semafor na poziomie systemu Zastosowanie semafora Wykonaj B w P j dopiero wtedy gdy A zostanie wykonane w P i Wartość początkowa semafora flag = 0 Kod: P i P j M M A wait(flag) signal(flag) B gdy wartość ujemna, to znaczy, że są procesy czekające w kolejce z kolejki wybierany jest jeden z procesów, a jego stan ustawiany jest na gotowy 3.14 3.16

Blokada i zagłodzenie Blokada (deadlock) dwa lub więcej procesów czeka na zdarzenie, które może być spowodowane jedynie przez jeden z oczekujących procesów. Niech S i Q to dwa semafory o wartościach początkowych 1 P 0 P 1 wait(s); wait(q); wait(q); wait(s); M M signal(s); signal(q); signal(q) signal(s); Zagłodzenie (starvation) blokowanie nieskończone. Proces może nigdy nie być usunięty z kolejki pod semaforem. Problem filozofów Philosopher(int i) { while(1) { Think(); TakeLeftFork(i); TakeRightFork(i); Eat(); PutLeftFork(i); PutRightFork(i); } } Może się zdarzyć, każdy z filozofów weźmie do lewej ręki widelec, ale wszyscy będą czekali, aby można było wziąć drugi widelec do prawej ręki. 3.17 3.19 Problem filozofów Postępowanie z blokadą Ignorowanie (metoda strusia): możliwa jeśli rzadko się zdarzają Wykrywanie i wychodzenie z blokady: drastyczne przerwanie zakleszczenia Stałe unikanie blokady: zachować ostrożność przy przydzielaniu zasobów. Zapobieganie blokadom: taka organizacja systemu, aby blokada nie mogła nastąpić. 3.18 3.20

Warunki konieczne blokady (koniunkcja) Blokada Wzajemne wyłączanie (mutual exclusion): istnieją zasoby niepodzielne. Przetrzymywanie i oczekiwanie (hold and wait): musi istnieć proces mający przydzielony przynajmniej jeden zasób i oczekujący na przydział dodatkowego zasobu, który jest przetrzymywany przez inny proces. Brak wywłaszczeń (no preemption): zasoby nie podlegają wywłaszczaniu. Czekanie cykliczne: zamknięty łańcuch oczekiwania procesów na zasób przetrzymywany przez proces kolejny w łańcuchu. Blokada nie zajdzie jeśli którykolwiek warunek nie jest spełniony. 3.21 3.23 Blokada 3.22