Semaphore vs. Mutex

Inleiding

een besturingssysteem (OS) proces interageert met andere processen die in hetzelfde systeem draaien om een gemeenschappelijke taak te voltooien. Processen die interageren met andere processen staan bekend als samenwerkende processen.

op basis van de INTERPROCESCOMMUNICATIESTRATEGIEËN (IPC) die door een proces worden geïmplementeerd, kan het zijn adresruimte delen met andere processen of communiceren via berichtenuitwisseling. In de eerste techniek, is het essentieel om de communicatie te controleren aangezien beide processen een gemeenschappelijke adresruimte delen.

deze besturing van procescommunicatie staat bekend als synchronisatie. Zonder de juiste synchronisatie kunnen processen verouderde gegevens lezen of andere procesgegevens overschrijven.

semafoor en mutex zijn twee mechanismen waarmee we synchronisatie kunnen implementeren en procescoördinatie kunnen beheren. In dit artikel, we zullen kijken naar deze twee synchronisatie utilities en vergelijken verschillende kenmerken.

inzicht in de kritische-sectie

voordat we semafoor en mutex bespreken, laten we het probleem van de kritische-sectie begrijpen.

laten we aannemen dat we een systeem hebben dat n processen bevat. Elk van deze processen heeft een segment van de code waarin het proces kan een gemeenschappelijke variabele update uit te voeren, een tabel update, of schrijven in een bestand. Dit segment van code wordt aangeduid als de kritische sectie van een proces.

2.1. Kenmerken van een kritisch-Sectieprobleem

het essentiële kenmerk van de kritische sectie is dat zodra een proces zijn kritische sectie begint uit te voeren, geen ander proces zijn kritische sectie mag uitvoeren. Dat wil zeggen, geen twee processen kunnen hun kritische sectie gelijktijdig uit te voeren. Dit kritieke deel probleem is om een protocol te ontwerpen zodat processen samenwerking kunnen gebruiken.

elk proces moet toestemming krijgen om zijn kritische sectie in te voeren. Het stuk code dat de toestemming implementeert staat bekend als de sectie entry. Ook het stuk code dat de uitgang van de kritieke sectie implementeert staat bekend als de exit sectie.

2.2. Criteria voor een probleem met een kritische doorsnede

de oplossing voor een probleem met een kritische doorsnede moet aan de volgende criteria voldoen::

  • wederzijdse uitsluiting: als een proces zijn kritieke sectie uitvoert, dan kan geen enkel ander proces zijn kritieke sectie
  • uitvoeren voortgang: als geen enkel proces zijn kritieke sectie uitvoert, dan kunnen andere processen besluiten om hun kritieke sectie uit te voeren. Op basis van de oplossing en de implementatie wordt een proces geselecteerd dat zijn kritische sectie kan uitvoeren. De opmerkelijke kenmerken zijn dat processen de mogelijkheid hebben om door te gaan naar een selectieproces om de kritieke sectie
  • uit te voeren Begrensd wachten: er zou een Begrensd wachten moeten zijn op een proces wanneer het om de kritieke sectie invoer sectie heeft gevraagd en het aantal keren dat een ander proces de kritieke sectie

Mutex Locks

uitvoert er zijn verschillende hulpprogramma ‘ s om het kritieke sectie probleem in een OS op te lossen. De mutex (mutex) locks of mutex is de eenvoudigste oplossing. We gebruiken de mutex sloten om de kritieke sectie te beschermen en de race omstandigheden te voorkomen. Een proces moet het slot verwerven voordat het toegang heeft tot zijn kritieke sectie, en het laat het slot los zodra het de uitvoering van de kritieke sectie heeft voltooid.

3.1. Hoe werkt een Mutex-slot?

deze twee functies voor acquire en release locks worden weergegeven door middel van twee functies – acquire() en release(). De acquire-functie verwerft het slot, en de release geeft het slot vrij. Een mutex lock heeft een Booleaanse variabele die bepaalt of het lock beschikbaar is of niet. Als het slot beschikbaar is, dan slaagt de methode acquire() en wordt het slot als niet beschikbaar beschouwd. Elk proces dat probeert toegang te krijgen tot een niet-beschikbaar slot wordt geblokkeerd totdat het slot wordt vrijgegeven.

de volgende pseudocode toont de methode acquire ():

 gerenderd door QuickLaTeX.com

de volgende pseudocode toont de methode release ():

 gerenderd door QuickLaTeX.com

3.2. Nadelen van Mutexes

het grootste nadeel van een mutex lock is dat het de thread laat spinlock als de lock niet beschikbaar is.

terwijl één thread het slot heeft verworven en zich in de kritieke sectie bevindt, bevinden alle andere threads die proberen het slot te verkrijgen zich in een lus waar de thread periodiek controleert of het slot beschikbaar is. Dus, het draait voor het slot en afval CPU cycli die kunnen zijn gebruikt door een aantal andere threads productief.

dit is een groot probleem in een enkele CPU-machine. Spinlock is ook bekend als Bezig wachten als de thread is “bezig” te wachten op het slot.

3.3. Voordelen van Mutexes

hoewel mutex-sloten lijden onder het probleem van spinlock, hebben ze toch een voordeel. Als het proces spinlocks in de CPU, het elimineert de noodzaak voor de proces context switch, die anders zou hebben vereist.

Context switch van een proces is een tijdintensieve operatie, omdat het vereist dat het uitvoeren van processtatistieken in het PROCESBESTURINGSBLOK (PCB) wordt opgeslagen en een ander proces opnieuw in de CPU wordt geladen. Er zijn multi-processor CPU ‘ s waar een proces kan draaien in een processor kern, en een ander kan hun kritische sectie uit te voeren. Dus, een spinlock van korte duur in sommige scenario ‘ s is nuttiger dan een proces context switch.

semafoor

een semafoor is een ander hulpprogramma dat ook synchronisatiefuncties biedt die vergelijkbaar zijn met mutex locks, maar dat robuuster en verfijnder is.

een semafoor is een integer variabele die, afgezien van initialisatie, wordt benaderd door middel van twee standaard atomaire operaties – wait() en signal(). De wait() operatie wordt aangeduid als P, en de signal() operatie wordt aangeduid als V.

laten we eens kijken naar de wait () operatie:

gerenderd door QuickLaTeX.com

ten slotte, laten we eens kijken naar de signal () operatie:

gerenderd door QuickLaTeX.com

!

alle bewerkingen met de gehele waarde van de semafoor in de Wait() en signal() atomisch uitgevoerd. Dat wil zeggen, zodra een proces de semafoorwaarde wijzigt, kan geen ander proces tegelijkertijd dezelfde semafoorwaarde wijzigen.

gebaseerd op de waarde van de semafoor S, wordt het ingedeeld in twee categorieën – het tellen van de semafoor en de binaire semafoor. De waarde van een tellende semafoor kan groter zijn dan 0 tot een eindige waarde. Terwijl de waarde van een binaire semafoor tussen 0 en 1 kan liggen.

4.1. Het tellen van semaforen

het tellen van semaforen kan het N aantal instanties van een bepaalde bron bepalen. Laten we de tellende semafoor uitleggen met een analogie.

laten we aannemen dat er een bibliotheek bestaat met drie studiekamers, en dat er een bibliothecaris is die Tien sleutels heeft, elk voor een andere kamer. Zodra een lezer toegang tot een kamer nodig heeft, moeten ze een sleutel te verkrijgen om de kamer te gebruiken. Zodra een lezer klaar is met zijn gebruik, geven ze de kamersleutel terug aan de bibliothecaris. Zodra alle kamers in gebruik zijn, moet een nieuwe lezer wachten tot een kamer is verlaten door een bestaande lezer.

in het bovenstaande voorbeeld, de bron is een kamer, en er zijn tien exemplaren van het. Deze instanties worden beheerd door middel van een tellende semafoor die wordt geïnitialiseerd met tien. Deze semafoorwaarde wordt gecontroleerd door de semafoor ‘ S wait() en signal() methoden. Het volgende diagram illustreert dit:

4.2. Binaire semaforen

een binaire semafoor heeft twee mogelijke waarden, 0 en 1. Als de bron die door de semafoor wordt beheerd beschikbaar is, dan is de semafoorwaarde 1. Anders is het ingesteld op 0, wat aangeeft dat de bron niet beschikbaar is.

een binaire semafoor heeft dezelfde functionaliteit als een mutex-slot. Systemen die mutex locks niet ondersteunen, kunnen binaire semaforen gebruiken om dezelfde functionaliteit te bereiken.

het volgende diagram illustreert de binaire semafoor:

Semaphore vs. Mutex

de volgende tabel geeft een overzicht van de belangrijke kenmerken van semafoor-en mutex-sloten:

gerenderd door QuickLaTeX.com

conclusie

In dit artikel hebben we verschillende aspecten van mutexen en semaforen besproken.

eerst bespraken we de kritische sectie en de noodzaak voor een mutex of semafoor om de uitvoering van kritische sectie te controleren. Toen spraken we over mutex en semafoor.

tot slot hebben we een vergelijking gemaakt tussen semaphore en mutex.

als je een paar jaar ervaring hebt in informatica of onderzoek, en je bent geïnteresseerd in het delen van die ervaring met de gemeenschap, neem dan een kijkje op onze Bijdragerichtlijnen.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.