Wat is Semaphore? Tellen, binaire typen met voorbeeld
โก Slimme samenvatting
Semaphore In een besturingssysteem is een `wait` een niet-negatieve integer-variabele die gedeeld wordt tussen threads en die de toegang tot gedeelde resources coรถrdineert via twee atomaire bewerkingen, `wait` en `signal`, waardoor raceomstandigheden tijdens processynchronisatie worden voorkomen.

Wat is Semaphore?
Semaphore is gewoon een variabele die niet-negatief is en gedeeld wordt tussen threads. Een semafoor is een signaleringsmechanisme, en een thread die wacht op een semafoor kan gesignaleerd worden door een andere thread. Het gebruikt twee atomaire bewerkingen, 1) Wait, en 2) Signal voor de processynchronisatie.
Een semafoor staat toegang tot de bron wel of niet toe, afhankelijk van hoe deze is ingesteld.
Kenmerken van Semaphore
Hieronder volgen de kenmerken van een semafoor:
- Het is een mechanisme dat gebruikt kan worden om taken te synchroniseren.
- Het is een synchronisatiemechanisme op laag niveau.
- Semaphore zal altijd een niet-negatieve gehele waarde bevatten.
- Semaphore kan worden geรฏmplementeerd met behulp van testbewerkingen en interrupts, die moeten worden uitgevoerd met behulp van bestandsdescriptoren.
Types van Semaphores
De twee meest voorkomende soorten seinpalen zijn:
- Semaforen tellen
- Binaire semaforen
Telling Semaphores
Dit soort Semaphore Gebruikt een teller die helpt bij het meerdere keren verkrijgen of vrijgeven van een taak. Als de initiรซle teller 0 is, moet de tel-semaphore in de niet-beschikbare status worden geplaatst.
Als het aantal echter > 0 is, wordt de semafoor gemaakt in de beschikbare staat en is het aantal tokens gelijk aan het aantal.
binair Semaphores
Binaire semaforen lijken sterk op telsemaforen, maar hun waarde is beperkt tot 0 en 1. Bij dit type semafoor werkt de wachtbewerking alleen als semafoor = 1, en de signaalbewerking slaagt wanneer semafoor = 0. Ze zijn eenvoudiger te implementeren dan telsemaforen.
Voorbeeld Semaphore
Het onderstaande programma is een stapsgewijze implementatie die het gebruik en de declaratie van een semaphore omvat.
Shared var mutex: semaphore = 1;
Process i
begin
.
.
P(mutex);
execute CS;
V(mutex);
.
.
End;
Wacht en Signal Operain Semaphores
Beide bewerkingen worden gebruikt om te implementeren proces synchronisatieHet doel van deze semafooroperatie is om wederzijdse uitsluiting te verkrijgen.
Wachten op Operatie
Dit type semafoorbewerking helpt u de invoer van een taak in de kritieke sectie te regelen. Als de waarde van wait echter positief is, wordt de waarde van het wait-argument X verlaagd. In het geval van een negatieve of nulwaarde wordt er geen bewerking uitgevoerd. Het wordt ook wel P(S)-bewerking genoemd.
Nadat de semafoorwaarde is verlaagd, die negatief wordt, wordt het commando uitgesteld totdat aan de vereiste voorwaarden is voldaan.
P(S)
{
while (S<=0);
S--;
}
Signal operatie
Dit soort Semaphore bewerking wordt gebruikt om de exit van een taak uit een kritieke sectie te regelen. Het helpt om de waarde van het argument met 1 te verhogen, wat wordt aangeduid als V(S).
P(S)
{
while (S>=0);
S++;
}
Telling Semaphore versus binair Semaphore
Hier zijn enkele belangrijke verschillen tussen tellen en binaire semafoor:
| Telling Semaphore | binair Semaphore |
| Geen wederzijdse uitsluiting | Wederzijdse uitsluiting |
| Elke gehele waarde | Waarde alleen 0 en 1 |
| Meer dan รฉรฉn slot | Slechts รฉรฉn slot |
| Zorg voor een reeks processen | Het heeft een mechanisme van wederzijdse uitsluiting. |
Verschil tussen Semaphore versus Mutex
De onderstaande tabel vergelijkt een semafoor met een mutex over verschillende parameters:
| Kenmerken | Semaphore | mutex |
| Mechanisme | Het is een soort signaalmechanisme. | Het is een vergrendelingsmechanisme. |
| Data type | Semaphore is een geheeltallige variabele. | Mutex is slechts een object. |
| Wijziging | De wacht- en signaalbewerkingen kunnen een semafoor wijzigen. | Het wordt alleen gewijzigd door het proces dat een hulpbron kan aanvragen of vrijgeven. |
| resource management | Als er geen resource vrij is, dan vereist het proces een resource die de wait-bewerking moet uitvoeren. Het moet wachten tot de telling van de semafoor groter is dan 0. | Als het vergrendeld is, moet het proces wachten. Het proces moet in een wachtrij worden gehouden. Dit is alleen toegankelijk als de mutex ontgrendeld is. |
| Draad | U kunt meerdere programmathreads hebben. | U kunt meerdere programmathreads in mutex hebben, maar niet tegelijkertijd. |
| Eigendom | De waarde kan worden gewijzigd door elk proces dat de hulpbron vrijgeeft of verkrijgt. | Objectvergrendeling wordt alleen vrijgegeven door het proces dat de vergrendeling ervan heeft verkregen. |
| Types | Types van Semaphore tellen semafoor en binaire semafoor. | Mutex heeft geen subtypen. |
| Werking | Semaphore waarde wordt gewijzigd met behulp van de wait() en signal() bewerking. | Mutex-object is vergrendeld of ontgrendeld. |
| Bezetting van hulpbronnen | Deze is bezet als alle bronnen worden gebruikt en het proces dat de bron aanvraagt โโde wait()-bewerking uitvoert en zichzelf blokkeert totdat het aantal semaforen >1 is. | Als het object al is vergrendeld, wacht het proces dat om bronnen vraagt, en wordt het door het systeem in de wachtrij geplaatst voordat de vergrendeling wordt opgeheven. |
Voordelen Semaphores
Hier zijn de voor- en voordelen van het gebruik Semaphore:
- Het maakt het mogelijk dat meer dan รฉรฉn thread toegang heeft tot de kritieke sectie.
- Semaphores zijn machine-onafhankelijk.
- Semaphores worden geรฏmplementeerd in de machine-onafhankelijke code van de microkernel.
- Ze staan โโniet toe dat meerdere processen de kritieke sectie binnendringen.
- Omdat er druk wordt gewacht op de seinpaal, is er nooit sprake van verspilling van procestijd en middelen.
- Ze zijn machine-onafhankelijk, wat moet worden uitgevoerd in de machine-onafhankelijke code van de microkernel.
- Ze maken een flexibel beheer van middelen mogelijk.
Nadelen van Semaphores
Hieronder volgen de nadelen van semaforen:
- Een van de grootste beperkingen van een semafoor is prioriteitsomkering.
- Het besturingssysteem moet ervoor zorgen dat... track van alle oproepen naar wacht- en signaalsemafoor.
- Het gebruik ervan wordt nooit afgedwongen, maar alleen volgens afspraak.
- Om patstellingen in de semafoor te voorkomen, zijn de wacht- en Signal Bewerkingen moeten in de juiste volgorde worden uitgevoerd.
- Semaphore Programmeren is ingewikkeld, dus de kans bestaat dat wederzijdse uitsluiting niet wordt bereikt.
- Het is ook geen praktische methode voor grootschalig gebruik, aangezien het gebruik ervan leidt tot verlies aan modulariteit.
- Semaphore is gevoeliger voor programmeerfouten.
- Het kan veroorzaken: impasse of schending van wederzijdse uitsluiting als gevolg van een programmeerfout.


