Mutex vs Semaphore
Mutex wordt gebruikt om seriële toegang te bieden tot een deel van een re-entrant-code die niet parallel door meer dan één thread kan worden uitgevoerd. Een mutex zorgt ervoor dat slechts één code tegelijkertijd toegang heeft tot de gecontroleerde sectie. Om toegang te krijgen, worden andere codes gemaakt om te wachten tot de eerste code wordt afgesloten. Je kunt het beschouwen als een sleutel tot een kamer. De persoon die eerst toegang heeft tot die sleutel, gaat eerst. Tot de tijd dat de persoon terugkeert, kan niemand anders die kamer bereiken.
Semaphore geeft tegelijkertijd toegang tot een gedeelde bron voor een aantal gebruikers. Naarmate het aantal gebruikers dat toegang krijgt tot de bron toeneemt, neemt het aantal semaforen af. Zodra de gebruikers beginnen met het vrijgeven van de resource, begint het aantal semaforen weer te stijgen. Het wordt gebruikt door applicaties die synchronisatie vereisen. Het aantal gelijktijdige gebruikers is beperkt op basis van de semafoorlimiet. Een semafoor kan worden beschouwd als een stel soortgelijke sleutels voor soortgelijke sloten als een enkele kamer, maar deze toetsen zijn beperkt in aantal. Mensen die deze sleutels hebben, kunnen de kamer delen.
Verschillen tussen mutex en semafoor:
1. Mutex wordt gebruikt voor wederzijdse uitsluiting, terwijl semafoor in beide gevallen bruikbaar is
kennisgeving en wederzijdse uitsluitingen.
2. Mutex biedt seriële toegang tot gemeenschappelijke bronnen, terwijl semafoor er een limiet aan stelt
het aantal gelijktijdige toegangen.
3. Een mutex werkt met één thread tegelijk, terwijl semafoor meerdere threads beheert
samen.
4. Mutex heeft een concept van een eigenaar waarbij het proces dat de mutex vergrendelt, alleen kan
heropen het. Geen van de andere processen kan dit doen. Maar in het geval van semafoor, dergelijke
beperkingen bestaan niet.
5. Een mutex is een vergrendelingsmechanisme terwijl een semafoor een signaleringsmechanisme is
met betrekking tot het synchroniseren van toegang tot een hulpbron.
Samenvatting:
1. Semantisch en in theorie zijn zowel mutex als semafoor hetzelfde. Dat kan men zijn
geïmplementeerd met behulp van de andere, maar praktisch beide zijn verschillend.
2. Een mutex is niets anders dan een semafoor met een telwaarde gelijk aan één.
3. Een mutex is een semafoor met extra functies zoals eigendom en prioriteitsinversie
bescherming.
4. Een semafoor is een abstract gegevenstype dat de toegang tot een gemeenschappelijke bron bestuurt met
meerdere processen in een parallelle programmeeromgeving.
5. Semafoor vindt zijn gebruik in veel besturingssystemen als primitief voor synchronisatie.
6. Zowel mutex als semaphore zijn kernelbronnen die worden gebruikt voor het doel van
synchronisatie.