Różnica między semaforem a monitorem w systemie operacyjnym

Autor: Laura McKinney
Data Utworzenia: 1 Kwiecień 2021
Data Aktualizacji: 5 Móc 2024
Anonim
Różnica między semaforem a monitorem w systemie operacyjnym - Technologia
Różnica między semaforem a monitorem w systemie operacyjnym - Technologia

Zawartość


Zarówno semafor, jak i monitor pozwalają procesom na dostęp do wspólnych zasobów z wzajemnym wykluczeniem. Oba są narzędziem do synchronizacji procesów. Zamiast tego bardzo się od siebie różnią. Gdzie Semafor jest zmienną całkowitą, którą można obsługiwać tylko za pomocą operacji wait () i signal () oprócz inicjalizacji. Z drugiej strony Monitor typ jest abstrakcyjnym typem danych, którego konstrukcja pozwala aktywować jeden proces naraz. W tym artykule omówimy różnice między semaforem a monitorem za pomocą tabeli porównawczej pokazanej poniżej.

  1. Wykres porównania
  2. Definicja
  3. Kluczowe różnice
  4. Wniosek

Wykres porównania

Podstawa do porównaniaSemafor Monitor
Podstawowy Semafory to zmienna całkowita S.Monitor jest abstrakcyjnym typem danych.
AkcjaWartość Semaphore S wskazuje liczbę udostępnionych zasobów dostępnych w systemieTyp Monitor zawiera zmienne współdzielone i zestaw procedur, które działają na zmiennej współdzielonej.
DostępGdy jakikolwiek proces uzyskuje dostęp do udostępnionych zasobów, wykonuje operację wait () na S, a kiedy zwalnia udostępnione zasoby, wykonuje operację signal () na S.Gdy dowolny proces chce uzyskać dostęp do zmiennych współdzielonych na monitorze, musi uzyskać do niego dostęp poprzez procedury.
Zmienna warunkuSemafor nie ma zmiennych warunkowych.Monitor ma zmienne warunkowe.


Definicja semafora

Będąc narzędziem do synchronizacji procesów, Semafor jest zmienna całkowita S. Ta zmienna całkowita S jest inicjowana na liczba zasobów obecny w systemie. Wartość semafora S można modyfikować tylko za pomocą dwóch funkcji czekać() i sygnał() oprócz inicjalizacji.

Operacja wait () i signal () modyfikuje niepodzielnie wartość semafora S. Co oznacza, że ​​gdy proces modyfikuje wartość semafora, żaden inny proces nie może jednocześnie modyfikować wartości semafora. Ponadto system operacyjny wyróżnia semafor w dwóch kategoriach Liczenie semaforów i Binarny semafor.

W Licząc semafor, wartość semafora S jest inicjalizowana do liczby zasobów obecnych w systemie. Ilekroć proces chce uzyskać dostęp do udostępnionych zasobów, wykonuje to czekać() operacja na semaforze, który ubytki wartość semafora o jeden. Po zwolnieniu udostępnionego zasobu wykonuje polecenie sygnał() operacja na semaforze, który przyrosty wartość semafora o jeden. Kiedy liczba semaforów idzie do 0, to znaczy wszystkie zasoby są zajęte przez procesy. Jeśli proces wymaga użycia zasobu, gdy liczba semaforów wynosi 0, wykonuje funkcję wait () i get zablokowany dopóki proces wykorzystujący udostępnione zasoby nie zwolni go, a wartość semafora nie będzie większa niż 0.


W Semafor binarny, wartość semafora mieści się w zakresie od 0 do 1. Jest podobny do blokady mutex, ale mutex jest mechanizmem blokującym, podczas gdy semafor jest mechanizmem sygnalizacyjnym. W semaforze binarnym, jeśli proces chce uzyskać dostęp do zasobu, wykonuje operację wait () na semaforze i ubytki wartość semafora od 1 do 0. Gdy proces zwalnia zasób, wykonuje a sygnał() na semaforze i zwiększa jego wartość do 1. Jeśli wartość semafora wynosi 0, a proces chce uzyskać dostęp do zasobu, wykonuje operację wait () i blokuje się, dopóki bieżący proces wykorzystujący zasoby nie zwolni zasobu.

Definicja monitora

Aby przezwyciężyć błędy synchronizacji występujące podczas używania semafora do synchronizacji procesów, naukowcy wprowadzili konstrukcję synchronizacji wysokiego poziomu, tj. typ monitora. Typ monitora to abstrakcyjny typ danych który służy do synchronizacji procesów.

Będąc abstrakcyjnym typem danych, typ monitora zawiera współdzielone zmienne danych które mają być współużytkowane przez wszystkie procesy i niektóre zdefiniowane przez programistę operacje które umożliwiają wykonywanie procesów w ramach wzajemnego wykluczenia na monitorze. Proces może nie ma bezpośredniego dostępu wspólna zmienna danych w monitorze; proces musi uzyskać do niego dostęp poprzez procedury zdefiniowane w monitorze, które pozwalają tylko jednemu procesowi na dostęp do zmiennych współużytkowanych jednocześnie na monitorze.

Składnia monitora jest następująca:

monitor nazwa_monitora {// procedura deklaracji zmiennych współdzielonych P1 (...) {} procedura P2 (...) {} procedura Pn (...) {} kod inicjalizacji (...) {}}

Monitor to konstrukcja taka, że ​​tylko jeden proces jest aktywny w tym samym czasie na monitorze. Jeśli inny proces próbuje uzyskać dostęp do zmiennej współdzielonej w monitorze, zostaje zablokowany i ustawiony w kolejce, aby uzyskać dostęp do współdzielonych danych, gdy poprzedni dostęp do procesu zwalnia.

Zmienne warunkowe zostały wprowadzone dla dodatkowego mechanizmu synchronizacji. Zmienna warunkowa pozwala procesowi czekać w monitorze i umożliwia natychmiastowe wznowienie procesu oczekiwania, gdy drugi proces zwolni zasoby.

The zmienna warunkowa może wywołać tylko dwie operacje czekać() i sygnał(). Gdzie jeśli proces P wywołuje funkcję wait () operacja zostaje zawieszona na monitorze do czasu innego procesu Q wywołanie sygnału () operacja tj. operacja signal () wywołana przez proces wznawia zawieszony proces.

  1. Podstawowa różnica między semaforem a monitorem polega na tym, że semafor jest zmienna całkowita S które wskazują liczbę zasobów dostępnych w systemie, podczas gdy monitor jest abstrakcyjny typ danych co pozwala na wykonanie tylko jednego procesu w sekcji krytycznej na raz.
  2. Wartość semafora można modyfikować za pomocą czekać() i sygnał() tylko operacja. Z drugiej strony monitor ma wspólne zmienne i procedury, dzięki którym procesy mogą uzyskać dostęp do zmiennych wspólnych.
  3. W semaforze, gdy proces chce uzyskać dostęp do współdzielonych zasobów, proces ten wykonuje czekać() i blokuje zasoby, a po zwolnieniu zasobów wykonuje sygnał() operacja. W monitorach, gdy proces musi uzyskać dostęp do współużytkowanych zasobów, musi uzyskać do nich dostęp poprzez procedury monitorowane.
  4. Typ monitora ma zmienne warunkowe który semafor nie ma.

Wniosek:

Monitory są łatwe do wdrożenia niż semafory, a prawdopodobieństwo wystąpienia błędu w monitorze jest niewielkie w porównaniu z semaforami.