Mutex vs Semaphore
Mutex se používá k zajištění serializovaného přístupu k části kódu pro opětovné zadání, který nelze provést paralelně více než jedním vláknem. Mutex zajišťuje, že pouze jeden kód má přístup k řízené sekci současně. Chcete-li získat přístup, jsou vynuceny další kódy, aby počkaly na ukončení prvního kódu. Můžete to považovat za klíč do místnosti. První, kdo má přístup k tomuto klíči, je první. Dokud se osoba nevrátí zpět, nikdo jiný nemá přístup do této místnosti.
Semaphore umožňuje přístup ke sdílenému prostředku několika uživatelům současně. S rostoucím počtem uživatelů přistupujících ke zdroji se počet semaforů snižuje. Jakmile uživatelé začnou uvolňovat zdroj, počet semaforů začne opět stoupat. Používají se aplikace, které vyžadují synchronizaci. Počet souběžných uživatelů je omezen na základě limitu semaforu. Semafor lze považovat za spoustu podobných klíčů k podobným zámkům do jedné místnosti, ale počet těchto klíčů je omezený. Lidé, kteří mají tyto klíče, mohou sdílet místnost.
Rozdíly mezi mutexem a semaforem:
1. Mutex se používá pro vzájemné vyloučení, zatímco semafor najde své využití v obou případech
oznámení a vzájemné vyloučení.
2. Mutex poskytuje sériový přístup ke společným prostředkům, zatímco semafor stanoví limit
počet souběžných přístupů.
3. Mutex pracuje s jedním vláknem současně, zatímco semafor spravuje více vláken
spolu.
4. Mutex má koncept vlastníka, kde může proces, který uzamkne mutex, pouze
znovu to otevřít. Žádný z ostatních procesů tak nemůže udělat. Ale v případě semaforu takový
omezení neexistují.
5. Mutex je blokovací mechanismus, zatímco semafor je signalizační mechanismus s
respektování synchronizace přístupu ke zdroji.
Souhrn:
1. Sémanticky a teoreticky jsou mutex i semafor stejné. Jeden může být
implementovány pomocí druhé, ale prakticky obě jsou odlišné.
2. Mutex není nic jiného než semafor s hodnotou počtu rovnající se jedné.
3. Mutex je semafor s dalšími funkcemi, jako je vlastnictví a inverze priorit
ochrana.
4. Semafor je abstraktní datový typ, který řídí přístup ke společnému zdroji
více procesů v paralelním programovacím prostředí.
5. Semaphore nachází své využití v mnoha operačních systémech jako primitivní synchronizace.
6. Mutex i semafor jsou prostředky jádra, které se používají pro tento účel
synchronizace.