Mis on Semaphore? Loendamine, binaarsed tüübid koos näitega

Mis on Semaphore?

Semaphore on lihtsalt muutuja, mis ei ole negatiivne ja jagatud lõimede vahel. Semafor on signalisatsioonimehhanism ja semaforil ootavast niidist saab märku anda teine ​​niit. See kasutab kahte aatomioperatsiooni: 1) oodake ja 2) Signal protsessi sünkroonimiseks.

Semafor kas lubab või keelab juurdepääsu ressursile, mis sõltub sellest, kuidas see on seadistatud.

Iseloomulik Semaphore

Siin on semaforile iseloomulikud omadused:

  • See on mehhanism, mida saab kasutada ülesannete sünkroonimiseks.
  • See on madala taseme sünkroonimismehhanism.
  • Semaphore sisaldab alati mittenegatiivset täisarvu.
  • Semaphore saab realiseerida testoperatsioonide ja katkestuste abil, mida tuleks käivitada failideskriptorite abil.

Tüübid Semaphores

Kaks levinumat semafori tüüpi on

  • Semaforide loendamine
  • Binaarsed semaforid.

Loendamine Semaphores

Seda tüüpi Semaphore kasutab loendust, mis aitab ülesannet mitu korda omandada või vabastada. Kui esialgne arv = 0, tuleks loendussemafor luua kättesaamatus olekus.

Loendamine Semaphores
Loendamine Semaphores

Kui aga arv on > 0, luuakse semafor saadaolevas olekus ja sellel olevate märkide arv võrdub selle arvuga.

Binaarne Semaphores

Binaarsed semaforid on üsna sarnased semaforide loendamisega, kuid nende väärtus on piiratud 0 ja 1-ga. Seda tüüpi semaforides toimib ooteoperatsioon ainult siis, kui semafor = 1 ja signaali toiming õnnestub, kui semafor = 0. Seda on lihtne rakendada kui semaforide loendamine.

Binaarne Semaphores

Binaarne Semaphores

Näide Semaphore

Allpool toodud programm on samm-sammult rakendamine, mis hõlmab semafori kasutamist ja deklareerimist.

Shared var mutex: semaphore = 1;
Process i
    begin
    .
    .
    P(mutex);
    execute CS;
    V(mutex);
    .
    .
    End;

Oota ja Signal Operasisse Semaphores

Mõlemat toimingut kasutatakse rakendamiseks protsesside sünkroonimine. Selle semafori operatsiooni eesmärk on saavutada vastastikune välistamine.

Ootama Operamine

Seda tüüpi semaforoperatsioon aitab teil kontrollida ülesande sisestamist kriitilisse sektsiooni. Kui aga ootamise väärtus on positiivne, siis ooteargumendi X väärtust vähendatakse. Negatiivse või nullväärtuse korral toimingut ei teostata. Seda nimetatakse ka P(S)-operatsiooniks.

Pärast semafori väärtuse vähendamist, mis muutub negatiivseks, hoitakse käsku all, kuni nõutud tingimused on täidetud.

Copy CodeP(S)
{ 
    while (S<=0);
    S--;
}

Signal töö

Seda tüüpi Semaphore toimingut kasutatakse ülesande väljumise juhtimiseks kriitilisest jaotisest. See aitab suurendada argumendi väärtust 1 võrra, mida tähistatakse kui V(S).

Copy CodeP(S)
{ 
    while (S>=0);
    S++;
}

Loendamine Semaphore vs binaarne Semaphore

Siin on mõned peamised erinevused loendamise ja binaarse semafori vahel:

Loendamine Semaphore Binaarne Semaphore
Ei mingit vastastikust välistamist Vastastikune välistamine
Mis tahes täisarv Väärtus ainult 0 ja 1
Rohkem kui üks pesa Ainult üks pesa
Esitage protsesside komplekt Sellel on vastastikune välistamismehhanism.

Erinevus Semaphore vs. Mutex

parameetrid Semaphore mutexid
Mehhanism See on teatud tüüpi signaalimismehhanism. See on lukustusmehhanism.
Andmetüüp Semaphore on täisarvuline muutuja. Mutex on lihtsalt objekt.
Muudatus Ootamise ja signaali toimingud võivad semafori muuta. Seda muudab ainult protsess, mis võib ressurssi taotleda või vabastada.
Ressursside juhtimine Kui ükski ressurss pole vaba, nõuab protsess ressurssi, mis peaks käivitama ootetoimingu. See peaks ootama, kuni semaforide arv on suurem kui 0. Kui see on lukus, peab protsess ootama. Protsessi tuleks hoida järjekorras. Sellele on vaja juurde pääseda ainult siis, kui mutex on lukustamata.
Keere Teil võib olla mitu programmilõimi. Mutexis võib olla mitu programmilõimi, kuid mitte korraga.
Omandiõigus Väärtust saab muuta mis tahes ressursi vabastamise või hankimise protsessiga. Objekti lukustus vabastatakse ainult protsessi abil, mis on selle luku saanud.
Liigid Tüübid Semaphore loevad semafori ja kahendsemafori ning Mutexil pole alatüüpe.
Operamine Semaphore väärtust muudetakse ootamise () ja signaali () abil. Mutexi objekt on lukustatud või lukustamata.
Ressursid hõivatus See on hõivatud, kui kõik ressursid on kasutusel ja ressurssi taotlev protsess sooritab ootetoimingu () ja blokeerib end, kuni semaforide arv muutub >1. Juhul, kui objekt on juba lukustatud, ootab ressursse taotlev protsess ja süsteem seab selle järjekorda enne luku vabastamist.

Eelised Semaphores

Siin on kasutamise plussid/kasud Semaphore:

  • See võimaldab rohkem kui ühe lõime juurdepääsu kriitilisele jaotisele
  • Semaphores on masinast sõltumatud.
  • Semaphores on realiseeritud mikrokerneli masinast sõltumatus koodis.
  • Need ei luba mitmel protsessil kriitilisse sektsiooni siseneda.
  • Kuna semaforis on kiire ootamine, ei raisata kunagi protsessi aega ja ressursse.
  • Need on masinast sõltumatud, mida tuleks käivitada mikrokerneli masinast sõltumatus koodis.
  • Need võimaldavad ressursse paindlikult hallata.

Semaforide puudus

Siin on semafori miinused / puudused

  • Semafori üks suurimaid piiranguid on prioriteedi inversioon.
  • Operatsioonisüsteem peab jälgima kõiki ootekõnesid ja semafori signaali.
  • Nende kasutamist ei jõustata kunagi, vaid see on ainult kokkuleppeline.
  • Semaforis ummikseisu vältimiseks tuleb Oodata ja Signal toimingud tuleb sooritada õiges järjekorras.
  • Semaphore programmeerimine on keeruline, seega on tõenäoline, et vastastikust välistamist ei saavutata.
  • Samuti ei ole see praktiline meetod suuremahuliseks kasutamiseks, kuna nende kasutamine viib modulaarsuse kadumiseni.
  • Semaphore on rohkem altid programmeerija vigadele.
  • See võib põhjustada ummikseis või vastastikuse välistamise rikkumine programmeerija vea tõttu.

kokkuvõte

  • Semaphore on defineeritud kui muutuja, mis ei ole negatiivne ja jagatud lõimede vahel.
  • See on mehhanism, mida saab kasutada ülesannete sünkroonimiseks.
  • Semafori loendamine kasutab loendust, mis aitab ülesandeid mitu korda omandada või vabastada.
  • Binaarsed semaforid on üsna sarnased semaforide loendamisega, kuid nende väärtus on piiratud 0 ja 1-ga.
  • Ooteoperatsioon aitab teil kontrollida ülesande sisestamist kriitilisse sektsiooni
  • Signal semaforoperatsiooni kasutatakse ülesande väljumise juhtimiseks kriitilisest sektsioonist
  • Loendamine Semaphore puudub vastastikune välistamine, samas kui binaarne Semaphore on vastastikune välistamine
  • Semaphore tähendab signaalimismehhanismi, samas kui Mutex on lukustusmehhanism
  • Semaphore võimaldab rohkem kui ühe lõime juurdepääsu kriitilisele jaotisele
  • Semafori üks suurimaid piiranguid on prioriteedi inversioon.