Logo pl.removalsclassifieds.com

Różnica między muteksem a semaforem (z tabelą)

Spisu treści:

Anonim

Zarządzanie integralnością udostępnianych informacji w dużej mierze zależy od synchronizacji procesów. Do rozwiązywania problemów z sekcją krytyczną dostępne są zarówno rozwiązania programowe, jak i sprzętowe. Z drugiej strony, rozwiązania sprzętowe dla problemu sekcji krytycznej są niezwykle trudne do wykonania. Przyjrzyjmy się i porównajmy Mutex i Semaphore, dwa rozwiązania aplikacyjne do rozwiązywania problemów z sekcjami krytycznymi.

Mutex kontra Semafor

Różnica między muteksem a semaforem polega na tym, że semafor jest procesem sygnalizacyjnym, co oznacza, że ​​procesy używają wait() i signal() do oznaczenia, czy uzyskują lub zamierzają zwolnić zasób, podczas gdy muteks jest metodą blokowaną, co oznacza, że ​​jeśli operacja chce uzyskać zasób, musi najpierw uzyskać blokadę obiektu mutex.

Mutex oznacza obiekt wzajemnego wykluczenia. Jest to rodzaj semafora binarnego, który służy do ograniczania dostępu do współdzielonego zasobu. Aby zapobiec przedłużającym się problemom związanym z odwróceniem priorytetów, zawiera mechanizm dziedziczenia priorytetów. Umożliwia blokowanie istniejących zadań o wyższym priorytecie przez możliwie najkrótszy czas. Z drugiej strony dziedziczenie priorytetów nie naprawia odwrócenia priorytetów; raczej zmniejsza jego wpływ.

Semafor to nieujemna zmienna utrzymywana między wątkami. Semafor jest mechanizmem sygnalizacyjnym, a inny wątek może sygnalizować wątek oczekujący na semafor. Do synchronizacji procesów wykorzystuje dwie atomowe procedury: () czekaj i () sygnał. W zależności od konfiguracji semafor włącza lub uniemożliwia dostęp do zasobu.

Tabela porównawcza między Mutex i Semaphore

Parametry porównania

Mutex

Semafor

Mechanizm

To system blokujący. To jakiś system sygnalizacyjny.
Zamiar

Wątek jest reprezentowany przez muteks. Procesy są reprezentowane przez semafor.
Natura

Mutex jest zwykle atomowy i pojedynczy. Semafor ma charakter atomowy, ale nie jest pojedynczy.
Typ danych

Mutex to nic innego jak oprogramowanie. Semafor to zmienna o wartości całkowitej.
Rodzaje

Mutex nie ma żadnych podtypów. Semafory liczące i binarne to dwa rodzaje semaforów.
Modyfikacja

Tylko proces, który może zażądać lub zwolnić zasób, może go zmodyfikować. Semafor można modyfikować za pomocą funkcji oczekiwania i sygnału.

Co to jest mutex?

Wzajemne wykluczenie to termin używany do opisania sytuacji Mutex to skrócona nazwa obiektu. Ze słowa wzajemne wykluczanie możemy wywnioskować, że tylko jeden program w danej chwili ma dostęp do określonego zasobu. Obiekt mutex umożliwia wielu wątkom aplikacji dostęp do tego samego zasobu w tym samym czasie, tylko jeden na raz.

Za każdym razem, gdy program pyta system o zasób, system tworzy obiekt mutex z unikalną tożsamością lub identyfikatorem. W rezultacie za każdym razem, gdy program chce wykorzystać ten zasób, blokuje obiekt. Następnie program używa zasobu przed ostatecznym zwolnieniem obiektu mutex. Obiekt mutex może być następnie utworzony i używany przez inne programy w ten sam sposób.

Blokując obiekt, ten konkretny zasób jest przypisywany do tego konkretnego procesu i żaden inny proces nie może go używać. W rezultacie żadne inne programy nie mogą korzystać z zasobów systemowych w kluczowym obszarze. W ten sposób do synchronizacji procesów można użyć obiektu mutex.

Muteks pozwala na wzajemne wykluczenie; zarówno jako producent, jak i konsument może mieć klucz (mutex) i kontynuować pracę. Konsument musi czekać, aż bufor producenta się zapełni i odwrotnie.

Co to jest semafor?

Semafor jest zmienną całkowitą S, która jest używana do synchronizacji procesów i jest inicjowana liczbą zasobów w systemie. Aby zmodyfikować wartość S, wykorzystuje dwie główne funkcje: wait() i signal (). Obie te funkcje służą do zmiany wartości semafora, ale umożliwiają to tylko jednemu programowi na raz, dlatego żadne dwie metody nie mogą jednocześnie zmienić wartości semafora. Liczenie semaforów i binarnych semaforów to dwa rodzaje semaforów.

Zmienna semafor jest najpierw inicjowana liczbą dostępnych zasobów podczas liczenia semaforów. Metoda wait() jest następnie wykonywana za każdym razem, gdy proces wymaga zasobu, a wartość zmiennej semafora jest zmniejszana o jeden. Następnie proces wykorzystuje zasób, po czym wywołuje metodę signal(), która zwiększa wartość zmiennej semafora o jeden. Za każdym razem, gdy wartość zmiennej semafora osiągnie 0, to znaczy, gdy program zużył wszystkie zasoby i żadne nie pozostały do ​​wykorzystania, wtedy, jeśli inny proces będzie musiał użyć zasobów, będzie musiał poczekać na swój czas. W ten sposób ustalamy synchronizację procesów.

W binarnych semaforach wartość zmiennej semafora wynosi 0 lub 1. Gdy proces chce wykorzystać zasób, wywoływana jest metoda wait(), a wartość semafora jest dostosowywana do 0 z 1. Następnie proces wykonuje użycie zasobu, a po jego wykonaniu wywoływana jest metoda signal(), a wartość zmiennej semafora jest ustawiana na 1. Jeśli wartość zmiennej semafora wynosi 0 w danym momencie, a inny program chce aby uzyskać dostęp do tego samego zasobu, musi poczekać, aż poprzedni program zwolni zasoby. W ten sposób można przeprowadzić synchronizację procesów. Jest porównywalny z muteksem, ale niczego nie blokuje.

Główne różnice między muteksem a semaforem

Wniosek

Jeśli dostępnych jest kilka wystąpień zasobu, Semaphore jest lepszą alternatywą. Mutex jest preferowanym wyborem, gdy istnieje tylko jeden wspólny zasób. Semafor umożliwia wielu wątkom dostęp do kluczowego regionu. Maszyny nie wpływają na semafory. Semafory są obsługiwane w niezależnym od maszyny kodzie mikrojądra. Nigdy nie marnujesz czasu ani zasobów, ponieważ zawsze jest zajęty oczekiwanie w semaforze. Pozwalają również na elastyczność zarządzania zasobami, podczas gdy Muteksy to nic innego jak proste blokady, które należy uzyskać przed osiągnięciem istotnego obszaru, a następnie zwolnić, ale w Mutex standardowa metoda może skutkować zajętym stanem oczekiwania, marnując czas procesora. Ponadto nie można go zablokować ani odblokować z kontekstu innego niż ten, w którym został nabyty.

Bibliografia

Różnica między muteksem a semaforem (z tabelą)