Problem sekcji krytycznej

Slides:



Advertisements
Podobne prezentacje
Zerowanie mikroprocesorów Cel: wprowadzenie mikroprocesora w określony stan początkowy Zwykle realizowany poprzez: inicjalizację licznika rozkazów (PC)
Advertisements

Podstawowe pojęcia programowania współbieżnego
Mechanizmy pracy równoległej
Jarosław Kuchta Monitory.
Wykład nr 8: Zakleszczenia
Programowanie I Rekurencja.
Systemy rozproszone W. Bartkiewicz Wykład 9. Wprowadzenie do koordynacji programów współbieżnych.
Semafory Autorzy : Michał Winciorek Łukasz Jackowicz.
PROGRAMOWANIE STRUKTURALNE
ALGORYTM Co to jest algorytm?
SYSTEMY OPERACYJNE PROCESY I WĄTKI
SYSTEMY OPERACYJNE SYNCHRONIZACJA PROCESÓW
SEMAFORY Dominik Niewiadomy Łukasz Dąbrowski.
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
Magistrala & mostki PN/PD
Temat nr 10: System przerwań
Wykład 3 Wojciech Pieprzyca
Artur Szmigiel Paweł Zarębski Kl. III i
Projektowanie i programowanie obiektowe II - Wykład IV
Wstęp do interpretacji algorytmów
ZARZĄDZANIE PROCESAMI
Problem rozbieżności czasów jednym z wielu problemów pojawiających się w systemach rozproszonych jest rozbieżność wartości zegarów na poszczególnych węzłach-maszynach.
Język Java Wielowątkowość.
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
Wątki.
ALGORYTMY.
ogólne pojęcia struktury
Hipoteza cegiełek, k-ramienny bandyta, minimalny problem zwodniczy
Podstawy programowania II
Wielozadaniowowść systemu operacyjnego Linux
Systemy operacyjne.
Zasada działania komputera
Prezentacja opisuje mechanizm pracy
Automatyka i Robotyka Systemy czasu rzeczywistego Wykład 4.
Inicjalizacja i sprzątanie
Przerwanie ang. interrupt.
Buforowanie D e f i n i c j a.
Koncepcja procesu Zadanie i proces. Definicja procesu Process – to program w trakcie wykonywania; wykonanie procesu musi przebiegać w sposób sekwencyjny.
Algorytmy.
POŚREDNIK Jak reprezentowana jest informacja w komputerze? liczby – komputer został wymyślony jako zaawansowane urządzenie służące do wykonywania.
Elżbieta Fiedziukiewicz
MICROSOFT Access TWORZENIE MAKR
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
Wykład 7 Synchronizacja procesów i wątków
W ą t e k (lekki proces) thread.
Projektowanie stron WWW
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
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.
Temat 7: Instrukcje warunkowe
Algorytmika.
Procesor, pamięć, przerwania, WE/WY, …
Algorytmy- Wprowadzenie do programowania
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.
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
Paweł Starzyk Obiektowe metody projektowania systemów
Struktura systemu operacyjnego
Wstęp do interpretacji algorytmów
Tryby adresowania i formaty rozkazów mikroprocesora
Wstęp do programowania Wykład 7
Algorytmy. Co to jest algorytm? Przepis prowadzący do rozwiązania zadania.
POLITECHNIKA POZNAŃSKA
Wątki, programowanie współbieżne
Zrozumieć, przeanalizować i rozwiązać
PROGRAMY DO KONTROLI RODZICIELSKIEJ
PROGRAMY DO KONTROLI RODZICIELSKIEJ
Zapis prezentacji:

Problem sekcji krytycznej Sekcja krytyczna Problem sekcji krytycznej

Definicja sekcji krytycznej Sekcja krytyczna to ciąg operacji na pewnym zasobie (zwykle pamięci), który musi być wykonany w trybie wyłącznym przez tylko jeden z potencjalnie wielu procesów.

Sekcja krytyczna Po wejściu do sekcji proces wykonuje protokół wejścia w którym sprawdza, czy może wejść do sekcji krytycznej. Po wyjściu z sekcji wykonuje protokół wyjścia, aby poinformować inne procesy, ze opuścił już sekcje krytyczną i inny proces może ją zająć.

Na odcinku jednotorowym może przebywać tylko jeden pociąg. Sekcja krytyczna W danej chwili w sekcji krytycznej może przebywać tylko jeden proces Na odcinku jednotorowym może przebywać tylko jeden pociąg.

Wynik działania aplikacji współbieżnej Gdy procesy współbieżne do wzajemnej komunikacji używają wspólnej pamięci, wyniki takiej komunikacji mogą okazać się przypadkowe. Prawidłowa komunikacja współbieżnych procesów przez wspólny obszar pamięci wymaga dotrzymania warunku wzajemnego wykluczania.

Wzajemne wykluczanie Jest to wymaganie, aby ciąg operacji na pewnym zasobie (zwykle pamięci) był wykonany w trybie wyłącznym przez tylko jeden z potencjalnie wielu procesów.

Warunki Rozwiązanie problemu wzajemnego wykluczania musi spełniać poniższe warunki: W sekcji krytycznej musi być tylko jeden proces to znaczy instrukcje z sekcji krytycznej nie mogą być przeplatane. Nie można czynić żadnych założeń co do względnych szybkości wykonywania procesów.

Warunki Proces może się zatrzymać w sekcji lokalnej, nie może natomiast w sekcji krytycznej. Zatrzymanie procesu w sekcji lokalnej nie może blokować innym procesom wejścia do sekcji krytycznej. Każdy z procesów musi w końcu wejść do sekcji krytycznej.

Metody wzajemnego wykluczania Niesystemowe metody wzajemnego wykluczania Blokowanie przerwań Zmiennej blokującej Wykorzystania wsparcia sprzętowego do ochrony sekcji krytycznej Programowe metody zapewnienia wzajemnego wykluczania Algorytm Petersona Algorytm Piekarniczy Systemowe metody wzajemnego wykluczania Wzajemne wykluczanie poprzez obiekty typu mutex

Blokowanie przerwań Opiera się na fakcie, że proces może być przełączony przez: Przerwanie, które aktywuje procedurę szeregującą Wywołanie wprost procedury szeregującej lub innego wywołania systemowego powodującego przełączenie procesów. Gdy żaden z powyższych czynników nie zachodzi procesy nie mogą być przełączane.

Metoda blokowania przerwań Opiera się na następujących zasadach: Protokół wejścia do sekcji – następuje zablokowanie przerwań Protokół wyjścia z sekcji – następuje odblokowanie przerwań Wewnątrz sekcji krytycznej nie wolno używać wywołań systemowych mogących spowodować przełączenie procesów

Metoda blokowania przerwań

Wady metody Przełączanie wszystkich procesów jest zablokowane System nie reaguje na zdarzenia zewnętrzne co może spowodować utratę danych Skuteczne w maszynach jednoprocesorowych

Zastosowanie metody Wewnątrz systemu operacyjnego do ochrony wewnętrznych sekcji krytycznych.

Metoda zmiennej blokującej (nieprawidłowa) Polega na użyciu zmiennej o nazwie lock. Gdy zmienna lock = 0 to sekcja jest wolna, gdy lock = 1 to sekcja jest zajęta. Proces przy wejściu testuje wartość tej zmiennej. Gdy wynosi ona 1 to czeka, gdy zmieni się na 0 to wchodzi do sekcji ustawiając wartość zmiennej lock na 1.

Metoda zmiennej blokującej

Wady Metoda jest niepoprawna, gdyż operacja testowania wartości zmiennej lock i ustawiania jej na 1 może być przerwana (nie jest niepodzielna). Dodatkowa wadą metody jest angażowanie procesora w procedurze aktywnego czekania.

Metoda wykorzystania wsparcia sprzętowego Wiele procesorów zawiera instrukcje wspierające sprzętowo wzajemne wykluczanie. Są to instrukcje typu: Sprawdź i przypisz – (ang. TAS – Test And Set) Sprawdź i zamień – (ang. CAS – Compare And Swap) Zamień – (ang. EXCH – Exchange) Pozwalają one wykonać kilka operacji w sposób nieprzerywalny

Zalety i wady Instrukcje wspierające sprzętowo pozwalają wykonać kilka operacji w sposób nieprzerywalny. Wadą tych metod jest użycie aktywnego czekania co powoduje niepotrzebna stratę mocy procesora.

Programowe metody zapewnienia wzajemnego wykluczania We wczesnych procesorach nie było wsparcia sprzętowego dla wzajemnego wykluczania. Stąd wzajemne wykluczanie realizowano w sposób wyłącznie programowy. Obecnie metody te maja znaczenie tylko teoretyczne i historyczne.

Programowe metody zapewnienia wzajemnego wykluczania Algorytm Dekkera Algorytm Petersona Algorytm piekarniczy

Algorytm Petersona Zapewnia wzajemne wykluczanie dla dwu procesów

Algorytm piekarniczy Przed wejściem do sekcji krytycznej proces otrzymuje numerek. Obsługa w kolejności ustalonej przez numerki. Jeśli proces Pi oraz Pj otrzyma ten sam numerek, lecz i < j, to Pi jest obsługiwany jako pierwszy.

Algorytm piekarniczy Pozwala na rozwiązanie problemu wzajemnego wykluczania dla N procesów. Klient przy wejściu pobiera numerowany bilet. Wartość numeru na bilecie jest najwyższa ze wszystkich dotychczas wydanych, a nie obsłużonych biletów. Gdy stanowisko obsługi się zwolni, ten z czekających klientów jest obsługiwany, który posiada bilet o najniższym numerze.

Algorytm piekarniczy Proces wykonujący protokół wejścia otrzymuje numer – największy z dotychczas przyznanych. Gdy jakiś proces opuszcza sekcję krytyczna, ten z czekających procesów wchodzi do sekcji, który posiada najniższy numer.

Niesystemowe metody wzajemnego wykluczania Wirujące blokady (ang. Spin Locks) wykorzystujące sprzętowe wsparcie w postaci instrukcji sprawdź i przypisz oraz zamień. Stosuje się je do synchronizacji wątków ze względu na mały narzut operacji systemowych. Blokowanie przerwań - do ochrony wewnętrznych sekcji krytycznych systemu operacyjnego.

Niesystemowe metody wzajemnego wykluczania Stosowane są rzadko i ich znaczenie jest raczej teoretyczne. Powody: Prawie zawsze tworzymy aplikacje działające w środowisku systemu operacyjnego, który z reguły dostarcza mechanizmów zapewnienia wzajemnego wykluczania. Realizacja metod wzajemnego wykluczania polega na zawieszeniu pewnych procesów

Niesystemowe metody wzajemnego wykluczania Powody: Realizacja metod wzajemnego wykluczania polega na zawieszeniu pewnych procesów a wznowieniu innych. System operacyjny w naturalny sposób zapewnia takie mechanizmy. Proces zawieszony nie wykonuje czekania aktywnego, a zatem nie zużywa czasu procesora.

Niesystemowe metody wzajemnego wykluczania Powody: Metody systemowe są znacznie prostsze i powiązanie z innymi mechanizmami i zabezpieczeniami. Przykładowo awaryjne zakończenie się procesu w sekcji krytycznej odblokowuje tę sekcję. Można też narzucić maksymalny limit czasowy oczekiwania na wejście do sekcji krytycznej (ang. Timeout).

Wzajemne wykluczanie poprzez obiekty typu mutex Mechanizm zapewniających wzajemne zaimplementowany jest w wielu systemach operacyjnych. W systemach standard Posix mechanizm ten nosi nazwę mutex. Jest to skrót od angielskiego terminu Mutual Exclusion.

Obiekt typu mutex Wprowadzamy atrybuty określające zachowanie obiektu. Gdy NULL atrybuty zostaną przyjęte domyślne. Wykonanie funkcji pozostawia zmienną mutex w stanie nie zablokowanym.

Obiekt typu mutex Gdy przynajmniej jeden proces wykonał wcześniej funkcję mutex_lock zmienna mutex oznaczona będzie jako zajęta. Proces bieżący, wykonujący tę funkcję zostanie wstrzymany. Proces opuszczający sekcję krytyczną powinien poinformować o tym system (wykonać protokół wyjścia).

Obiekt typu mutex Gdy jakieś procesy czekają na wejście do sekcji, to jeden z nich będzie odblokowany i wejdzie do sekcji. Gdy brak takich procesów to sekcja zostanie oznaczona jako wolna.

Podstawowy schemat ochrony sekcji krytycznej przy użyciu zmiennej mutex

Ochrona sekcji krytycznej przez obiekt typu mutex