Semafor vs. Mutex

Úvod

proces operačního systému (OS) interaguje s jinými procesy běžícími ve stejném systému, aby dokončil společný úkol. Procesy, které interagují s jinými procesy, jsou známé jako kooperativní procesy.

na základě strategií Inter-Process Communication (IPC) implementovaných procesem může buď sdílet svůj adresový prostor s jinými procesy, nebo komunikovat prostřednictvím výměny zpráv. V první technice je důležité řídit komunikaci, protože oba procesy sdílejí společný adresní prostor.

toto řízení procesní komunikace je známé jako synchronizace. Bez správné synchronizace mohou procesy číst zastaralá data nebo přepisovat další procesní data.

Semafor a mutex jsou dva mechanismy, pomocí kterých můžeme implementovat synchronizaci a řídit koordinaci procesů. V tomto článku se podíváme na tyto dva synchronizační nástroje a porovnáme různé vlastnosti.

pochopení kritické sekce

než budeme diskutovat o semaforu a mutexu, pochopme problém kritické sekce.

předpokládejme, že máme systém, který obsahuje n procesy. Každý z těchto procesů má segment kódu, ve kterém může proces provést společnou aktualizaci proměnné, aktualizaci tabulky nebo zapsat do souboru. Tento segment kódu je označován jako kritická část procesu.

2.1. Charakteristika problému s kritickým úsekem

podstatnou charakteristikou kritické sekce je, že jakmile proces začne provádět kritický úsek, žádný jiný proces nesmí provádět kritický úsek. To znamená, že žádné dva procesy nemohou provádět svou kritickou část současně. Tento kritický problém sekce je navrhnout protokol, aby procesy mohly využívat spolupráci.

každý proces musí získat povolení ke vstupu do jeho kritické sekce. Část kódu, která implementuje oprávnění, se nazývá vstupní část. Podobně je část kódu, která implementuje výstup kritické sekce, známá jako výstupní sekce.

2.2. Kritéria problému s kritickým úsekem

řešení problému s kritickým úsekem musí splňovat následující kritéria:

  • vzájemné vyloučení: pokud proces provádí kritickou sekci, pak žádný jiný proces nemůže provést kritickou sekci
  • pokrok: pokud žádný proces neprovádí kritickou sekci, pak se ostatní procesy mohou rozhodnout provést kritickou sekci. Na základě řešení a implementace je vybrán proces, který může provést jeho kritickou část. Pozoruhodné vlastnosti jsou, že procesy mají schopnost přistoupit k výběrovému procesu, aby provedly kritickou sekci
  • ohraničené čekání: mělo by existovat omezené čekání na proces, když požádal o vstup do kritické sekce, a kolikrát jiný proces provede kritickou sekci

Mutexové zámky

existuje několik nástrojů pro řešení problému kritické sekce v operačním systému. Vzájemné vyloučení (mutex) zámky nebo mutex je nejjednodušší řešení. Zámky mutex používáme k ochraně kritického úseku a zabránění závodním podmínkám. Proces musí získat zámek před tím, než přistupuje ke své kritické části, a uvolní zámek, jakmile dokončí provedení kritické části.

3.1. Jak funguje zámek Mutex?

tyto dvě funkce pro získání a uvolnění zámků jsou reprezentovány dvěma funkcemi – acquire() a release (). Funkce získat získá zámek a uvolnění uvolní zámek. Zámek mutex má booleovskou proměnnou, která rozhoduje, zda je zámek k dispozici nebo ne. Pokud je zámek k dispozici, metoda acquire() uspěje a zámek se považuje za nedostupný. Jakýkoli proces, který se pokusí získat přístup k nedostupnému zámku, je blokován, dokud není zámek uvolněn.

následující pseudokód ukazuje metodu acquire ():

 vykreslen QuickLaTeX.com

následující pseudokód ukazuje metodu release ():

 vykreslen QuickLaTeX.com

3.2. Nevýhody Mutexů

hlavní nevýhodou zámku mutex je to, že umožňuje spinlock vlákna, pokud zámek není k dispozici.

zatímco jedno vlákno získalo zámek a je v jeho kritické části, všechna ostatní vlákna, která se pokoušejí získat zámek, jsou ve smyčce, kde vlákno pravidelně kontroluje, zda je zámek k dispozici. Proto se točí pro zámek a plýtvá cykly CPU, které by mohly být použity některými jinými vlákny produktivně.

Toto je hlavní problém v jednom CPU stroji. Spinlock je také známý jako busy waiting, protože vlákno je“ zaneprázdněno “ čekáním na zámek.

3.3. Výhody Mutexů

ačkoli mutexové zámky trpí problematikou spinlocku, mají výhodu. Jako proces spinlocks v CPU, eliminuje potřebu přepínače kontextu procesu, který by jinak vyžadoval.

kontextový přepínač procesu je časově náročná operace, protože vyžaduje uložení statistik vykonávajících proces v bloku řízení procesu (PCB) a opětovné načtení dalšího procesu do CPU. Existují Víceprocesorové procesory, kde se jeden proces může otáčet v jednom jádru procesoru a druhý může provádět svou kritickou část. Spinlock krátkého trvání je tedy v některých scénářích užitečnější než přepínač kontextu procesu.

Semafor

semafor je další nástroj, který také poskytuje synchronizační funkce podobné zámkům mutexu, ale je robustnější a sofistikovanější.

semafor je celočíselná proměnná, která je kromě inicializace přístupná dvěma standardními atomovými operacemi – wait () a signal (). Operace wait() se nazývá P a operace signal() se nazývá v.

podívejme se na operaci wait() :

vykreslen QuickLaTeX.com

nakonec se podívejme na operaci signal() :

vykreslen QuickLaTeX.com

!

všechny operace na celočíselnou hodnotu semaforu v čekání() a signálu() provedené atomicky. To znamená, že jakmile jeden proces upraví hodnotu semaforu, žádný jiný proces nemůže současně upravit stejnou hodnotu semaforu.

na základě hodnoty semaforu S je rozdělen do dvou kategorií-počítání semaforu a binárního semaforu. Hodnota semaforu počítání se může pohybovat od 0 do konečné hodnoty. Zatímco hodnota binárního semaforu může být mezi 0 a 1.

4.1. Počítání semaforů

počítání semaforů může řídit N počet instancí daného zdroje. Vysvětlíme semafor počítání analogií.

předpokládejme, že existuje knihovna se třemi studovnami a existuje knihovník, který drží deset klíčů, každý z nich pro jinou místnost. Jakmile čtenář vyžaduje přístup do místnosti, musí získat klíč k použití místnosti. Jakmile je čtenář hotový s jejich použitím, vrátí klíč od pokoje knihovníkovi. Jakmile jsou všechny pokoje v provozu, nový čtenář musí počkat, až bude místnost uvolněna stávajícím čtenářem.

ve výše uvedeném příkladu je zdrojem místnost a existuje deset instancí. Tyto instance jsou spravovány pomocí semaforu počítání, který je inicializován pomocí deseti. Tato hodnota semaforu je řízena metodami wait() a signal (). Následující diagram to ilustruje:

4.2. Binární semafory

binární semafor má dvě možné hodnoty, 0 a 1. Pokud je zdroj spravovaný semaforem k dispozici, pak je hodnota semaforu 1. V opačném případě je nastavena na hodnotu 0, což znamená, že zdroj není k dispozici.

binární semafor má stejnou funkci jako zámek mutex. Systémy, které nepodporují zámky mutex, mohou využít binární semafory k dosažení stejné funkce.

následující diagram ilustruje binární semafor:

Semafor vs. Mutex

následující tabulka shrnuje důležité vlastnosti semaforových a mutexových zámků:

vykreslen QuickLaTeX.com

závěr

v tomto článku jsme diskutovali o různých aspektech mutexů a semaforů.

Nejprve jsme diskutovali o kritické sekci a potřebě mutexu nebo semaforu pro kontrolu provádění kritické sekce. Pak jsme mluvili o mutexu a semaforu.

nakonec jsme poskytli srovnání semaforu a mutexu.

pokud máte několik let zkušeností v oblasti informatiky nebo výzkumu a máte zájem sdílet tyto zkušenosti s komunitou, podívejte se na naše pokyny pro příspěvky.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.