Przetwarzanie Synchronization: Problem z sekcją krytyczną w systemie operacyjnym

Co to jest proces Synckoronacja?

Przetwarzanie Synchronizacja to zadanie polegające na takiej koordynacji realizacji procesów, aby żadne dwa procesy nie miały dostępu do tych samych współdzielonych danych i zasobów.

Jest to szczególnie potrzebne w systemie wieloprocesowym, gdy wiele procesów działa razem i więcej niż jeden proces próbuje uzyskać dostęp do tego samego współdzielonego zasobu lub danych w tym samym czasie.

Może to prowadzić do niespójności współdzielonych danych. Tak więc zmiana dokonana przez jeden proces niekoniecznie odzwierciedla się, gdy inne procesy uzyskują dostęp do tych samych współdzielonych danych. Aby uniknąć tego typu niespójności danych, procesy muszą być ze sobą zsynchronizowane.

Jak proces Synchronizacja Działa?

Na przykład proces A zmienia dane w komórce pamięci, podczas gdy inny proces B próbuje odczytać dane z taki sam lokalizacja pamięci. Istnieje duże prawdopodobieństwo, że dane odczytane przez drugi proces będą błędne.

Przetwarzanie SyncPrace hronizacyjne

Sekcje programu

Oto cztery istotne elementy sekcji krytycznej:

  • Sekcja wpisów: Jest to część procesu, która decyduje o przystąpieniu do konkretnego procesu.
  • Krytyczny fragment: Ta część umożliwia jednemu procesowi wprowadzenie i modyfikację zmiennej współdzielonej.
  • Sekcja wyjścia: Sekcja wyjściowa umożliwia innemu procesowi oczekującemu w sekcji wejściowej wejście do sekcji krytycznych. Sprawdza również, czy proces, który zakończył swoje wykonanie, powinien zostać usunięty w tej sekcji.
  • Pozostała sekcja: Wszystkie pozostałe części Kodeksu, które nie znajdują się w Sekcji Krytycznej, Wejścia i Wyjścia, nazywane są Sekcją Pozostałą.

Co to jest problem z sekcją krytyczną?

Sekcja krytyczna to segment kodu, do którego proces sygnałowy może uzyskać dostęp w określonym momencie. Sekcja składa się ze współdzielonych zasobów danych, do których muszą mieć dostęp inne procesy.

  • Wejście do sekcji krytycznej obsługiwane jest przez funkcję wait() i jest reprezentowane jako P().
  • Wyjściem z sekcji krytycznej steruje funkcja sygnału(), reprezentowana jako V().

W sekcji krytycznej można wykonać tylko jeden proces. Inne procesy oczekujące na wykonanie swojej sekcji krytycznej muszą poczekać, aż bieżący proces zakończy swoje działanie.

Zasady sekcji krytycznej

Sekcja krytyczna musi egzekwować wszystkie trzy zasady:

  • Wzajemne wykluczenie: Wzajemne wykluczanie to specjalny rodzaj semafora binarnego, który służy do kontrolowania dostępu do współdzielonego zasobu. Zawiera mechanizm dziedziczenia priorytetów, pozwalający uniknąć długotrwałych problemów z odwracaniem priorytetów. W swojej sekcji krytycznej może jednocześnie działać nie więcej niż jeden proces.
  • postęp: To rozwiązanie stosuje się, gdy nikogo nie ma w sekcji krytycznej, a ktoś chce wejść. Wtedy procesy, których nie ma w sekcji przypomnień, powinny w skończonym czasie zdecydować, kto powinien wejść.
  • Związane oczekiwanie: Kiedy proces żąda wejścia do sekcji krytycznej, istnieje określony limit liczby procesów, które mogą dostać się do sekcji krytycznej. Zatem po osiągnięciu limitu system musi zezwolić żądaniu procesu na dotarcie do jego sekcji krytycznej.

Rozwiązania sekcji krytycznej

W trakcie Synchronizacja, sekcja krytyczna odgrywa główną rolę, dlatego problem musi zostać rozwiązany.

Oto kilka powszechnie stosowanych metod rozwiązania problemu sekcji krytycznej.

Rozwiązanie Petersona

Rozwiązanie Petersona jest szeroko stosowanym rozwiązaniem problemów z sekcjami krytycznymi. Algorytm ten został opracowany przez informatyka Petersona i dlatego nazywany jest rozwiązaniem Petersona.

W tym rozwiązaniu, gdy proces jest wykonywany w stanie krytycznym, wówczas drugi proces wykonuje tylko resztę kodu i może się zdarzyć sytuacja odwrotna. Metoda ta pozwala również upewnić się, że w sekcji krytycznej w określonym czasie działa tylko jeden proces.

Przykład

Rozwiązania sekcji krytycznej

PROCESS Pi
FLAG[i] = true
while( (turn != i) AND (CS is !free) ){ wait;
}
CRITICAL SECTION FLAG[i] = false
turn = j; //choose another process to go to CS
  • Załóżmy, że istnieje N procesów (P1, P2,… PN) i każdy proces w pewnym momencie wymaga wejścia do Sekcji Krytycznej
  • Utrzymywana jest tablica FLAG[] o rozmiarze N, która domyślnie ma wartość false. Zatem za każdym razem, gdy proces wymaga wejścia do sekcji krytycznej, musi ustawić swoją flagę na wartość true. Na przykład, jeśli Pi chce wejść, ustawi FLAG[i]=TRUE.
  • Kolejna zmienna o nazwie TURN wskazuje numer procesu, który aktualnie chce wejść do CS.
  • Proces, który przy wyjściu wejdzie do sekcji krytycznej, zmieni TURN na inny numer z listy gotowych procesów.
  • Przykład: tura to 2, następnie P2 wchodzi do sekcji krytycznej i wychodząc z tury = 3, w związku z czym P3 wychodzi z pętli oczekiwania.

Syncsprzęt do ronizacji

Czasami problemy sekcji krytycznej są również rozwiązywane sprzętowo. Niektóre systemy operacyjne oferują funkcjonalność blokady, w której proces uzyskuje blokadę po wejściu do sekcji krytycznej i zwalnia blokadę po jej opuszczeniu.

Zatem gdy inny proces będzie próbował wejść do sekcji krytycznej, nie będzie mógł wejść, ponieważ jest zablokowany. Może to zrobić tylko wtedy, gdy jest wolne, po zdobyciu samego zamka.

Zamki Mutex

Syncchronizacja sprzętu nie jest prostą metodą do wdrożenia dla każdego, dlatego wprowadzono również ścisłą metodę programową znaną jako Mutex Locks.

W tym podejściu we wejściowej sekcji kodu uzyskuje się BLOKADĘ dla zasobów krytycznych wykorzystywanych w sekcji krytycznej. W części wyjściowej zamek ten jest zwolniony.

Semaphore Rozwiązanie

Semaphore jest po prostu zmienną, która nie jest ujemna i jest współdzielona między wątkami. Jest to kolejny algorytm lub rozwiązanie problemu sekcji krytycznej. Jest to mechanizm sygnalizacyjny i wątek oczekujący na semaforze, który może być sygnalizowany przez inny wątek.

Wykorzystuje dwie operacje atomowe: 1) czekanie i 2) sygnał do synchronizacji procesów.

Przykład

WAIT ( S ):
while ( S <= 0 );
S = S - 1;
SIGNAL ( S ):
S = S + 1;

Podsumowanie

  • Synchronizacja procesów polega na koordynowaniu wykonywania procesów w taki sposób, aby dwa procesy nie miały dostępu do tych samych współdzielonych danych i zasobów.
  • Cztery elementy sekcji krytycznej to: 1) Sekcja wejściowa 2) Sekcja krytyczna 3) Sekcja wyjściowa 4) Sekcja przypomnień
  • Sekcja krytyczna to segment kodu, do którego proces sygnałowy może uzyskać dostęp w określonym momencie.
  • Trzy obowiązkowe zasady, które muszą być egzekwowane przez sekcję krytyczną, to: 1) Wzajemne wykluczenie 2) Rozwiązanie procesowe 3) Związane oczekiwanie
  • Wzajemne wykluczanie to specjalny rodzaj semafora binarnego, który służy do kontrolowania dostępu do współdzielonego zasobu.
  • Rozwiązanie procesowe stosuje się, gdy w sekcji krytycznej nie ma nikogo, a ktoś chce wejść.
  • W przypadku rozwiązania związanego oczekiwania, po tym jak proces zażąda dostępu do swojej sekcji krytycznej, istnieje ograniczenie liczby innych procesów, które mogą dostać się do swojej sekcji krytycznej.
  • Rozwiązanie Petersona jest szeroko stosowanym rozwiązaniem problemów z sekcjami krytycznymi.
  • Problemy sekcji krytycznej rozwiązuje się również poprzez synchronizację sprzętu
  • Syncsprzętowa chronizacja nie jest metodą prostą do wdrożenia dla każdego, dlatego wprowadzono również ścisłą metodę programową znaną jako Mutex Locks.
  • Semaphore to inny algorytm lub rozwiązanie problemu sekcji krytycznej.