Różnica Między Semaforem A Monitorem

Różnica Między Semaforem A Monitorem
Różnica Między Semaforem A Monitorem

Wideo: Różnica Między Semaforem A Monitorem

Wideo: Różnica Między Semaforem A Monitorem
Wideo: KŚ Wyjaśnia: różnica między HDMI a DisplayPort 2024, Może
Anonim

Semafor a monitor

Semafor to struktura danych używana w celu zapewnienia, że wiele procesów nie ma dostępu do wspólnego zasobu lub krytycznej sekcji w tym samym czasie w równoległych środowiskach programowania. Semafory służą do unikania martwych zamków i warunków wyścigu. Monitor to konstrukcja języka programowania, która służy również do unikania wielu procesów uzyskujących dostęp do wspólnego zasobu w tym samym czasie, co gwarantuje wzajemne wykluczenie. Monitory wykorzystują zmienne warunkowe, aby osiągnąć to zadanie.

Co to jest semafor?

Semafor to struktura danych służąca do wzajemnego wykluczania krytycznych sekcji. Semafory obsługują głównie dwie operacje zwane czekaniem (historycznie znane jako P) i sygnałem (historycznie znane jako V). Operacja oczekiwania blokuje proces, dopóki semafor nie zostanie otwarty, a operacja na sygnale pozwoli na wejście innego procesu (wątku). Każdy semafor jest powiązany z kolejką oczekujących procesów. Gdy operacja oczekiwania jest wywoływana przez wątek, jeśli semafor jest otwarty, wątek może być kontynuowany. Jeśli semafor jest zamknięty, gdy operacja oczekiwania jest wywoływana przez wątek, wątek jest blokowany i musi czekać w kolejce. Operacja sygnału otwiera semafor i jeśli w kolejce jest już wątek, proces ten może być kontynuowany, a jeśli w kolejce nie ma żadnych wątków, sygnał jest zapamiętywany dla następnych wątków. Istnieją dwa typy semaforów zwane semaforami mutex i semaforami liczącymi. Semafory Mutex umożliwiają pojedynczy dostęp do zasobu, a semafory zliczające pozwalają wielu wątkom na dostęp do zasobu (który ma kilka dostępnych jednostek).

Co to jest monitor?

Monitor to konstrukcja języka programowania używana do kontrolowania dostępu do współdzielonych danych. Monitory hermetyzują współdzielone struktury danych, procedury (które działają na współużytkowanych strukturach danych) i synchronizację między współbieżnymi wywołaniami procedur. Monitor upewnia się, że jego dane nie są narażone na nieustrukturyzowany dostęp i gwarantuje, że ścieżki (które uzyskują dostęp do danych monitora poprzez swoje procedury) wchodzą w interakcje w legalny sposób. Monitor gwarantuje wzajemne wykluczanie, umożliwiając tylko jednemu wątkowi wykonywanie dowolnej procedury monitorowania w danym czasie. Jeśli inny wątek próbuje wywołać metodę w monitorze, podczas gdy wątek wykonuje już procedurę w monitorze, druga procedura jest blokowana i musi czekać w kolejce. Istnieją dwa typy monitorów o nazwie monitory Hoare i monitory Mesa. Różnią się głównie semantyką planowania.

Jaka jest różnica między Semaphore i Monitor?

Chociaż zarówno semafory, jak i monitory są używane do osiągnięcia wzajemnego wykluczenia w równoległych środowiskach programowania, różnią się one technikami używanymi do osiągnięcia tego zadania. W monitorach kod używany do wzajemnego wykluczania znajduje się w jednym miejscu i jest bardziej ustrukturyzowany, podczas gdy kod semaforów jest dystrybuowany jako wywołania funkcji oczekiwania i sygnalizacji. Ponadto bardzo łatwo jest popełniać błędy podczas implementacji semaforów, podczas gdy istnieje bardzo mała szansa na popełnienie błędów podczas wdrażania monitorów. Ponadto monitory używają zmiennych warunkowych, podczas gdy semafory nie.

Zalecane: