Doporučená, 2024

Redakce Choice

Rozdíl mezi semaforem a mutexem

Procesní synchronizace hraje důležitou roli při zachování konzistence sdílených dat. Řešení softwarového i hardwarového řešení jsou k dispozici pro zpracování kritického problému v sekci. Ale hardwarová řešení pro kritický problém sekce je poměrně obtížné implementovat. V dnešním článku se budeme zabývat dvěma softwarovými řešeními pro zvládnutí kritického problému sekce, tj. Semaforu a Mutexu.

Základním rozdílem mezi semaforem a mutexem je, že semafor je signalizační mechanismus, tj. Procesy provádějí operaci wait () a signal (), aby indikovaly, zda získávají nebo uvolňují zdroj, zatímco Mutex je blokovací mechanismus, proces musí získat zámek objekt mutex, pokud chce získat zdroj. Mezi semaforem a mutexem existuje několik dalších rozdílů, diskutujme je pomocí srovnávací tabulky uvedené níže.

Srovnávací graf

Základ pro porovnáníSemaforMutex
ZákladníSemafor je signalizační mechanismus.Mutex je uzamykací mechanismus.
ExistenceSemafor je celočíselná proměnná.Mutex je objekt.
FunkceSemafor umožňuje více podprocesům programu přistupovat ke konečné instanci zdrojů.Mutex umožňuje více programovým vláknům přístup k jednomu zdroji, ale ne současně.
VlastnictvíHodnota semaforu může být změněna jakýmkoliv procesem získáváním nebo uvolňováním zdroje.Zámek objektu Mutex je uvolněn pouze procesem, který na něm získal zámek.
KategorizovatSemafor může být rozdělen do semaforu a binárního semaforu.Mutex není dále kategorizován.
ÚkonHodnota semaforu je upravena pomocí operace wait () a signal ().Objekt Mutex je uzamčen nebo odemčen procesem, který požaduje nebo uvolňuje zdroj.
Zdroje obsazenéPokud se používají všechny prostředky, proces vyžadující zdroj provede operaci wait () a zablokuje se, dokud se počet semaforů nezvýší nad jednu.Pokud je objekt mutex již uzamčen, proces vyžadující zdroje čeká a je zařazen do systému, dokud není uvolněn zámek.

Definice semaforu

Semafor je nástroj pro synchronizaci procesů. Semafor je typicky celočíselná proměnná S, která je inicializována na počet zdrojů přítomných v systému a hodnota semaforu může být kromě inicializace modifikována pouze dvěma funkcemi wait () a signálem () .

Operace wait () a signal () mění hodnotu semaforu nedělitelně . To znamená, že když proces mění hodnotu semaforu, žádný jiný proces nemůže současně měnit hodnotu semaforu. Semafor rozlišuje operační systém ve dvou kategoriích Počítání semaforů a Binární semafor .

V počítání semaforu je hodnota semaforu S inicializována na počet zdrojů, které jsou v systému přítomny. Kdykoliv chce proces přistupovat k prostředku, provede operaci wait () na semaforu a sníží hodnotu semaforu o jeden. Když uvolní prostředek, provede operaci signal () na semaforu a zvýší hodnotu semaforu o jeden. Když počet semaforů klesne na 0, znamená to, že procesy jsou obsazeny všemi prostředky. Pokud proces potřebuje použít prostředek, když počet semaforů je 0, provede počkání () a zablokuje se, dokud se hodnota semaforu nestane větší než 0.

V binárním semaforu se hodnota semaforu pohybuje mezi 0 a 1 . To je podobné mutex zámku, ale mutex je blokovací mechanismus, zatímco semafor je signalizační mechanismus. V binárním semaforu, pokud proces chce přistupovat k prostředku, provede operaci wait () na semaforu a sníží hodnotu semaforu z 1 na 0. Když uvolní prostředek, provede operaci signal () na semaforu a přírůstky. jeho hodnota na 1. Pokud hodnota semaforu je 0 a proces chce přistupovat k prostředku, provede operaci wait () a zablokuje se až do současného procesu využívajícího zdroje uvolní zdroj.

Definice mutexu

Objekt vzájemného vyloučení se krátce nazývá Mutex. Z hlediska vzájemného vyloučení můžeme pochopit, že k danému zdroji může přistupovat pouze jeden proces. Objekt mutex umožňuje, aby více podprocesů programu používalo stejný prostředek, ale jeden současně.

Když program spustí, požádá systém, aby vytvořil objekt mutex pro daný prostředek. Systém vytvoří objekt mutex s jedinečným názvem nebo ID. Kdykoliv chce vlákno programu použít prostředek, který zabírá na objektu mutex, využívá prostředek a po použití uvolní zámek na objektu mutex. Pak je příští proces povolen k získání zámku na objektu mutex.

Mezitím proces získal zámek na objektu mutex, žádný jiný podproces / proces nemůže přistupovat k tomuto zdroji. Pokud je objekt mutex již uzamčen, proces, který si přeje získat zámek na objektu mutex, musí počkat a systém je zařazen do fronty až do odemčení objektu mutex.

Klíčové rozdíly mezi semaforem a mutexem

  1. Semafor je signalizační mechanismus, protože operace wait () a signal () prováděná na proměnné semaforu indikuje, zda proces získává zdroj nebo uvolňuje zdroj. Na druhou stranu, mutex je uzamykací mechanismus, protože pro získání zdroje musí proces uzamknout objekt mutexu a zároveň uvolnit zdrojový proces musí odemknout objekt mutex.
  2. Semafor je typicky celočíselná proměnná, zatímco mutex je objekt .
  3. Semafor umožňuje více podprocesů programu přistupovat ke konečné instanci zdrojů . Na druhou stranu, Mutex umožňuje více podprocesů programu přistupovat k jednomu sdílenému prostředku, ale po jednom.
  4. Proměnná hodnota semaforu může být modifikována jakýmkoliv procesem, který získá nebo uvolní zdroj provedením operace wait () a signal (). Na druhou stranu, zámek získaný na objektu mutex může být uvolněn pouze procesem, který získal zámek na objektu mutex.
  5. Semafor je dvou typů, které počítají semafor a binární semafor, který je poměrně podobný mutexu.
  6. Proměnná hodnota semaforu je kromě inicializace modifikována operací wait () a signal () . Objekt mute je však uzamčen nebo odemčen procesem získávání nebo uvolňování zdroje.
  7. Pokud jsou všechny zdroje získány procesem a žádný zdroj není volný, pak proces, který chce získat prostředky, provede operaci wait () na proměnné semaforu a blokuje se až do doby, kdy počet semaforů bude větší než 0. Pokud je však objekt mutex již uzamčený pak proces, který chce získat zdroje, čeká a dostane se do fronty systémem, dokud není zdroj uvolněn a objekt mutexu se odemkne.

Závěr:

Semafor je lepší volba v případě, že je k dispozici více instancí zdrojů. V případě jednotného sdíleného zdroje je lepší volba mutex.

Top